Spec-Zone.ru › CSS

Логические свойства для размеров

В этом руководстве мы объясним взаимосвязи, относящиеся к потоку, между свойствами физических размеров и логическими свойствами, используемыми для задания размеров элементов на наших страницах.

При указании размера элемента модуль логический свойства и значения CSS позволяет указать размер, связанный с потоком текста (строчный и блочный), а не с физическими размерами, относящимися к физическим размерам по горизонтали и вертикали (например, слева и справа). Хотя эти взаимосвязи, связанные с потоком, могут стать стандартными для многих из нас, в дизайне вы можете использовать как физические, так и логические размеры. Возможно, вы захотите, чтобы некоторые элементы всегда относились к физическим размерам независимо от направления письма.

Сопоставления для размеров

В таблице ниже представлены сопоставления между логическими и физическими свойствами. Эти сопоставления предполагают, что вы находитесь в horizontal-tb режиме написания, таком как английский или арабский, в этом случае width будет сопоставлен с inline-size.

Если вы находитесь в вертикальном режиме написания, то inline-size будет сопоставлен с height.

Логическое свойство Физическое свойство
inline-size width
block-size height
min-inline-size min-width
min-block-size min-height
max-inline-size max-width
max-block-size max-height

Пример ширины и высоты

Логические сопоставления для width и height представляют собой inline-size, которое задаёт длину в строчном измерении, и block-size, которое задаёт длину в блочном измерении. При работе в английском языке замена width на inline-size и height на block-size даст тот же макет.

В примере ниже writing-mode установлено на horizontal-tb. Измените его на vertical-rl, и вы увидите, что первый пример — использующий width и height — сохраняет тот же размер по каждому измерению, несмотря на то, что текст стал вертикальным. Второй пример — использующий inline-size и block-size — будет следовать направлению текста, как если бы весь блок был повернут.

<div class="container">
  <div class="physical box">I have a width of 200px and a height of 100px.</div>

  <div class="logical box">
    I have an inline-size of 200px and a block-size of 100px.
  </div>
</div>
.box {
  writing-mode: horizontal-tb;
}

.physical {
  width: 200px;
  height: 100px;
}

.logical {
  inline-size: 200px;
  block-size: 100px;
}

Пример min-width и min-height

Также существуют сопоставления для min-width и min-height — это min-inline-size и min-block-size. Они работают так же, как свойства inline-size и block-size, но задают минимальный, а не фиксированный размер.

Попробуйте изменить пример ниже на vertical-rl, как и в первом примере, чтобы увидеть его эффект. В первом примере используется min-height, а во втором — min-block-size.

<div class="container">
  <div class="physical box">
    I have a width of 200px and a min-height of 5em.
  </div>

  <div class="logical box">
    I have an inline-size of 200px and a min-block-size of 5em.
  </div>
</div>
.box {
  writing-mode: horizontal-tb;
}

.physical {
  width: 200px;
  min-height: 5em;
}

.logical {
  inline-size: 200px;
  min-block-size: 5em;
}

Пример max-width и max-height

Наконец, вы можете использовать max-inline-size и max-block-size в качестве логических замен для max-width и max-height. Попробуйте поэкспериментировать с примером ниже аналогично.

<div class="container">
  <div class="physical box">I have a max-width of 200px.</div>

  <div class="logical box">I have an max-inline-size of 200px.</div>
</div>
.box {
  writing-mode: horizontal-tb;
}

.physical {
  max-width: 200px;
}

.logical {
  max-inline-size: 200px;
}

Логические ключевые слова для изменения размера

Свойство resize устанавливает возможность изменения размера элемента и имеет физические значения horizontal и vertical. Свойство resize также имеет логические ключевые слова. Используя resize: inline можно изменять размер в строчном измерении, а resize: block позволяет изменять размер в блочном измерении.

Ключевое слово both для свойства resize работает как в физическом, так и в логическом представлении. Оно устанавливает оба размера одновременно. Попробуйте поэкспериментировать с примером ниже.

<div class="container">
  <div class="physical box">
    I have a width of 200px and a height of 100px. I can be resized
    horizontally.
  </div>

  <div class="logical box">
    I have an inline-size of 200px and a block-size of 100px. I can be resized
    in the inline direction.
  </div>
</div>
.box {
  writing-mode: horizontal-tb;
  overflow: scroll;
}

.physical {
  width: 200px;
  height: 100px;
  resize: horizontal;
}

.logical {
  inline-size: 200px;
  block-size: 100px;
  resize: inline;
}

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values/Sizing

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API