@tostershmoster

Почему margin-top зависит от ширины элемента?

codepen

Почему со значениями в классе .range-slider_vertical {}
width: 300px; 
height: 7px;

margin-top для range-slider__thumb_to работает, а с
width: 7px; 
height: 300px;

нет?

в первом случае работает и margin-top и margin-left. причём c margin-top элементы выходит далеко за пределы height: 7px, т.е на такое же расстояние как для width: 300px. во втором случае и для margin-top и для margin-left сдвигается на незначительную величину, видимо эти 7px

если убрать из строки
<div class="range-slider range-slider_vertical">
класс range-slider_vertical, то можно увидеть что в данном случае margin-top работает (хотя в коде тут на самом деле margin-left, этот пример просто для демонстрации того что элемент двигается и при margin-top: 100% и при margin-left: 100% на 300 пикселов а если поменять размеры ширины и длины местами, то в этих двух направлениях двигается только на 7px). Причем если например во втором случае сделать width: 100px, то сдвиг вниз при margin-top: 100% будет уже 100px. Почему? 100% должно равняться 300 пикселам!
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для margin размер в процентах всегда считается от ширины родительского блока.
В CSS 2.1
<percentage>
The percentage is calculated with respect to the width of the generated box's containing block. Note that this is true for 'margin-top' and 'margin-bottom' as well. If the containing block's width depends on this element, then the resulting layout is undefined in CSS 2.1.

В CSS 3
Percentages: refer to logical width of containing block
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы