Який із двох методів відповідає стандартам W3C? Чи обидва вони ведуть себе так, як очікувалося, у веб-переглядачах?
межа: немає;
межа: 0;
Який із двох методів відповідає стандартам W3C? Чи обидва вони ведуть себе так, як очікувалося, у веб-переглядачах?
межа: немає;
межа: 0;
Відповіді:
Обидва дійсні. Це твій вибір.
Я вважаю за краще, border:0
тому що це коротше; Мені це легше читати. Ви можете виявити none
більш розбірливими. Ми живемо у світі дуже спроможних післяпроцесорних процесорів CSS, тому я рекомендую вам використовувати все, що завгодно, а потім запустити його через "компресор". Тут немає жодної святої війни.
Все, що сказано, якщо ви пишете весь свій 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% переконаний, що вони однакові. Якщо у вас є каскадні стилі, то вони теоретично можуть дати різні результати, оскільки вони фактично переважають різні значення.
Наприклад. Якщо встановити "межа: жодна;" а потім пізніше мати два різних стилі, які переосмислюють ширину та стиль межі, тоді один зробить щось, а інший - ні.
У наступному прикладі як на IE, так і на firefox перші два тестових диви виходять без меж. Однак два інших відрізняються тим, що перший поділ у другому блоці є простим, а другий розділ у другому блоці має штрихову межу середньої ширини.
Тож, хоча вони обоє дійсні, можливо, вам потрібно буде стежити за своїми стилями, якщо вони роблять багато каскадних і таких, як я думаю.
<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
.
(зауважте: цю відповідь було оновлено 01.08.2014, щоб зробити її більш детальною, точнішою та додати демонстрацію в прямому ефірі )
Відповідно до специфікації 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
style. Отже, при першому погляді ці три правила виглядають рівнозначно. Однак вони поводяться по-різному в поєднанні з іншими правилами.
Коли таблиця надається за допомогою 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
), вони будуть вести себе по-різному, коли більш конкретне правило визначає лише стиль або просто ширину. Див. Для відповіді Кріса .
Хочете побачити всі ці випадки на одній сторінці? Відкрийте демо-версію !
Використання
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: 0
і 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 ширини не існує, тому не матиме стилю.
Однак якщо пізніше у вашому аркуші стилів ви маєте намір це замінити, ви, природно, спеціально звернетесь до того чи іншого. Якби я хотів 3-кратну межу, це була б прямо перемінна межа: 0 щодо ширини. Якби я хотів зараз пунктирною облямівкою, це буде прямо переважаючим кордоном: жодного щодо стилізації.
Найпростіший спосіб видалити кордон за допомогою css
border: 0;
МИ ВИКОРИСТОВУЄМО ГРАНИ 0
Згідно з моєю думкою та досвідом, я б запропонував, будь ласка, використовуйте Border: 0; Є поважна і дуже вагома причина, тому що щоразу, коли ми використовуємо кордон: жодна, я розумію, це працює, але подумайте, ми використовуємо кордон, 1px, 2px, 3px і т. Д. Я маю на увазі, що ми надаємо значення нашій межі ... px / em / rem правильно, тому нам потрібно використовувати border: 0; для видалення значення кордону, оскільки, як ми знаємо, коли ми використовуємо фон: жоден; це означає, що ми видаляємо фон деяким фоном, який не є цінністю, а чимось іншим.
Дякую