Я предпочитаю, 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:noPercentages: N/A
Media: visual
Computedvalue: see individual properties
Вы можете использовать любую комбинацию ширины, стиля и цвета.
Здесь 0задается ширина, noneстиль. У них одинаковый результат рендеринга: ничего не отображается.
«Если у вас много трафика, вы заметите разницу!» - Я очень сомневаюсь в этом. Даже при миллионе посетителей в час разница составляет всего 3 МБ. И это при условии, что ни один из этих посетителей не кэшировал CSS, а также предполагает, что сжатие дает нулевую выгоду, что очень маловероятно. В действительности, это, вероятно, разница в несколько сотен килобайт в день, что в основном равно 0 для большого сайта. Не то, чтобы я думаю, что border:noneэто как-то лучше, но использование этого как вашего рассуждения ошибочно.
BlueRaja - Дэнни Пфлюгофт,
22
@ BlueRaja-DannyPflughoeft Это был скорее сарказм, чем что-либо еще ... ... Или гипербола ... Или немного того и другого. Вы правы, это, скорее всего, никогда не повлияет на время выполнения, если вы не используете его миллионы раз, и все в Интернете одновременно получают доступ к вашему CSS.
Оли
6
Может быть, стоит добавить в описание, что это заявление было сарказмом? :)
timofey.com
7
Просто для полноты я хотел добавить еще один аспект. Передача 1 МБ данных требует количества энергии, содержащейся в обычном угольном брикете. Смотрите этот доклад TED о Джее Уокерсе : player.vimeo.com/video/22399003 .
Zensursula
11
Я единственный здесь, кто приветствует дополнительную наносекунду?
@ Dubs серьезно? Вам нравится, когда люди ссылаются на w3schools?
ajax333221
29
@ ajax333221 - Будьте осторожны с черно-белым отношением к w3schools (или любому веб-сайту). В этом случае описание в порядке, хотя я ненавижу их в целом, их объяснение, как оно относится к этому вопросу, является правильным и довольно кратким. Вы можете ненавидеть их в целом, и я это делаю, но не думайте, что 0% контента там полезны, некоторые из них, даже некоторые вещи в ответах Yahoo, в некоторой степени полезны.
Ник Крейвер
4
Неправильно! Как описано в моем ответе и продемонстрировано в живом демо , border: 0это не ярлык для border-width: 0. Вместо этого, короткая версия всегда устанавливает все три свойства: border-color, border-styleи border-width.
Денилсон Са Майя
3
@ DenilsonSá Я сказал , что они были такими же , в сущности , как и самой первой строке ответа, потому что если граница имеет ширину 0, остальные 2 не имеет. Кроме того, CSS 2.1, который прояснил поведение здесь, был последним вызовом через 7 месяцев после этого ответа и выдвинут в качестве рекомендации через год после него. Если вы хотите уточнить старые ответы здесь, пожалуйста, сделайте это! Редактирование обновлений активно поощряется.
Ник Крейвер
42
Как уже говорили другие, они действительны и сделают свое дело. Я не уверен на 100%, что они идентичны. Если у вас есть какой-то стиль каскадирования, то теоретически они могут дать разные результаты, поскольку они эффективно перекрывают разные значения.
Например. Если вы установите "border: none;" и позже у вас будет два разных стиля, которые переопределяют ширину и стиль границы, тогда один будет делать что-то, а другой - нет.
В следующем примере как для IE, так и для Firefox первые два тестовых 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><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>
Чтобы убрать границы DatePickers в Sencha Touch 2, мне пришлось использовать border: noneвместо border: 0.
Крис Хайра
39
(примечание: этот ответ был обновлен 2014-08-01, чтобы сделать его более подробным, более точным и добавить живую демонстрацию )
Расширение свойств Shorttand
Согласно спецификации 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/ nonestyle. Итак, на первый взгляд, эти три правила выглядят эквивалентно. Однако они ведут себя по-разному в сочетании с другими правилами.
Границы в контексте таблицы в модели сворачивающихся границ
Когда таблица отображается с использованием 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), они будут вести себя по-разному, когда более конкретное правило определяет только стиль или только ширину. Смотрите Крис ответ для примера.
не работает в некоторых версиях IE. IE9 хорошо, но в предыдущих версиях он отображал границу, даже если стиль «нет». Я испытал это при использовании таблицы стилей печати, где я не хотел, чтобы границы на полях ввода.
Вы можете просто использовать оба в соответствии со спецификацией, любезно предоставленной Oli.
Я всегда использую border:0 none;.
Хотя их отдельное указание не вредно, и некоторые браузеры будут быстрее анализировать CSS, если вы используете вызовы устаревших свойств CSS1.
Хотя border:0;обычно стиль границ по умолчанию установлен на none, я заметил, что некоторые браузеры применяют стиль границ по умолчанию, который может странным образом перезаписываться border:0;.
«некоторые браузеры будут анализировать CSS быстрее» → нет заметной разницы во времени разбора CSS. И действительно, время разбора CSS не относится к 99,9999999999999% случаев. Время отрисовки CSS гораздо важнее (а также совершенно не связано с этим вопросом).
Денилсон Са Майя,
1
Некоторые браузеры? Что вы имеете в виду? Похоже на сон или что-то.
Ну, чтобы точно увидеть разницу между нами border: 0и border: noneмы можем провести несколько экспериментов.
Эксперимент:
Давайте создадим три элемента div: первый, чья граница может быть отключена только путем установки его ширины на ноль, второй - отключение только путем установки его стиля на none, и третий - с рамкой, которую можно «отключить» только путем установки его цвет к прозрачному. Тогда давайте попробуем эффект:
border: 0;
border: none;
border: transparent
стиль границы: твердый! важный; цвет границы: красный! важно; border-width: 2px! важно; цвет границы: красный! важно; border-width: 2px! важно; стиль границы: твердый! важный;
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;}
Хотя результаты, скорее всего, будут одинаковыми (без границ), 0 и ни один из них технически не относятся к разным вещам.
0 адресов ширины границы и ни одного адреса границы стиля. Очевидно, что граница шириной 0 не существует, поэтому не будет иметь стиля.
Однако, если позже в вашей таблице стилей вы намерены переопределить это, вы, естественно, определенно обратились бы к одному или другому. Если бы я теперь хотел границу в 3 пикселя, это было бы непосредственно переопределением границы: 0 в отношении ширины. Если бы я теперь хотел пунктирную границу, это было бы непосредственно переопределившей границей: ничего не касалось стиля.
Согласно моему мнению и опыту, я бы предложил использовать границу: 0;
Есть веская и очень веская причина, потому что всякий раз, когда мы используем рамку: нет, я понимаю, что это работает, но подумайте о том, что мы используем рамку, 1px, 2px, 3px и т. Д. Я имею в виду, что мы даем значение, которое наша граница равна ... px / em / rem правильно, поэтому нам нужно использовать border: 0; для удаления значения границы, потому что, как мы знаем, когда мы используем background: none; это означает, что мы удаляем фон некоторый фон, который не является значением, которое является чем-то другим.
Ответы:
Оба действительны. Это твой выбор.
Я предпочитаю,
border:0
потому что это короче; Я считаю, что легче читать. Вы можете найтиnone
более разборчивым. Мы живем в мире очень мощных постпроцессоров CSS, поэтому я бы порекомендовал вам использовать то, что вы предпочитаете, а затем запустить его через «компрессор». Здесь нет священной войны, достойной борьбы.Тем не менее, если вы пишете все свои рабочие CSS, я поддерживаю - несмотря на ворчание в комментариях - не помешает быть осведомленным о пропускной способности. Использование
border:0
будет сохранять бесконечно малую величину пропускной способности. Само по себе это очень мало, но если вы сделаете каждый байт счетчиком , вы сделаете свой сайт быстрее.Спецификации CSS2 здесь . Они расширены в CSS3, но не имеют никакого отношения к этому.
Вы можете использовать любую комбинацию ширины, стиля и цвета.
Здесь
0
задается ширина,none
стиль. У них одинаковый результат рендеринга: ничего не отображается.источник
border:none
это как-то лучше, но использование этого как вашего рассуждения ошибочно.Они эквивалентны в действии , указывая на разные ярлыки :
И другие..
Обе работы, просто выберите один и идти с ним :)
источник
border: 0;
он действителен.border: 0
это не ярлык дляborder-width: 0
. Вместо этого, короткая версия всегда устанавливает все три свойства:border-color
,border-style
иborder-width
.Как уже говорили другие, они действительны и сделают свое дело. Я не уверен на 100%, что они идентичны. Если у вас есть какой-то стиль каскадирования, то теоретически они могут дать разные результаты, поскольку они эффективно перекрывают разные значения.
Например. Если вы установите "border: none;" и позже у вас будет два разных стиля, которые переопределяют ширину и стиль границы, тогда один будет делать что-то, а другой - нет.
В следующем примере как для IE, так и для Firefox первые два тестовых div-а вышли без рамки. Вторые два, тем не менее, отличаются друг от друга тем, что первый блок во втором блоке является простым, а второй блок во втором блоке имеет пунктирную границу средней ширины.
Поэтому, несмотря на то, что они оба действительны, вам может понадобиться следить за вашими стилями, если они сильно каскадируются и тому подобное, как я думаю.
источник
border: none
вместоborder: 0
.(примечание: этот ответ был обновлен 2014-08-01, чтобы сделать его более подробным, более точным и добавить живую демонстрацию )
Расширение свойств Shorttand
Согласно спецификации W3C CSS2.1 ( «Опущенные значения устанавливаются в свои начальные значения» ), следующие свойства эквивалентны:
Если эти правила являются наиболее конкретными правилами, применяемыми к границам элемента, то границы не будут отображаться, либо из-за нулевой ширины, либо из-за
hidden
/none
style. Итак, на первый взгляд, эти три правила выглядят эквивалентно. Однако они ведут себя по-разному в сочетании с другими правилами.Границы в контексте таблицы в модели сворачивающихся границ
Когда таблица отображается с использованием
border-collapse: collapse
, то каждая отображаемая граница используется совместно для нескольких элементов (внутренние границы совместно используются как соседние ячейки; внешние границы используются совместно для ячеек и самой таблицы; кроме того, строки, группы строк, столбцы и группы столбцов имеют общие границы ). Спецификация определяет некоторые правила для разрешения конфликтов на границах :Таким образом, в контексте таблицы
border: hidden
(илиborder-style: hidden
) будет иметь наивысший приоритет, и общая граница будет скрыта, несмотря ни на что.На другом конце приоритетов
border: none
(илиborder-style: none
) имеют самый низкий приоритет, за которым следует граница нулевой ширины (потому что это самая узкая граница). Это означает , что вычисленное значение изborder-style: none
и вычисленного значения поborder-width: 0
существу то же самое.Каскадные правила и наследование
Поскольку
none
и0
влияют на разные свойства (border-style
иborder-width
), они будут вести себя по-разному, когда более конкретное правило определяет только стиль или только ширину. Смотрите Крис ответ для примера.Живая демоверсия !
Хотите увидеть все эти случаи на одной странице? Откройте демо-версию !
источник
С помощью
не работает в некоторых версиях IE. IE9 хорошо, но в предыдущих версиях он отображал границу, даже если стиль «нет». Я испытал это при использовании таблицы стилей печати, где я не хотел, чтобы границы на полях ввода.
Кажется, работает нормально во всех браузерах.
источник
Вы можете просто использовать оба в соответствии со спецификацией, любезно предоставленной Oli.
Я всегда использую
border:0 none;
.Хотя их отдельное указание не вредно, и некоторые браузеры будут быстрее анализировать CSS, если вы используете вызовы устаревших свойств CSS1.
Хотя
border:0;
обычно стиль границ по умолчанию установлен наnone
, я заметил, что некоторые браузеры применяют стиль границ по умолчанию, который может странным образом перезаписыватьсяborder:0;
.источник
Я использую:
С 8.5.4 в CSS 2.1 :
Так что любой из ваших методов выглядит хорошо.
источник
Ну, чтобы точно увидеть разницу между нами
border: 0
иborder: none
мы можем провести несколько экспериментов.Эксперимент:
Давайте создадим три элемента div: первый, чья граница может быть отключена только путем установки его ширины на ноль, второй - отключение только путем установки его стиля на none, и третий - с рамкой, которую можно «отключить» только путем установки его цвет к прозрачному. Тогда давайте попробуем эффект:
border: 0;
border: none;
border: transparent
стиль границы: твердый! важный; цвет границы: красный! важно; border-width: 2px! важно; цвет границы: красный! важно; border-width: 2px! важно; стиль границы: твердый! важный;
Показать фрагмент кода
Мои результаты были одинаковыми как в Firefox, так и в Chrome:
border: 0;
Кажется, чтобы установить border-width в0
и border-stylenone
, но не изменить border-color;border: none;
Кажется, только изменить стиль границы (кnone
);border: transparent;
Кажется, чтобы изменить border-color наtransparent
и border-style наnone
;источник
Хотя результаты, скорее всего, будут одинаковыми (без границ), 0 и ни один из них технически не относятся к разным вещам.
0 адресов ширины границы и ни одного адреса границы стиля. Очевидно, что граница шириной 0 не существует, поэтому не будет иметь стиля.
Однако, если позже в вашей таблице стилей вы намерены переопределить это, вы, естественно, определенно обратились бы к одному или другому. Если бы я теперь хотел границу в 3 пикселя, это было бы непосредственно переопределением границы: 0 в отношении ширины. Если бы я теперь хотел пунктирную границу, это было бы непосредственно переопределившей границей: ничего не касалось стиля.
источник
Самый простой способ удалить границу с помощью CSS
источник
МЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ ГРАНИЦУ 0
Согласно моему мнению и опыту, я бы предложил использовать границу: 0; Есть веская и очень веская причина, потому что всякий раз, когда мы используем рамку: нет, я понимаю, что это работает, но подумайте о том, что мы используем рамку, 1px, 2px, 3px и т. Д. Я имею в виду, что мы даем значение, которое наша граница равна ... px / em / rem правильно, поэтому нам нужно использовать border: 0; для удаления значения границы, потому что, как мы знаем, когда мы используем background: none; это означает, что мы удаляем фон некоторый фон, который не является значением, которое является чем-то другим.
Спасибо
источник
По моему мнению,
border:none
работает, но не действует стандарт w3cтак лучше мы можем использовать
border:0;
источник
border: none
.