Как расположить эти div друг над другом

У меня есть 3 div, которые содержат только цвет фона, и я хочу сделать что-то похожее на логотип Google Chrome.

Это всего лишь часть кода, помимо всего этого есть еще контент, но в основном это фон для страницы.

Прямо сейчас зеленый находится поверх красного, и это нормально. Но желтый находится ниже красного и зеленого, и он должен быть на ВЕРХЕ зеленого и ПОД красным div. Что-то вроде запутанных div.

Есть ли способ поместить желтый div поверх зеленого и под красным div, чтобы он больше походил на логотип Google Chrome.

Как расположить эти div друг над другом

Это лучшее, что я могу объяснить, лол, я знаю, что сложно понять, что я делаю.

Вот код (нажмите, чтобы открыть код)

.container {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.red {
  position: absolute;
  left: 30%;
  width: 100%;
  height: 150vh;
  transform: rotate(58deg);
  background-color: #b71724;
  opacity: 1;
  transition: all 0.7s ease-in;
}

.green {
  position: absolute;
  right: 20%;
  width: 110%;
  height: 150vh;
  transform: rotate(-58deg);
  background-color: #2c4b2b;
  opacity: 1;
  transition: all 0.7s ease-in;
}

.yellow {
  position: absolute;
  top: 58%;
  width: 100%;
  height: 100vh;
  background-color: #d1aa3b;
  z-index: -1;
  opacity: 1;
  transition: all 0.7s ease-in;
}
<div class = "container">
  <div class = "bg-div red"></div>
  <div class = "bg-div green"></div>
  <div class = "bg-div yellow"></div>
</div>

То, что вы спрашиваете, не имеет смысла. если зеленый над красный, как желтый может быть над зеленым и под красным? Попробуйте сделать это с тремя игральными картами. Вам нужна другая стратегия.

isherwood 05.05.2022 23:31

@isherwood я отредактировал вопрос и добавил изображение, чтобы представить то, что я ищу

freya21 05.05.2022 23:52

Можно ли иметь два div для желтого цвета; один для левой половины и один для правой половины? Отрегулируйте z-индекс каждого, чтобы он проходил над/под соседним div и позволял им встречаться посередине.

user1599011 06.05.2022 15:33
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
0
3
66
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Назначьте разные z-index :

.red {
 z-index : 3;
}
.yellow {
 z-index : 2;
}
.green {
 z-index : 1;
}

Если вы поместите один и тот же z-индекс для двух div, то их место в HTML-коде будет определять их позицию (последние в теле впереди)

я пытался, но тогда зеленый был бы в том же положении, что и желтый прямо сейчас, который был бы внизу всех div. Чего я хочу добиться, так это того, чтобы каждый div находился поверх одного div и под другим div.

freya21 05.05.2022 23:11

Вам нужно применить свое решение к исходному коду, чтобы продемонстрировать, что оно работает.

isherwood 05.05.2022 23:29

Вы можете использовать z-индекс для красного и зеленого, как вы использовали для желтого, изменив z-индекс желтого на 0 и определив z-индекс зеленого на -1 и z-индекс красного на 1.

я пытался, но все же это заставило бы один div идти поверх всего, а один - снизу всего..

freya21 06.05.2022 00:02
Ответ принят как подходящий

Нет. Это возможно с чем-то вроде бумаги, но z-индекс больше похож на стопку тарелок. Это было бы похоже на укладку тарелок так, чтобы нижняя была также поверх верхней. Не произойдет.

Единственный способ «обмануть» решение — это скопировать нижний элемент (желтый), поднять его до самого верха и каким-то образом замаскировать так, чтобы он был выглядит, как будто он и под красным, и над зеленым. Я не уверен, что вы пытаетесь сделать в своем реальном приложении, но я бы рекомендовал просто добиться эффекта с изображением.

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

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

freya21 06.05.2022 12:12

@freya21 нет проблем! Я столкнулся с тем же самым с помощью ProcessingJS давным-давно, я помню, что чувствовал, что решение было так близко.

ToTheStars_1138 07.05.2022 00:27

Одним из решений вашей проблемы является использование дополнительного div, чтобы закрыть позицию последнего div, я покажу вам пример кода:

      .contain {
        position: relative;
        padding: 20px;
      }
      div {
        width: 100px;
        height: 400px;
      }
      .red {
        position: absolute;
        background: red;
        left: 220px;
        transform: rotate(-33deg);
        z-index: 2;
      }
      .yellow {
        position: absolute;
        background: yellow;
        transform: rotate(90deg);
        top: 140px;
        left: 160px;
        z-index: 1;
      }
      .greenOut {
        height: 200px;
        z-index: 3;
        background: green;
        transform: rotate(34deg);
        position: absolute;
        left: 138px;
        top: 34px;
      }
      .green {
        position: absolute;
        background: green;
        transform: rotate(34deg);
        left: 80px;
      }
    <div class = "contain">
      <div class = "red"></div>
      <div class = "yellow"></div>
      <div class = "green"></div>
      <div class = "greenOut"></div>
    </div>

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