我尝试在单击中心圆圈时显示4个圆圈,就像
.
但是,当我调整视区大小时,div的位置发生了变化,如下面的代码所示。我尝试将位置设为相对位置,但没有效果。https://codepen.io/Refath/pen/NJbEQO
下面是我们讨论的代码:
.subOne{
position: relative;
top: -200px;
left: 445px;
}
.subTwo{
position: relative;
top: -650px;
left: 445px;
}
.subThree{
position: relative;
top: -570px;
left: 255px;
}
.subFour{
position: relative;
top: -670px;
left: 650px;
}
我的一个想法是将子圆 Package 在一个单独的容器div中,并根据视口平移容器,尽管我不确定这是否可行。
4条答案
按热度按时间myzjeezk1#
如果在周围的项目和像素位置上使用
position: relative
,您将无法获得响应性很强的布局。首先,使用
position: relative
时,元素相对于其原始位置而不是中心圆定位,这会导致未对准。第二,用
top: -670px; left: 650px;
定位的元素在大屏幕上看起来不错,但在小屏幕上却远远超出了视口,这也会打乱对齐。相反,使用
position: absolute
将周围的项从正常流中移除,使它们相对于其容器(使用position: relative
),并使用百分比长度来适应。revised codepen
更多详情:Element will not stay centered, especially when re-sizing screen
a8jjtwal2#
你可以用 * percentage * 代替pixels来获得布局,但是我会稍微修改一下标记,并使用一个 wrapping flexbox,如下所示:
1.移动你的圆圈到 * 伪元素 * 和他们的 * 悬停 * 风格。
1.在第一行放置一个 circle,在第二行放置三个(包括
mainCircle
),在最后一行放置一个-使用order
属性确定 ordering,使用flex-basis
确定每行的圆圈数。1.你可以使用
margin: 0 auto
来使每个圆在它们的空间中居中。也可以使用align-content: space-around
来使它们均匀对齐。1.现在,您可以通过改变
subContainer
的height
和width
来 * 调整 * 相对距离。参见以下演示:
p8h8hvxi3#
您可以尝试使用transform:translate().我也会把中间的圆圈作为a::before,并添加其他的圆圈作为子元素。
jq6vz3qz4#
它可以用一种相当简单的方式使用网格布局来完成。
width: 100vw
和height: 100vh
确保容器填充屏幕。display: grid
、grid-template-rows: 1fr 1fr 1fr
和grid-template-columns: 1fr 1fr 1fr
将可用空间分成3个等高/等宽的行/列。容器上的
align-items: center
和justify-items: stretch
以及子元素上的margin: auto
使每个单元格的内容水平和垂直居中。网格区域是为了方便。