CSS: логические свойства
логические понятия и величины для управления свойствами элементов
Итак, название свойства margin-left кажется логически верным, но Мануель Рего Касасновас (Manuel Rego Casasnovas) имеет по этому поводу другое (как оказалось, объективное) мнение. Так, например, иногда появляется необходимость разместить контент не слева направо, а справа налево, при этом отступы, находящиеся физически справа, будут иметь смысловое значение левых отступов. Как результат, для некоторых элементов придется поменять местами значения margin-right и margin-left.
Со временем мы понимаем, что направление контента, используемый язык и даже особенности модели flexbox могут абсолютно изменить смысловые значения названий CSS-свойств и сделать их понимание неоправданно трудным. Именно поэтому появились логические свойства, например: margin-inline-start.
Полный список таких свойств выглядит так:
- margin-{block,inline}-{start,end}
- padding-{block,inline}-{start,end}
- border-{block,inline}-{start,end}-{width,style,color}
Эти свойства поддерживаются последними версиями популярных браузеров за исключением продуктов Microsoft.
Такой подход позволяет перейти от мысленного желания уместить любой контент в физический экран с началом координат в левом верхнем углу, к логическому осмыслению верстки, не зависящему от направления текста, языка или размеров родительского контейнера.
Ниже находится таблица сопоставления классических и логических CSS-свойств:
Margin
свойство | логическое свойство |
---|---|
margin-top | margin-block-start |
margin-left | margin-inline-start |
margin-right | margin-inline-end |
margin-bottom | margin-block-end |
Padding
свойство | логическое свойство |
---|---|
padding-top | padding-block-start |
padding-left | padding-inline-start |
padding-right | padding-inline-end |
padding-bottom | padding-block-end |
Border
свойство | логическое свойство |
---|---|
border-top | border-block-start |
border-left | border-inline-start |
border-right | border-inline-end |
border-bottom | border-block-end |
Абсолютное позиционирование
свойство | логическое свойство |
---|---|
top | inset-block-start |
left | inset-inline-start |
right | inset-inline-end |
bottom | inset-block-end |
Спасибо за внимание.