我有一个容器,其高度是其父容器的30%,其宽度是其100%,因此当用户调整窗口大小时,容器会发生变化,而宽度和高度却不相等。
我正在尝试使圆心居中且宽度和高度相等。
因此,我将圆的高度设置为80%,现在只需要将宽度设置为其高度即可。这是代码:
<div class="image-container">
<div class="image">
</div>
</div>
.image-container{
height:30%;
background-color: red;
display: flex;
justify-content: center;
align-items: center;
}
.image{
background-color: blue;
height: 80%;
width: 40px;
border-radius: 50%;
}
这是jsfiddle:https://jsfiddle.net/2tsa3gwj/1/
答案 0 :(得分:0)
几乎所有有关使用CSS来确定宽高比的示例都取决于宽度:在您的情况下,您实际上是依靠百分比高度来确定宽度的,这可能会有些问题。
解决该问题的一种方法是简单地注入纵横比为1:1的“ sizer”元素,并通过允许其扩展到100%来确定.image
元素的大小其父级的高度。这可以通过使用带有方形视框的虚拟<svg>
元素来完成,例如0 0 1 1
:
<svg viewBox="0 0 1 1"></svg>
唯一的陷阱是,如果您在.image
元素内有任何内容,则必须对其进行绝对定位,以免干扰<svg>
元素所要求的大小调整。
.body{
background-color: green;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.container{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
}
.inner{
background-color: white;
width: 75%;
height: 70%;
border-radius: 10px;
}
.image-container{
height:30%;
background-color: red;
display: flex;
justify-content: center;
align-items: center;
}
.image{
background-color: blue;
height: 80%;
border-radius: 50%;
}
.sizer {
width: auto;
height: 100%;
}
<div class="body">
<div class="container">
<div class="inner">
<div class="image-container">
<div class="image">
<svg class="sizer" viewBox="0 0 1 1"></svg>
</div>
</div>
</div>
</div>
</div>