#html #css
Вопрос:
Я делаю небольшую страницу, и мне нужно, чтобы на заднем плане было 2 фигуры (скриншот дизайна прилагается). Я сделал их исключительно с помощью CSS. Я пробовал как ::до/::после для родительского контейнера, так и просто отдельные DIV-ы в HTML. Проблема в том, что в обоих случаях нижняя правая фигура всегда выходит из контейнера, и появляется свиток. Я думал, что переполнение поможет, но оно не помогло мне. Кто-нибудь может помочь мне это исправить? Спасибо!
body {
position: relative;
min-height: 100vh;
width: 100%;
padding: 10%;
}
.container {
width: 100%;
margin: 1.5rem 0;
display: flex;
align-items: center;
flex-direction: column;
justify-content: space-around;
}
.background-one {
position: absolute;
top: 0;
left: -50%;
background: linear-gradient(to top, $violet, $magenta);
width: 375px;
height: 54%;
border-bottom-right-radius: 50%;
border-bottom-left-radius: 50%;
z-index: -1;
}
.background-two {
position: absolute;
bottom: 0;
right: -50%;
background: hsl(236, 72%, 63%);
width: 375px;
height: 54%;
border-top-right-radius: 50%;
border-top-left-radius: 50%;
z-index: -1;
}
<body>
<div class="background-one"></div>
<div class="background-two"></div>
<div class="container">
<div class="phone"></div>
</div>
</body>
Комментарии:
1. У меня нет ваших изображений для тестирования, но я подозреваю, что у вашего контейнера нет высоты, и поэтому изображение просто делает все возможное, но по умолчанию оно выравнивается слева вверху. другими словами, модель коробки разрушается. попробуйте изменить свойство отображения css для элементов.
2. Я не использовал никаких изображений. Я только что построил фигуры, создав div(или ::после элемента) и придав ему ширину, высоту и цвет фона. Я пробовал добавлять высоту, но это не имеет значения. Проблема возникает только тогда, когда я пытаюсь абсолютно расположить эти элементы в соответствии с абсолютно расположенным родителем. И это происходило только с правой стороны. Более того, я также по какой-то причине начинаю заполнять пробелы внизу, хотя там ничего нет.
3. А, понятно. jsfiddle.net/FirePrism/1fjp92rv Это чертовски близко к тому, что вы хотите, но проблема в том, что это не плавный дизайн. Он использует заданные значения для объектов (хотя, возможно, вы могли бы просто поменять их местами с пропорциональными значениями). В принципе, это будет работать только с небольшим окном просмотра.
4. Что ж, теперь я наконец нашел способ это исправить. Пока работает нормально. Я написал ответ ниже.
Ответ №1:
Ладно, наконец-то я думаю, что нашел решение, на случай, если кто-нибудь столкнется с той же проблемой. Я вложил эти DIV(которые являются фоновыми фигурами) в другой DIV. Я сделал так, чтобы этот раздел контейнера покрывал весь экран, а затем расположил эти разделители формы абсолютно в новом контейнере, установив переполнение контейнера в скрытое положение.
.newContainer {
position: absolute; //Its container is set to relative.
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.backgroundShape {
position: absolute;
bottom: 0;
right: -50%;
//other properties with width, height etc.
}