วิธีใดในสองวิธีที่เป็นไปตามมาตรฐาน W3C พวกเขาทั้งสองทำงานตามที่คาดไว้ในเบราว์เซอร์หรือไม่
เส้นขอบ: ไม่มี;
เส้นขอบ: 0;
วิธีใดในสองวิธีที่เป็นไปตามมาตรฐาน W3C พวกเขาทั้งสองทำงานตามที่คาดไว้ในเบราว์เซอร์หรือไม่
เส้นขอบ: ไม่มี;
เส้นขอบ: 0;
คำตอบ:
ทั้งสองถูกต้อง มันเป็นทางเลือกของคุณ
ฉันชอบborder:0
เพราะสั้นกว่า ฉันพบว่าอ่านง่ายกว่า คุณอาจพบว่าnone
อ่านง่ายขึ้น เราใช้ชีวิตอยู่ในโลกแห่งโพสต์โปรเซสเซอร์ที่มีความสามารถสูงดังนั้นฉันขอแนะนำให้คุณใช้สิ่งที่คุณต้องการแล้วเรียกใช้ผ่าน "คอมเพรสเซอร์" ไม่มีสงครามศักดิ์สิทธิ์ที่ควรค่าแก่การต่อสู้ที่นี่
อย่างที่ทุกคนพูดว่าถ้าคุณเขียน CSS การผลิตทั้งหมดของคุณฉันคงไว้ - ตอบเสียงบ่นในความคิดเห็น - มันไม่เจ็บที่จะคำนึงถึงแบนด์วิดท์ การใช้border:0
จะช่วยประหยัดแบนด์วิดท์ในจำนวนที่น้อยที่สุด ด้วยตัวของมันเองที่มีค่าน้อยมาก แต่ถ้าคุณนับทุก ๆ ไบต์คุณจะทำให้เว็บไซต์ของคุณเร็วขึ้น
รายละเอียด CSS2 อยู่ที่นี่ สิ่งเหล่านี้ถูกขยายใน CSS3 แต่ไม่เกี่ยวข้องกับสิ่งนี้
'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
คุณสามารถใช้การรวมกันของความกว้างสไตล์และสี
ที่นี่ 0
กำหนดความกว้างnone
สไตล์ พวกเขามีผลลัพธ์การแสดงผลเหมือนกัน: ไม่มีอะไรแสดง
border:none
ดีกว่าอย่างใด แต่การใช้สิ่งนี้เป็นเหตุผลของคุณผิดพลาด
พวกเขามีความเทียบเท่าในผล , ชี้ไปทางลัดที่แตกต่างกัน :
border: 0;
//short for..
border-width: 0;
และอื่น ๆ..
border: none;
//short for...
border-style: none;
ทั้งสองทำงานแค่เลือกหนึ่งอันแล้วก็ไปด้วย :)
border: 0;
ถูกต้อง
border: 0
border-width: 0
แทนเวอร์ชั่นสั้นเสมอชุดทั้งสามคุณสมบัติ: border-color
, และborder-style
border-width
อย่างที่คนอื่น ๆ บอกว่าทั้งคู่นั้นมีเหตุผลและจะทำการหลอกลวง ฉันไม่เชื่อ 100% ว่าพวกเขาเหมือนกัน หากคุณมีการเรียงซ้อนลักษณะบางอย่างเกิดขึ้นแล้วในทางทฤษฎีพวกเขาสามารถให้ผลลัพธ์ที่แตกต่างกันเนื่องจากพวกเขามีประสิทธิภาพเหนือค่านิยมที่แตกต่างกัน
ตัวอย่างเช่น. หากคุณตั้งค่า "border: none;" และหลังจากนั้นก็มีสไตล์ที่แตกต่างกันสองแบบที่แทนที่ความกว้างและสไตล์ของเส้นขอบจากนั้นหนึ่งรูปแบบจะทำบางสิ่งและอีกรูปแบบหนึ่งจะไม่
ในตัวอย่างต่อไปนี้ทั้ง IE และ firefox การทดสอบสองครั้งแรกออกมาโดยไม่มีเส้นขอบ อย่างไรก็ตามสองสองนั้นแตกต่างกันกับ div แรกในบล็อกที่สองเป็นแบบธรรมดาและ div ที่สองในบล็อกที่สองที่มีเส้นขอบความกว้างปานกลาง
ดังนั้นแม้ว่าทั้งคู่จะใช้ได้คุณอาจต้องจับตาดูสไตล์ของคุณหากพวกเขาลดหลั่นกันมากและอย่างที่ฉันคิด
<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
border: 0
(หมายเหตุ: คำตอบนี้ได้รับการปรับปรุงใน 2014-08-01 เพื่อให้รายละเอียดเพิ่มเติมถูกต้องมากขึ้นและเพื่อเพิ่มการสาธิตสด )
ตามข้อกำหนด W3C CSS2.1 ( “ ค่าที่ละเว้นถูกตั้งค่าเป็นค่าเริ่มต้น” ) คุณสมบัติต่อไปนี้เทียบเท่า:
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>
หากกฎเหล่านี้เป็นกฎที่เฉพาะเจาะจงที่สุดที่ใช้กับเส้นขอบขององค์ประกอบเส้นขอบนั้นจะไม่ปรากฏเนื่องจากความกว้างเป็นศูนย์หรือเนื่องจากhidden
/ none
สไตล์ ดังนั้นในการตรวจสอบครั้งแรกกฎทั้งสามนี้จะมีลักษณะเทียบเท่ากัน อย่างไรก็ตามพวกเขาทำงานในรูปแบบที่แตกต่างกันเมื่อรวมกับกฎอื่น ๆ
เมื่อตารางถูกเรนเดอร์โดยใช้border-collapse: collapse
แล้วแต่ละเส้นขอบที่เรนเดอร์จะใช้ร่วมกันระหว่างองค์ประกอบหลาย ๆ อัน (เส้นขอบด้านในจะถูกใช้ร่วมกันเป็นเซลล์เพื่อนบ้าน, เส้นขอบด้านนอกจะถูกแชร์ระหว่างเซลล์และตารางนั้นเอง ) ข้อมูลจำเพาะกำหนดกฎบางอย่างสำหรับการแก้ปัญหาความขัดแย้งชายแดน :
พรมแดนกับ
border-style
การhidden
มีความสำคัญเหนือพรมแดนที่ขัดแย้งอื่น ๆ ทั้งหมด [ ... ]เส้นขอบที่มีรูปแบบ
none
มีลำดับความสำคัญต่ำสุด [ ... ]หากไม่มีรูปแบบใด
hidden
และอย่างน้อยหนึ่งรูปแบบไม่เป็นnone
เช่นนั้นขอบที่แคบจะถูกยกเลิกเพื่อให้เหมาะกับสไตล์ที่กว้างขึ้น [ ... ]หากสไตล์เส้นขอบแตกต่างกันในสีเท่านั้น […]
ดังนั้นในบริบทของตารางborder: hidden
(หรือborder-style: hidden
) จะมีลำดับความสำคัญสูงสุดและจะทำให้การซ่อนชายแดนที่ใช้ร่วมกันไม่ว่าจะเกิดอะไรขึ้น
ในอีกด้านหนึ่งของลำดับความสำคัญborder: none
(หรือborder-style: none
) มีลำดับความสำคัญต่ำสุดตามด้วยเส้นขอบความกว้างเป็นศูนย์ (เพราะเป็นเส้นขอบแคบที่สุด) ซึ่งหมายความว่าค่าคำนวณของborder-style: none
และค่าคำนวณของborder-width: 0
เป็นหลักเดียวกัน
ตั้งแต่none
และ0
ส่งผลกระทบต่อคุณสมบัติที่แตกต่างกัน ( border-style
และborder-width
) พวกเขาจะทำงานแตกต่างกันเมื่อกฎที่เฉพาะเจาะจงมากขึ้นกำหนดเพียงแค่สไตล์หรือเพียงแค่ความกว้าง ดูคำตอบของ Chrisสำหรับตัวอย่าง
ต้องการดูกรณีเหล่านี้ทั้งหมดในหน้าเดียว? เปิดการสาธิตสด !
การใช้
border: none;
ไม่ทำงานใน IE บางเวอร์ชัน IE9 ใช้ได้ แต่ในรุ่นก่อนหน้านี้จะแสดงเส้นขอบแม้ว่าสไตล์จะเป็น "ไม่มี" ฉันพบสิ่งนี้เมื่อใช้สไตล์ชีทการพิมพ์ที่ฉันไม่ต้องการเส้นขอบบนกล่องป้อนข้อมูล
border: 0;
ดูเหมือนว่าจะทำงานได้ดีในเบราว์เซอร์ทั้งหมด
คุณสามารถใช้ทั้งสองอย่างได้ตามข้อกำหนดที่ Oli จัดหาให้
border:0 none;
ฉันมักจะใช้
แม้ว่าจะไม่มีอันตรายใด ๆ ในการระบุแยกจากกันและเบราว์เซอร์บางตัวจะแยก CSS ได้เร็วขึ้นหากคุณใช้การเรียกคุณสมบัติ CSS1 แบบเดิม
แม้ว่าborder:0;
ปกติจะเริ่มต้นสไตล์ชายแดนเพื่อnone
ผมได้สังเกตเห็น border:0;
แต่เบราว์เซอร์บางบังคับใช้สไตล์ชายแดนเริ่มต้นของพวกเขาที่สามารถเขียนทับแปลก
ฉันใช้:
border: 0;
จาก8.5.4 ใน CSS 2.1 :
'ชายแดน'
ค่า: [<border-width> || <border-style> || <'เส้นขอบสีด้านบน'>] | สืบทอด
ดังนั้นวิธีใดวิธีหนึ่งของคุณก็ดูดี
เพื่อดูความแตกต่างระหว่างborder: 0
และborder: none
เราสามารถทำการทดลองได้อย่างแม่นยำ
ให้สร้าง divs สามอันอันแรกที่ border สามารถปิดใช้งานได้โดยการตั้งค่าความกว้างเป็นศูนย์ส่วนที่สองที่สามารถปิดการใช้งานได้โดยการตั้งค่าสไตล์เป็น none และที่สามที่มีเส้นขอบที่สามารถ "ปิดใช้งาน" โดยการตั้งค่า สีโปร่งใส จากนั้นให้ลองใช้เอฟเฟกต์ของ:
border: 0;
border: none;
border: transparent
สไตล์เส้นขอบ: ทึบ! สำคัญ; เส้นขอบสี: แดง! สำคัญ; ความกว้างชายแดน: 2px! สำคัญ; เส้นขอบสี: แดง! สำคัญ; ความกว้างชายแดน: 2px! สำคัญ; สไตล์เส้นขอบ: ทึบ! สำคัญ;
ผลลัพธ์ของฉันเหมือนกันทั้งใน Firefox และโครเมี่ยม:
border: 0;
ดูเหมือนว่าการตั้งค่าความกว้าง0
ชายแดนและสไตล์ชายแดนnone
แต่ไม่เปลี่ยนสีชายแดน;
border: none;
ดูเหมือนว่าจะเปลี่ยนสไตล์เส้นขอบ (เป็นnone
) เท่านั้น
border: transparent;
ดูเหมือนว่าจะเปลี่ยนสีของtransparent
เส้นขอบเป็นและสไตล์ของเส้นขอบเป็นnone
;
ในขณะที่ผลลัพธ์ส่วนใหญ่จะเหมือนกัน (ไม่มีขอบ) แต่ 0 และไม่มีใครพูดถึงสิ่งต่าง ๆ ในทางเทคนิค
0 ที่อยู่ความกว้างชายแดนและไม่มีสไตล์ชายแดนที่อยู่ เห็นได้ชัดว่าเส้นขอบของความกว้าง 0 ไม่มีอยู่ดังนั้นจะไม่มีสไตล์
อย่างไรก็ตามหากในภายหลังในสไตล์ชีทของคุณคุณตั้งใจจะลบล้างสิ่งนี้คุณจะจัดการกับสิ่งใดสิ่งหนึ่งโดยเฉพาะ หากตอนนี้ฉันต้องการเส้นขอบ 3px นั่นจะเป็นการลบล้างเส้นขอบโดยตรง: 0 เกี่ยวกับความกว้าง ถ้าตอนนี้ฉันอยากได้เส้นประแบบจุดนั่นจะเป็นการลบล้างเส้นขอบโดยตรง: ไม่มีเรื่องที่เกี่ยวกับการจัดแต่งทรงผม
วิธีที่ง่ายที่สุดในการลบเส้นขอบด้วย css
border: 0;
เราควรใช้เส้นขอบ 0
จากความเห็นและประสบการณ์ของฉันฉันขอแนะนำให้ใช้ Border: 0; มีเหตุผลที่ถูกต้องและดีมากเพราะเมื่อใดก็ตามที่เราใช้เส้นขอบ: ไม่มีฉันเข้าใจว่ามันใช้งานได้ แต่คิดว่าเรากำลังใช้เส้นขอบ, 1px, 2px, 3px เป็นต้นฉันหมายถึงเราให้คุณค่ากับเส้นขอบของเราคือ ... px / em / rem ถูกต้องดังนั้นเราจำเป็นต้องใช้เส้นขอบ: 0; สำหรับการลบค่าเส้นขอบเพราะเรารู้ว่าเมื่อเราใช้พื้นหลัง: ไม่มี; หมายความว่าเรากำลังลบพื้นหลังบางพื้นหลังที่ไม่ใช่ค่าที่เป็นอย่างอื่น
ขอบคุณ
ในจุดของฉัน
border:none
ทำงานได้ แต่ไม่ถูกต้องมาตรฐาน w3c
ดีกว่าเราสามารถใช้ border:0;
border: none
ไม่มีอะไรที่ไม่ถูกต้องเกี่ยวกับการเป็น