#html #css
#HTML #css
Вопрос:
Привет, у меня вопрос о моем коде.
Вот моя проблема.
У меня есть два элемента и один фрейм. Фрейм имеет относительную позицию, а два элемента (дочерние элементы) имеют абсолютную позицию. Они должны всегда находиться в одной и той же точке внутри моего фрейма, но когда я изменяю размер, положение дочерних элементов отличается в зависимости от фрейма. Как сделать так, чтобы дочерние элементы всегда оставались в одном и том же положении для responsive design? Возможно ли это?
Попробуйте также изменить высоту окна в примере (не только ширину) https://codesandbox.io/s/adoring-jackson-c6fth?file=/index.html:0-900
.frame {
width: 70vh;
height: 90vh;
border: 10px solid red;
margin: 10px auto;
position: relative;
}
.objA {
width: 130%;
position: absolute;
height: 40%;
bottom: -10%;
left: -20;
border: 2px solid green;
background: rgba(10, 101, 10, 0.7);
z-index: 2;
}
.objB {
width: 10%;
position: absolute;
height: 20%;
bottom: 20%;
left: 30%;
background: red;
z-index: 1;
}
<div class="frame"></div>
<div class="objA"></div>
<div class="objB"></div>
Я размещаю здесь свой реальный пример изображения, чтобы лучше представить, в чем проблема.
Все объекты позиционируются абсолютно (волны, звезды, робот и т. Д.). Каждая волна должна в каждой измененной ситуации находиться в одном и том же положении. Полезно знать, что каждая волна разделена.
Комментарии:
1. Ваш запрос звучит так, как будто он противоречит сам себе. Вы хотите иметь адаптивный дизайн и позволяете фрейму изменять размер, но вы хотите, чтобы элементы оставались того же размера и не перемещались. Какого эффекта вы пытаетесь достичь при изменении размера? Какое поведение, в частности, в вашем текущем примере вы хотели бы изменить и как?
Ответ №1:
Убедитесь, что позиции и высоты / ширины указаны в процентах, и самое главное: поместите свои элементы внутри основного <div class="frame"></div>
элемента. Вы можете начать так:
* {
box-sizing: border-box;
}
body {
background: none #014653;
margin: 0;
}
.frame {
width: 70vw;
height: 90vh;
border: 10px solid #5cb9b8;
background: none #5cb9b8;
margin: 5vh auto;
position: relative;
border-radius: 6px;
}
.frame-stage {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
border: 5px solid #a2cece;
background: none #014653;
border-radius: 5px;
}
.objA {
width: 10%;
position: absolute;
height: 20%;
bottom: 10%;
left: -20;
border: 2px solid green;
background: rgba(10, 101, 10, 0.7);
z-index: 2;
}
.objB {
width: 10%;
position: absolute;
height: 20%;
bottom: 30%;
left: 30%;
background: red;
z-index: 1;
}
<div class="frame">
<div class="frame-stage">
<div class="objA"></div>
<div class="objB"></div>
</div>
</div>
Обновленный codesandbox здесь.