如何让我的圈子 div 不移动
How to keep my circle div from moving
里面这个Codepen
每个圆圈都需要在 800px
处转换为新配置。我正在寻找的配置是让 circle1
和 circle2
仍然位于页面中心,并在圆圈 1 和 2 下方有 circle3
。为了清楚起见,下面的图像显示了我想要圆圈的方式结束。
HTML:
<div class="circles">
<div class="circle1">
<a id="projects" href="#">Projects</a>
</div>
<div class="circle2">
<a id="about" href="#">About</a>
</div>
<div class="circle3">
<a id="contact" href="#">Contact</a>
</div>
</div>
正如您在屏幕截图中看到的,我能够将 circle1
和 circle2
稍微向左移动,同时也在 [=14= 下面移动 circle3
] 和 circle2
通过告诉 circle3
移动 left: -150px
.
但是circle3
不想在他被移动时留在他的位置上。所以如果我把他滑下来,那么我们显然会一直滑到左下角。无论我移动到哪里 circle3
当我将视口移动到更小的尺寸时,他都会继续移动。
这是我的媒体查询,告诉圆圈在 800px
时移动:
@media (max-width: 800px) {
.circles {
width: 80%;
}
.circle1, circle2 {
left: 20%;
}
.circle3 {
left: -150px;
}
}
我认为这可以将 circle3
移动到 left: -150px
。
如何防止 circle3
继续移动,同时保持它在 circle1
和 circle2
之间居中?
我认为 circle3
看起来他在移动但他实际上并没有..发生的事情是我首先将他从他原来的位置移开因此 circle3
只有根据我告诉他去的地方知道他应该去哪里。
自从我告诉 circle3
移动 left:-150px;
他就去了那里,即使我缩小了视口,他也会留在那里。发生变化的是视口,而不是 circle3
他保持在他的位置,但没有调整到视口的位置,因为我把它变小了。
我想这就是为什么circle3
不会停留在两个圆圈中间的原因,因为他此时不知道如何调整。
试试我的解决方案(将 SCSS 编译为 CSS 代码片段,请参阅 Codepen 上的原文):
.circles {
padding: 2rem;
display: flex;
margin: 0 auto;
width: 90%;
}
.circle1, .circle2, .circle3 {
display: flex;
position: relative;
justify-content: center;
border-radius: 50%;
padding-bottom: 30%;
height: 0;
width: 30%;
margin: 5px;
background-color: magenta;
left: 0;
transition: margin-top 0.5s linear, left 0.5s linear;
}
.circle1 #projects, .circle2 #projects, .circle3 #projects, .circle2 #about, .circle3 #contact {
line-height: 1;
margin-top: -0.5em;
padding-top: 50%;
color: #fff;
}
.circle2 {
background-color: blue;
}
.circle3 {
background-color: gold;
}
@media (max-width: 800px) {
.circle1, .circle2, .circle3, .circle2 {
left: 15%;
}
.circle3 {
margin: 0 auto;
margin-top: 28.5%;
left: -35.11%;
}
}
<div class="circles">
<div class="circle1">
<a id="projects" href="#">Projects</a>
</div>
<div class="circle2">
<a id="about" href="#">About</a>
</div>
<div class="circle3">
<a id="contact" href="#">Contact</a>
</div>
</div>
您使用相对值来设置元素的高度(在您的情况下为 padding-bottom: 30%
),但绝对值设置为 .circle3
(top: 90px
) 的顶部位置。当您调整视口大小时,所有圆圈的高度都在变化,但 .circle3
继续保持固定位置。
我把top: 90px
改成了margin-top: 28.5%
,好像没问题。还删除了一些不必要的代码。
P.S。也许我没看懂你的问题,但我只看到了这个问题。
里面这个Codepen
每个圆圈都需要在 800px
处转换为新配置。我正在寻找的配置是让 circle1
和 circle2
仍然位于页面中心,并在圆圈 1 和 2 下方有 circle3
。为了清楚起见,下面的图像显示了我想要圆圈的方式结束。
HTML:
<div class="circles">
<div class="circle1">
<a id="projects" href="#">Projects</a>
</div>
<div class="circle2">
<a id="about" href="#">About</a>
</div>
<div class="circle3">
<a id="contact" href="#">Contact</a>
</div>
</div>
正如您在屏幕截图中看到的,我能够将 circle1
和 circle2
稍微向左移动,同时也在 [=14= 下面移动 circle3
] 和 circle2
通过告诉 circle3
移动 left: -150px
.
但是circle3
不想在他被移动时留在他的位置上。所以如果我把他滑下来,那么我们显然会一直滑到左下角。无论我移动到哪里 circle3
当我将视口移动到更小的尺寸时,他都会继续移动。
这是我的媒体查询,告诉圆圈在 800px
时移动:
@media (max-width: 800px) {
.circles {
width: 80%;
}
.circle1, circle2 {
left: 20%;
}
.circle3 {
left: -150px;
}
}
我认为这可以将 circle3
移动到 left: -150px
。
如何防止 circle3
继续移动,同时保持它在 circle1
和 circle2
之间居中?
我认为 circle3
看起来他在移动但他实际上并没有..发生的事情是我首先将他从他原来的位置移开因此 circle3
只有根据我告诉他去的地方知道他应该去哪里。
自从我告诉 circle3
移动 left:-150px;
他就去了那里,即使我缩小了视口,他也会留在那里。发生变化的是视口,而不是 circle3
他保持在他的位置,但没有调整到视口的位置,因为我把它变小了。
我想这就是为什么circle3
不会停留在两个圆圈中间的原因,因为他此时不知道如何调整。
试试我的解决方案(将 SCSS 编译为 CSS 代码片段,请参阅 Codepen 上的原文):
.circles {
padding: 2rem;
display: flex;
margin: 0 auto;
width: 90%;
}
.circle1, .circle2, .circle3 {
display: flex;
position: relative;
justify-content: center;
border-radius: 50%;
padding-bottom: 30%;
height: 0;
width: 30%;
margin: 5px;
background-color: magenta;
left: 0;
transition: margin-top 0.5s linear, left 0.5s linear;
}
.circle1 #projects, .circle2 #projects, .circle3 #projects, .circle2 #about, .circle3 #contact {
line-height: 1;
margin-top: -0.5em;
padding-top: 50%;
color: #fff;
}
.circle2 {
background-color: blue;
}
.circle3 {
background-color: gold;
}
@media (max-width: 800px) {
.circle1, .circle2, .circle3, .circle2 {
left: 15%;
}
.circle3 {
margin: 0 auto;
margin-top: 28.5%;
left: -35.11%;
}
}
<div class="circles">
<div class="circle1">
<a id="projects" href="#">Projects</a>
</div>
<div class="circle2">
<a id="about" href="#">About</a>
</div>
<div class="circle3">
<a id="contact" href="#">Contact</a>
</div>
</div>
您使用相对值来设置元素的高度(在您的情况下为 padding-bottom: 30%
),但绝对值设置为 .circle3
(top: 90px
) 的顶部位置。当您调整视口大小时,所有圆圈的高度都在变化,但 .circle3
继续保持固定位置。
我把top: 90px
改成了margin-top: 28.5%
,好像没问题。还删除了一些不必要的代码。
P.S。也许我没看懂你的问题,但我只看到了这个问题。