Saya lebih suka border:0karena lebih pendek; Saya menemukan itu lebih mudah dibaca. Anda mungkin menemukan nonelebih banyak terbaca. Kita hidup di dunia pasca-prosesor CSS yang sangat berkemampuan, jadi saya sarankan Anda menggunakan apa pun yang Anda suka dan kemudian jalankan melalui "kompresor". Tidak ada perang suci yang layak diperjuangkan di sini.
Itu semua mengatakan, jika Anda menulis semua CSS produksi Anda dengan tangan, saya mempertahankan — terlepas dari mengomel di komentar — tidak ada salahnya menjadi sadar bandwidth. Menggunakan border:0akan menghemat jumlah bandwidth yang sangat kecil. Sendiri yang dihitung sangat sedikit tetapi jika Anda membuat setiap byte byte , Anda akan membuat situs web Anda lebih cepat.
Spesifikasi CSS2 ada di sini . Ini diperluas dalam CSS3 tetapi tidak dengan cara apa pun yang relevan dengan ini.
'border'Value:[<border-width>||<border-style>||<'border-top-color'>]| inherit
Initial: see individual properties
Applies to: all elements
Inherited:noPercentages: N/A
Media: visual
Computedvalue: see individual properties
Anda dapat menggunakan kombinasi lebar, gaya dan warna.
Di sini, 0tentukan lebar, nonegaya. Mereka memiliki hasil render yang sama: tidak ada yang ditampilkan.
"Jika kamu memiliki banyak lalu lintas, kamu akan melihat perbedaannya!" - Saya sangat meragukannya. Bahkan dengan satu juta pengunjung per jam, perbedaannya hanya 3MB. Dan itu dengan asumsi tidak ada pengunjung yang memiliki cache CSS, dan juga menganggap kompresi memberikan manfaat 0, keduanya pernyataan yang sangat tidak mungkin. Pada kenyataannya, itu mungkin perbedaan beberapa ratus KB sehari, yang pada dasarnya adalah 0 untuk situs besar. Bukannya saya pikir border:noneentah bagaimana lebih baik, tetapi menggunakan ini sebagai alasan Anda salah.
BlueRaja - Danny Pflughoeft
22
@ BlueRaja-DannyPflughoeft Itu lebih sarkasme daripada yang lain .. ... Atau hiperbola ... Atau sedikit dari keduanya. Anda benar, ini kemungkinan tidak akan pernah memiliki efek runtime pada apa pun kecuali jika Anda menggunakannya jutaan kali dan membuat semua orang di internet mengakses CSS Anda sekaligus.
Oli
6
Mungkin perlu menambahkan deskripsi bahwa pernyataan itu sarkasme-istic? :)
timofey.com
7
Hanya untuk kelengkapan saya ingin menambahkan aspek lain. Mentransfer 1MB data membutuhkan jumlah energi yang terkandung dalam briket arang biasa. Lihat ceramah TED tentang Jay Walkers ini: player.vimeo.com/video/22399003 .
Zensursula
11
Apakah saya satu-satunya di sini yang bersorak ekstra nanodetik?
@Tubuh serius ?, Anda suka ketika orang terhubung ke w3schools?
ajax333221
29
@ ajax333221 - Hati-hati di sana dengan sikap hitam dan putih terhadap w3schools (atau situs web apa pun ). Dalam hal ini deskripsi baik-baik saja, sementara saya membenci mereka secara umum, penjelasan mereka yang berkaitan dengan pertanyaan ini adalah benar dan cukup ringkas. Anda bebas untuk membenci mereka secara umum, dan saya lakukan, tetapi jangan berasumsi bahwa 0% dari konten di sana berguna, beberapa di antaranya, bahkan beberapa hal pada jawaban yahoo berguna, sampai taraf tertentu.
Nick Craver
4
Salah! Seperti dijelaskan dalam jawaban saya dan diperlihatkan dalam demo langsung , border: 0BUKAN jalan pintas untuk border-width: 0. Sebaliknya, versi pendek selalu set ketiga sifat: border-color, border-styledan border-width.
Denilson Sá Maia
3
@ DenilsonSá Saya mengatakan mereka sama efeknya dengan baris pertama dari jawaban, karena jika perbatasan memiliki lebar 0, 2 lainnya tidak masalah di sini. Sebagai tambahan, CSS 2.1 yang mengklarifikasi perilaku di sini adalah panggilan terakhir 7 bulan setelah jawaban ini, dan didorong sebagai rekomendasi selama setahun setelah itu. Jika Anda ingin memperjelas jawaban lama di sini, silakan lakukan! Pengeditan untuk pembaruan dianjurkan secara aktif.
Nick Craver
42
Seperti yang orang lain katakan keduanya valid dan akan melakukan trik. Saya tidak 100% yakin bahwa mereka identik. Jika Anda memiliki cascading gaya yang terjadi maka secara teori mereka dapat menghasilkan hasil yang berbeda karena mereka secara efektif mengesampingkan nilai yang berbeda.
Sebagai contoh. Jika Anda mengatur "perbatasan: tidak ada;" dan kemudian memiliki dua gaya berbeda yang mengesampingkan lebar perbatasan dan gaya maka satu akan melakukan sesuatu dan yang lain tidak.
Dalam contoh berikut pada IE dan firefox, dua test div pertama keluar tanpa batas. Namun kedua yang kedua berbeda dengan div pertama di blok kedua menjadi polos dan div kedua di blok kedua memiliki batas putus-putus lebar menengah.
Jadi, meskipun keduanya valid, Anda mungkin perlu mengawasi gaya Anda jika mereka melakukan banyak hal dan seperti yang saya kira.
<html><head><style>
div {border:1px solid black;margin:1em;}.zerotest div {border:0;}.nonetest div {border: none;}
div.setwidth {border-width:3px;}
div.setstyle {border-style: dashed;}</style></head><body><divclass="zerotest"><divclass="setwidth">
"Border: 0" and "border-width: 3px"
</div><divclass="setstyle">
"Border: 0" and "border-style: dashed"
</div></div><divclass="nonetest"><divclass="setwidth">
"Border: none" and "border-width: 3px"
</div><divclass="setstyle">
"Border: none" and "border-style: dashed"
</div></div></body></html>
Untuk menghapus batas datepicker di Sencha Touch 2, saya harus menggunakan border: nonebukan border: 0.
Kris Khaira
39
(catatan: jawaban ini telah diperbarui pada 2014-08-01 untuk membuatnya lebih detail, lebih akurat, dan untuk menambahkan demo langsung )
Memperluas properti shortand
Menurut spesifikasi W3C CSS2.1 ( "Nilai yang dihilangkan diatur ke nilai awal mereka" ), properti berikut ini setara:
border: hidden; border-style: hidden;
border-width: medium;
border-color:<the same as'color'property>
border: none; border-style: none;
border-width: medium;
border-color:<the same as'color'property>
border:0; border-style: none;
border-width:0;
border-color:<the same as'color'property>
Jika aturan ini adalah yang paling spesifik yang diterapkan pada batas elemen, maka batas tidak akan ditampilkan, baik karena lebar nol, atau karena hidden/ nonestyle. Jadi, pada tampilan pertama, ketiga aturan ini terlihat setara. Namun, mereka berperilaku berbeda ketika dikombinasikan dengan aturan lain.
Perbatasan dalam konteks tabel dalam model collapsing border
Ketika tabel diberikan menggunakan border-collapse: collapse, maka setiap batas yang diberikan dibagi antara beberapa elemen (batas dalam dibagi bersama sebagai sel tetangga; batas luar dibagi antara sel dan tabel itu sendiri; tetapi juga baris, grup baris, kolom dan grup kolom berbagi perbatasan) ). Spesifikasi menentukan beberapa aturan untuk resolusi konflik perbatasan :
Perbatasan dengan border-styleof hiddendidahulukan dari semua perbatasan yang saling bertentangan. [...]
Perbatasan dengan gaya nonememiliki prioritas terendah. [...]
Jika tidak ada gaya hiddendan setidaknya salah satu gaya tidak none, maka batas sempit dibuang untuk yang lebih luas. [...]
Jika gaya perbatasan hanya berbeda dalam warna, [...]
Jadi, dalam konteks tabel, border: hidden(atau border-style: hidden) akan memiliki prioritas tertinggi dan akan membuat perbatasan bersama disembunyikan, apa pun yang terjadi.
Di ujung lain dari prioritas, border: none(atau border-style: none) memiliki prioritas terendah, diikuti oleh batas lebar nol (karena itu adalah perbatasan tersempit). Ini berarti bahwa nilai dihitung dari border-style: nonedan nilai dihitung dari border-width: 0dasarnya sama.
Aturan Cascading dan warisan
Karena nonedan 0mempengaruhi properti yang berbeda ( border-styledan border-width), mereka akan berperilaku berbeda ketika aturan yang lebih spesifik hanya menentukan gaya atau hanya lebar. Lihat Chris menjawab sebagai contoh.
tidak berfungsi di beberapa versi IE. IE9 baik-baik saja tetapi dalam versi sebelumnya ini menampilkan perbatasan bahkan ketika gayanya "tidak ada". Saya mengalami ini ketika menggunakan lembar gaya cetak di mana saya tidak ingin berbatasan dengan kotak input.
Anda dapat menggunakan keduanya sesuai spesifikasi yang disediakan oleh Oli.
Saya selalu menggunakan border:0 none;.
Meskipun tidak ada salahnya menentukan mereka secara terpisah dan beberapa browser akan mengurai CSS lebih cepat jika Anda menggunakan panggilan properti warisan CSS1.
Meskipun border:0;biasanya akan default gaya perbatasan none, namun saya perhatikan beberapa browser menegakkan gaya perbatasan default mereka yang anehnya dapat ditimpa border:0;.
"beberapa browser akan mem-parsing CSS lebih cepat" → tidak ada perbedaan nyata dalam waktu penguraian CSS. Dan, sungguh, waktu parsing CSS tidak relevan dengan 99,999999999999% kasus. Waktu rendering CSS jauh lebih penting (dan juga sama sekali tidak terkait dengan pertanyaan ini).
Denilson Sá Maia
1
Beberapa browser? Apa maksudmu? Sepertinya mimpi atau semacamnya.
Nah, untuk secara tepat melihat perbedaan antara border: 0dan border: nonekita dapat membuat beberapa percobaan.
Percobaan:
Mari kita buat tiga div, yang pertama perbatasannya hanya bisa dinonaktifkan dengan mengatur lebarnya ke nol, yang kedua hanya bisa dinonaktifkan dengan mengatur gayanya menjadi tidak ada, dan yang ketiga dengan perbatasan yang hanya bisa "dinonaktifkan" dengan mengatur nya warna untuk transparan. Kemudian mari kita coba efek dari:
border: 0;
border: none;
border: transparent
gaya perbatasan: solid! penting; warna perbatasan: merah! penting; lebar-perbatasan: 2px! penting; warna perbatasan: merah! penting; lebar-perbatasan: 2px! penting; gaya perbatasan: solid! penting;
div div {border:2px solid red;margin:2px;font-family: monospace;white-space: nowrap;width:250px;}
div.border-zero div {border:0;}
div.border-none div {border: none;}
div.border-transparent div {border: transparent;}
Sementara hasilnya kemungkinan besar akan sama (tanpa batas), 0 dan tidak ada yang secara teknis menangani hal-hal yang berbeda.
0 alamat lebar perbatasan dan tidak ada alamat gaya perbatasan. Jelas batas 0 lebar tidak ada sehingga tidak memiliki gaya.
Namun, jika nanti dalam stylesheet Anda, Anda bermaksud untuk menimpanya, Anda secara alami akan membahas satu atau yang lain. Jika saya sekarang menginginkan batas 3px, itu akan menjadi batas utama langsung: 0 dalam hal lebar. Jika sekarang saya ingin perbatasan bertitik, itu akan menjadi perbatasan langsung: tidak ada dalam hal styling.
Menurut pendapat dan pengalaman saya, saya sarankan gunakan Border: 0;
Ada alasan yang valid dan sangat bagus karena setiap kali kita menggunakan perbatasan: tidak ada, saya memahaminya berfungsi tetapi berpikir tentang kita menggunakan perbatasan, 1px, 2px, 3px dll. Maksud saya kita memberikan nilai batas kita adalah ... px / em / rem kanan jadi kita perlu menggunakan border: 0; untuk menghapus nilai perbatasan karena seperti yang kita tahu ketika kita menggunakan latar belakang: tidak ada; itu berarti kita menghapus latar belakang beberapa latar belakang yang bukan nilai yang merupakan sesuatu yang lain.
Jawaban:
Keduanya valid. Itu pilihanmu.
Saya lebih suka
border:0
karena lebih pendek; Saya menemukan itu lebih mudah dibaca. Anda mungkin menemukannone
lebih banyak terbaca. Kita hidup di dunia pasca-prosesor CSS yang sangat berkemampuan, jadi saya sarankan Anda menggunakan apa pun yang Anda suka dan kemudian jalankan melalui "kompresor". Tidak ada perang suci yang layak diperjuangkan di sini.Itu semua mengatakan, jika Anda menulis semua CSS produksi Anda dengan tangan, saya mempertahankan — terlepas dari mengomel di komentar — tidak ada salahnya menjadi sadar bandwidth. Menggunakan
border:0
akan menghemat jumlah bandwidth yang sangat kecil. Sendiri yang dihitung sangat sedikit tetapi jika Anda membuat setiap byte byte , Anda akan membuat situs web Anda lebih cepat.Spesifikasi CSS2 ada di sini . Ini diperluas dalam CSS3 tetapi tidak dengan cara apa pun yang relevan dengan ini.
Anda dapat menggunakan kombinasi lebar, gaya dan warna.
Di sini,
0
tentukan lebar,none
gaya. Mereka memiliki hasil render yang sama: tidak ada yang ditampilkan.sumber
border:none
entah bagaimana lebih baik, tetapi menggunakan ini sebagai alasan Anda salah.Efeknya setara , menunjuk ke berbagai pintasan :
Dan lainnya..
Keduanya bekerja, pilih saja dan ikuti saja :)
sumber
border: 0;
valid.border: 0
BUKAN jalan pintas untukborder-width: 0
. Sebaliknya, versi pendek selalu set ketiga sifat:border-color
,border-style
danborder-width
.Seperti yang orang lain katakan keduanya valid dan akan melakukan trik. Saya tidak 100% yakin bahwa mereka identik. Jika Anda memiliki cascading gaya yang terjadi maka secara teori mereka dapat menghasilkan hasil yang berbeda karena mereka secara efektif mengesampingkan nilai yang berbeda.
Sebagai contoh. Jika Anda mengatur "perbatasan: tidak ada;" dan kemudian memiliki dua gaya berbeda yang mengesampingkan lebar perbatasan dan gaya maka satu akan melakukan sesuatu dan yang lain tidak.
Dalam contoh berikut pada IE dan firefox, dua test div pertama keluar tanpa batas. Namun kedua yang kedua berbeda dengan div pertama di blok kedua menjadi polos dan div kedua di blok kedua memiliki batas putus-putus lebar menengah.
Jadi, meskipun keduanya valid, Anda mungkin perlu mengawasi gaya Anda jika mereka melakukan banyak hal dan seperti yang saya kira.
sumber
border: none
bukanborder: 0
.(catatan: jawaban ini telah diperbarui pada 2014-08-01 untuk membuatnya lebih detail, lebih akurat, dan untuk menambahkan demo langsung )
Memperluas properti shortand
Menurut spesifikasi W3C CSS2.1 ( "Nilai yang dihilangkan diatur ke nilai awal mereka" ), properti berikut ini setara:
Jika aturan ini adalah yang paling spesifik yang diterapkan pada batas elemen, maka batas tidak akan ditampilkan, baik karena lebar nol, atau karena
hidden
/none
style. Jadi, pada tampilan pertama, ketiga aturan ini terlihat setara. Namun, mereka berperilaku berbeda ketika dikombinasikan dengan aturan lain.Perbatasan dalam konteks tabel dalam model collapsing border
Ketika tabel diberikan menggunakan
border-collapse: collapse
, maka setiap batas yang diberikan dibagi antara beberapa elemen (batas dalam dibagi bersama sebagai sel tetangga; batas luar dibagi antara sel dan tabel itu sendiri; tetapi juga baris, grup baris, kolom dan grup kolom berbagi perbatasan) ). Spesifikasi menentukan beberapa aturan untuk resolusi konflik perbatasan :Jadi, dalam konteks tabel,
border: hidden
(atauborder-style: hidden
) akan memiliki prioritas tertinggi dan akan membuat perbatasan bersama disembunyikan, apa pun yang terjadi.Di ujung lain dari prioritas,
border: none
(atauborder-style: none
) memiliki prioritas terendah, diikuti oleh batas lebar nol (karena itu adalah perbatasan tersempit). Ini berarti bahwa nilai dihitung dariborder-style: none
dan nilai dihitung dariborder-width: 0
dasarnya sama.Aturan Cascading dan warisan
Karena
none
dan0
mempengaruhi properti yang berbeda (border-style
danborder-width
), mereka akan berperilaku berbeda ketika aturan yang lebih spesifik hanya menentukan gaya atau hanya lebar. Lihat Chris menjawab sebagai contoh.Demo langsung !
Ingin melihat semua kasing ini dalam satu halaman? Buka demo langsung !
sumber
Menggunakan
tidak berfungsi di beberapa versi IE. IE9 baik-baik saja tetapi dalam versi sebelumnya ini menampilkan perbatasan bahkan ketika gayanya "tidak ada". Saya mengalami ini ketika menggunakan lembar gaya cetak di mana saya tidak ingin berbatasan dengan kotak input.
tampaknya berfungsi dengan baik di semua browser.
sumber
Anda dapat menggunakan keduanya sesuai spesifikasi yang disediakan oleh Oli.
Saya selalu menggunakan
border:0 none;
.Meskipun tidak ada salahnya menentukan mereka secara terpisah dan beberapa browser akan mengurai CSS lebih cepat jika Anda menggunakan panggilan properti warisan CSS1.
Meskipun
border:0;
biasanya akan default gaya perbatasannone
, namun saya perhatikan beberapa browser menegakkan gaya perbatasan default mereka yang anehnya dapat ditimpaborder:0;
.sumber
Saya menggunakan:
Dari 8.5.4 di CSS 2.1 :
Jadi salah satu metode Anda terlihat baik-baik saja.
sumber
Nah, untuk secara tepat melihat perbedaan antara
border: 0
danborder: none
kita dapat membuat beberapa percobaan.Percobaan:
Mari kita buat tiga div, yang pertama perbatasannya hanya bisa dinonaktifkan dengan mengatur lebarnya ke nol, yang kedua hanya bisa dinonaktifkan dengan mengatur gayanya menjadi tidak ada, dan yang ketiga dengan perbatasan yang hanya bisa "dinonaktifkan" dengan mengatur nya warna untuk transparan. Kemudian mari kita coba efek dari:
border: 0;
border: none;
border: transparent
gaya perbatasan: solid! penting; warna perbatasan: merah! penting; lebar-perbatasan: 2px! penting; warna perbatasan: merah! penting; lebar-perbatasan: 2px! penting; gaya perbatasan: solid! penting;
Tampilkan cuplikan kode
Hasil saya sama di firefox dan chrome:
border: 0;
Tampaknya mengatur lebar batas ke0
dan gaya tepi menjadinone
, tetapi tidak mengubah warna batas;border: none;
Tampaknya hanya mengubah gaya perbatasan (menjadinone
);border: transparent;
Tampaknya mengubah warnatransparent
batas menjadi dan gaya perbatasan menjadinone
;sumber
Sementara hasilnya kemungkinan besar akan sama (tanpa batas), 0 dan tidak ada yang secara teknis menangani hal-hal yang berbeda.
0 alamat lebar perbatasan dan tidak ada alamat gaya perbatasan. Jelas batas 0 lebar tidak ada sehingga tidak memiliki gaya.
Namun, jika nanti dalam stylesheet Anda, Anda bermaksud untuk menimpanya, Anda secara alami akan membahas satu atau yang lain. Jika saya sekarang menginginkan batas 3px, itu akan menjadi batas utama langsung: 0 dalam hal lebar. Jika sekarang saya ingin perbatasan bertitik, itu akan menjadi perbatasan langsung: tidak ada dalam hal styling.
sumber
Cara termudah untuk menghapus perbatasan dengan css
sumber
KITA HARUS MENGGUNAKAN BORDER 0
Menurut pendapat dan pengalaman saya, saya sarankan gunakan Border: 0; Ada alasan yang valid dan sangat bagus karena setiap kali kita menggunakan perbatasan: tidak ada, saya memahaminya berfungsi tetapi berpikir tentang kita menggunakan perbatasan, 1px, 2px, 3px dll. Maksud saya kita memberikan nilai batas kita adalah ... px / em / rem kanan jadi kita perlu menggunakan border: 0; untuk menghapus nilai perbatasan karena seperti yang kita tahu ketika kita menggunakan latar belakang: tidak ada; itu berarti kita menghapus latar belakang beberapa latar belakang yang bukan nilai yang merupakan sesuatu yang lain.
Terima kasih
sumber
Menurut saya,
border:none
berfungsi tetapi tidak berlaku standar w3cjadi lebih baik bisa kita gunakan
border:0;
sumber
border: none
.