Manakah dari dua metode yang sesuai dengan standar W3C? Apakah keduanya berperilaku seperti yang diharapkan di seluruh browser?
perbatasan: tidak ada;
perbatasan: 0;
Manakah dari dua metode yang sesuai dengan standar W3C? Apakah keduanya berperilaku seperti yang diharapkan di seluruh browser?
perbatasan: tidak ada;
perbatasan: 0;
Jawaban:
Keduanya valid. Itu pilihanmu.
Saya lebih suka border:0
karena lebih pendek; Saya menemukan itu lebih mudah dibaca. Anda mungkin menemukan none
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.
'border'
Value: [ <border-width> || <border-style> || <'border-top-color'> ] | inherit
Initial: see individual properties
Applies to: all elements
Inherited: no
Percentages: N/A
Media: visual
Computed value: see individual properties
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.
border:none
entah bagaimana lebih baik, tetapi menggunakan ini sebagai alasan Anda salah.
Efeknya setara , menunjuk ke berbagai pintasan :
border: 0;
//short for..
border-width: 0;
Dan lainnya..
border: none;
//short for...
border-style: none;
Keduanya bekerja, pilih saja dan ikuti saja :)
border: 0;
valid.
border: 0
BUKAN jalan pintas untuk border-width: 0
. Sebaliknya, versi pendek selalu set ketiga sifat: border-color
, border-style
dan border-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.
<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>
<div class="zerotest">
<div class="setwidth">
"Border: 0" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: 0" and "border-style: dashed"
</div>
</div>
<div class="nonetest">
<div class="setwidth">
"Border: none" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: none" and "border-style: dashed"
</div>
</div>
</body>
</html>
border: none
bukan border: 0
.
(catatan: jawaban ini telah diperbarui pada 2014-08-01 untuk membuatnya lebih detail, lebih akurat, dan untuk menambahkan demo langsung )
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
/ none
style. Jadi, pada tampilan pertama, ketiga aturan ini terlihat setara. Namun, mereka berperilaku berbeda ketika dikombinasikan dengan aturan lain.
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-style
ofhidden
didahulukan dari semua perbatasan yang saling bertentangan. [...]Perbatasan dengan gaya
none
memiliki prioritas terendah. [...]Jika tidak ada gaya
hidden
dan setidaknya salah satu gaya tidaknone
, 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: none
dan nilai dihitung dari border-width: 0
dasarnya sama.
Karena none
dan 0
mempengaruhi properti yang berbeda ( border-style
dan border-width
), mereka akan berperilaku berbeda ketika aturan yang lebih spesifik hanya menentukan gaya atau hanya lebar. Lihat Chris menjawab sebagai contoh.
Ingin melihat semua kasing ini dalam satu halaman? Buka demo langsung !
Menggunakan
border: none;
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.
border: 0;
tampaknya berfungsi dengan baik di semua browser.
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;
.
Saya menggunakan:
border: 0;
Dari 8.5.4 di CSS 2.1 :
'berbatasan'
Nilai: [<border-width> || <border-style> || <'border-top-color'>] | mewarisi
Jadi salah satu metode Anda terlihat baik-baik saja.
Nah, untuk secara tepat melihat perbedaan antara border: 0
dan border: none
kita dapat membuat beberapa 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;
Hasil saya sama di firefox dan chrome:
border: 0;
Tampaknya mengatur lebar batas ke 0
dan gaya tepi menjadi none
, tetapi tidak mengubah warna batas;
border: none;
Tampaknya hanya mengubah gaya perbatasan (menjadi none
);
border: transparent;
Tampaknya mengubah warna transparent
batas menjadi dan gaya perbatasan menjadi none
;
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.
Cara termudah untuk menghapus perbatasan dengan css
border: 0;
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