CSS: как расположить элементы div, пересекающие разделы

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

У меня возникли концептуальные трудности с тем, как думать о расположении карт. Карточки плавно меняют размер в зависимости от размера области просмотра, количества текста внутри них и т. д.

[![введите описание изображения][1]][1]

До сих пор я добился чего-то подобного, угадав размер карточки (около 200 пикселей) и установив верхнюю часть карточки на -200px. Это работает на моем компьютере, но на других экранах оно будет меняться, шрифты, уровень масштабирования и т. д. и т. п. У меня также есть проблема: под полями получается много пустого пространства, так как размер контейнера div рассчитывается без это смещение.

Как я могу сделать так, чтобы они всегда были идеально центрированы? Как мне убедиться, что под карточками не остается лишнего пустого пространства? Спасибо!!

<div className = "bg-tertiary text-white text-center pb-10">
  <div className = "bg-secondary pb-[100px] px-10">
    <h1 className = "uppercase font-black text-2xl tracking-wider pt-10 pb-10 italic">HEADER TEXT</h1>
  </div>

  <div className = "relative columns-4 top-[-100px] px-10">
    <MainSectionCard />
    <MainSectionCard />
    <MainSectionCard />
    <MainSectionCard />
  </div>
</div>

редактировать: Спасибо @wongjn за ответ!

Белое пространство — это круто , если оно не создает фальшпол. 😊

deEr. 25.02.2024 13:57
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
1
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Кажется, что верх и фон однотонные. Если это действительно так, вы можете использовать линейный градиент в качестве фона для карточек. Этот линейный градиент может заполнить цвета ровно наполовину:

tailwind.config = {
  theme: {
    extend: {
      colors: {
        secondary: 'darkblue',
        tertiary: 'skyblue',
      },
    },
  },
};
<script src = "https://cdn.tailwindcss.com/3.4.1"></script>

<div class = "bg-tertiary text-white text-center pb-10">
  <div class = "bg-secondary px-10">
    <h1 class = "uppercase font-black text-2xl tracking-wider pt-10 pb-10 italic">HEADER TEXT</h1>
  </div>

  <div class = "relative columns-4 px-10 bg-gradient-to-b from-secondary from-50% to-tertiary to-50%">
    <MainSectionCard class = "block h-20 bg-white">MainSectionCard</MainSectionCard>
    <MainSectionCard class = "block h-20 bg-white">MainSectionCard</MainSectionCard>
    <MainSectionCard class = "block h-20 bg-white">MainSectionCard</MainSectionCard>
    <MainSectionCard class = "block h-20 bg-white">MainSectionCard</MainSectionCard>
  </div>
</div>

Вы волшебник, спасибо! Что, если верхняя часть — это картинка? Я обновил вопрос вторым :)

Daniel 25.02.2024 14:22

Если у вас есть новый вопрос, рассмотрите возможность публикации его в новом сообщении. Сообщения с вопросами на Stack Overflow должны содержать только один вопрос.

Wongjn 25.02.2024 14:38

Что касается второго вопроса, я думаю, что лучше использовать margin с отрицанием.

HTML выглядит как удар:

<Hero />
<Cards class = "-mt-[100px]" />

вы можете заменить значение маржи на свое, а элементы перед картами не будут затронуты

Спасибо XRay. Но это означает установку статического значения, что, если из-за настроек специальных возможностей (шрифты установлены больше обычного) размер карты/изображения изменится?

Daniel 25.02.2024 15:33

хороший вопрос: если размер карты изменится, вы должны каждый раз менять значение поля, но вы можете использовать js для расчета высоты карты или вы можете использовать положение: относительное и TranslateY (-50%) для определения высоты карты. Если карта менялась нечасто, проще использовать статическое значение.

X-Ray 25.02.2024 16:35

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