我想制作一个圆形按钮(div也可以)并将其放在直径为窗口高度20%的中心。我可以这样做,但如果窗口不是正方形的话,按钮将变成椭圆形(我希望宽度和高度相同 - 一个完美的圆圈)。
.circle {
height: 20%;
width: 20%;
border-radius: 100%;
font-size: 20px;
color: #fff;
line-height: 100px;
text-align: center;
background: #000
}
硬编码像素值不是一个选项,因为它不会根据窗口调整大小。有什么想法吗?
答案 0 :(得分:5)
有两种方法可以实现这一目标;有和没有JavaScript。
这是一个简单的演示:little link。
HTML:
<div class = "circle"></div>
CSS:
html, body {
height: 100%;
}
.circle {
border-radius: 1000px;
background-color: rgb(0, 162, 232);
}
JavaScript(使用jQuery,但没有必要):
function upd() {
var h = $("body").height();
$(".circle").height(h / 5);
$(".circle").width(h / 5);
}
upd();
window.onresize = upd;
对于仅限CSS的解决方案,您需要使用以下事实:所有padding
值都是相对于元素父width
计算的,而不是height
(reference) 。小演示:little link。
HTML:
<div class = "wrapper">
<div class = "main">
</div>
</div>
CSS:
html, body {
height: 100%;
width: 100%;
}
.wrapper {
width: 20%;
display: inline-block;
position: relative;
}
.wrapper:after {
padding-top: 100%; /*1:1 ratio*/
display: block;
content: '';
}
.main {
position: absolute;
top: 0; bottom: 0; right: 0; left: 0; /*fill parent*/
border-radius: 1000px;
background-color: rgb(0, 162, 232);
/*I wanted it to look good :)*/
font-family: 'Arial', Helvetica, Sans-Serif;
color: white;
}
答案 1 :(得分:3)
有一种方法可以在不使用任何JS的情况下实现完美的圆形,它位于填充百分比的规范定义中。当填充以百分比形式应用时,它将作为对象宽度的百分比应用,这意味着如果将宽度和高度设置为0,并为对象提供20%的填充,您将结束占用可用宽度的20%的圆圈。你需要发挥创意才能让事情进入圈内。
<style>
html, body {
width:80%;
}
.square
{
width:0%;
height:0%;
padding:20%;
position:relative;
left:25%;/*Position central*/
border-radius:100%;
margin:auto;/*Position central*/
border:1px solid #000000;
}
</style>
答案 2 :(得分:0)
最简单的解决方法是将 min-height
和 min-width
属性添加到具有相同值的圆圈中。
.circle {
min-width: 100px;
min-height: 100px;
}