Альтернативы свойству разрыва

Я создаю простой макет с заголовком и подзаголовком. Когда эти два элемента могут отображаться на одной строке без переноса текста, они должны делать это с небольшим интервалом между ними. Во всех остальных случаях заголовок и подзаголовок должны занимать 100% ширины. В подзаголовке не должно быть margin-left.

Я создал это с помощью Flexbox и свойства gap. Он правильно отображается в Firefox:

Альтернативы свойству разрыва

Вот код:

header {
  font-family: sans-serif;
  background-color: rebeccapurple;
  color: #fff;
  padding: 0 5px;
}

.container {
  max-width: 800px;
  width: 100%;
  flex-grow: 1;
  margin-left: auto;
  margin-right: auto;
}

header .container {
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  gap: 0.5rem;
  align-items: baseline;
}
<header>
  <div class = "container">
    <h1>Long title for the page itself</h1>
    <h2>Subtitle</h2>
  </div>
</header>
<br />
<header>
  <div class = "container">
    <h1>Shorter title</h1>
    <h2>Subtitle</h2>
  </div>
</header>

К сожалению, популярные браузеры, такие как Google Chrome, не смогли реализовать поддержку gap, используемого в сочетании с макетом display: flex.

Есть ли способ реализовать это, например. display: inline-block элементы и отрицательные поля, чтобы он работал в устаревших браузерах, таких как Chrome и Internet Explorer?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
6
0
5 764
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо gap: .5rem используйте margin-right: .5rem на h1.

h1 {
  margin-right: .5rem;
}

.container {
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
}

header {
  font-family: sans-serif;
  background-color: rebeccapurple;
  color: #fff;
  padding: 0 5px;
}
<header>
  <div class = "container">
    <h1>Long title for the page itself</h1>
    <h2>Subtitle</h2>
  </div>
</header>
<br />
<header>
  <div class = "container">
    <h1>Shorter title</h1>
    <h2>Subtitle</h2>
  </div>
</header>

Это нормально, но я чувствую, что это преждевременно завершится. В идеале вы хотите, чтобы это право на отступ рухнуло в ничто, если h2 не находится на той же строке.

Adam Williams 25.06.2019 20:18

Метод margin-rightне преждевременно переносится больше, чем со свойством gap. Иными словами, в любом случае нет никакой разницы в упаковке. Проверено в Firefox. jsfiddle.net/1q3cgnmd/1 @АдамУильямс

Michael Benjamin 25.06.2019 20:27

Другие вопросы по теме