我用JavaScript编写了一个乒乓球游戏,出于显而易见的原因,我需要把球变成一个正方形。我使用百分比测量,所以游戏适用于所有分辨率,但我想知道如何使用这些球使球成为正方形。
#ball{
position: absolute;
height: 1.5%;
width: 1.5%;
background-color: white;
top: 50%;
left: 50%;
margin-top: -12.5px;
margin-left: -12.5px;
}
显然,1.5%的宽度远高于1.5%的高度。有没有人知道如何在不牺牲灵活性的情况下使这两个像素相同?
答案 0 :(得分:2)
您可以使用视口单元vh
或vw
,其中大小取决于窗口大小,因此它相对于窗口大小而不是父元素大小是灵活的。
.square {
width: 10vw;
height: 10vw;
border: 1px solid black;
margin: 50px;
}

<div class="square"></div>
&#13;
答案 1 :(得分:1)
而不是height
,您可以使用百分比padding-bottom
(或padding-top
):
#ball {
position: absolute;
width: 3.5%;
background-color: red;
top: 50%;
left: 50%;
margin-top: -12.5px;
margin-left: -12.5px;
padding-bottom: 3.5%;
}
&#13;
<div id="ball"></div>
&#13;
答案 2 :(得分:0)
试试这个
#ball {
position: absolute;
height: 1.5%;
width: 1.5%;
max-height: 1.5%;
max-width: 1.5%;
background-color: #d84343;
top: 50%;
left: 50%;
margin-top: -12.5px;
margin-left: -12.5px;
padding: 38px 30px;
}
或使用像素
#ball {
position: absolute;
height: 80px;
width: 80px;
background-color: #d84343;
top: 50%;
left: 50%;
margin-top: -12.5px;
margin-left: -12.5px;
}
答案 3 :(得分:0)
我建议使用rem单位,而不是使用百分比,这也是反应灵敏的。
#ball {
width: 1.5rem;
height: 1.5rem;
border: 1px solid #000;
background: #f00;
}
&#13;
<div id="ball"></div>
&#13;