При position: relative
на окружающих элементах и позиционировании в пикселях вы не получите адаптивный макет.
Сначала при position: relative
элемент позиционируется относительнов исходное положение, а не в центр круга.Это приводит к смещению.
Во-вторых, позиционированный элемент с top: -670px; left: 650px;
может выглядеть хорошо на более широких экранах, но далеко за пределами области просмотра на меньших экранах.Это также портит ваше выравнивание.
Вместо этого удалите окружающие элементы из обычного потока с помощью position: absolute
, сделайте их относительно их контейнера (с position: relative
) и используйте процентную длину для адаптивности.
пересмотренная кодовая ручка
$(document).ready(function() {
$(".subOne").hide();
$(".subTwo").hide();
$(".subThree").hide();
$(".subFour").hide();
$(".mainCircle").bind('click', function() {
$(this).toggleClass('blue');
$(".subOne").slideToggle('fast');
$(".subTwo").slideToggle('fast');
$(".subThree").slideToggle('fast');
$(".subFour").slideToggle('fast');
});
});
body {
margin: 0;
}
.container {
position: relative;
}
.subContainer {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
background: coral;
}
.mainCircle,
.subOne,
.subTwo,
.subThree,
.subFour {
border: 2px red solid;
height: 100px;
width: 100px;
border-radius: 100px;
background: blue;
transition: 0.3s ease all;
}
.subOne {
position: absolute;
top: 20%;
left: 50%;
transform: translate(-50%, -50%); /* see link below for explanation */
}
.subTwo {
position: absolute;
bottom: 20%;
left: 50%;
transform: translate(-50%, 50%);
}
.subThree {
position: absolute;
top: 50%;
left: 20%;
transform: translate(-50%, -50%);
}
.subFour {
position: absolute;
top: 50%;
right: 20%;
transform: translate(50%, -50%);
}
.mainCircle:hover {
background: lightblue;
transition: 0.3s ease all;
}
.blue {
border: 10px black solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="subContainer">
<div class="mainCircle"></div>
</div>
<div class="subOne"></div>
<div class="subTwo"></div>
<div class="subThree"></div>
<div class="subFour"></div>
</div>
Подробнее: Элемент не будет оставаться в центре, особенно при изменении размера экрана