• Зачем указывать box-sizing для всех элементов?

    fr_end
    @fr_end
    Frontend разработчик
    Потому что по умолчанию стоит модель content-box, и она убога.
    Хотя для того, чтобы например его можно было переопределить в плагинах, предпочитаю такой способ
    html {
      box-sizing: border-box;
    }
    *, *:before, *:after {
      box-sizing: inherit;
    }


    UPDATE: Решил посмотреть, как влияет применение универсального селектора на производительность.
    Взял статью frontender.info/css-performance-revisited-selector..., и оттуда код
    <script type="text/javascript">
        ;(function TimeThisMother() {
            window.onload = function(){
                setTimeout(function(){
                var t = performance.timing;
                    alert("Speed of selection is: " + (t.loadEventEnd — t.responseEnd) + " milliseconds");
                }, 0);
            };
        })();
    </script>

    Также использовал 1000 идентичных кусков данной разметки
    <div class="tagDiv wrap1">
      <div class="tagDiv layer1" data-div="layer1">
        <div class="tagDiv layer2">
          <ul class="tagUl">
            <li class="tagLi"><b class="tagB"><a href="/" class="tagA link" data-select="link">Select</a></b></li>
          </ul>
        </div>
      </div>
    </div>

    Проверял 2 способа: с пустым css файлом, и с CSS кодом
    html {
      box-sizing: border-box;
    }
    *, *:before, *:after {
      box-sizing: inherit;
    }

    Пока только на последнем хроме. Запускал страницу по 50 раз и вычислил средние значения:
    В первом случае, без css кода, это оказалось 124ms, во втором - 121ms.
    Понятно, что это статистическая погрешность, поэтому пришел к выводу, что разницы никакой нет.
    Если предложите другие варианты тестирования - буду очень рад.
    Ответ написан