圆形按钮,可根据窗口大小调整大小

时间:2012-09-18 14:08:34

标签: css css3 resize

我想制作一个圆形按钮(div也可以)并将其放在直径为窗口高度20%的中心。我可以这样做,但如果窗口不是正方形的话,按钮将变成椭圆形(我希望宽度和高度相同 - 一个完美的圆圈)。

.circle {
  height: 20%;
  width: 20%;
  border-radius: 100%;
  font-size: 20px;
  color: #fff;
  line-height: 100px;
  text-align: center;
  background: #000
}

硬编码像素值不是一个选项,因为它不会根据窗口调整大小。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

有两种方法可以实现这一目标;有和没有JavaScript。

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;

非JavaScript(CSS)方法

对于仅限CSS的解决方案,您需要使用以下事实:所有padding值都是相对于元素父width计算的,而不是heightreference) 。小演示: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-heightmin-width 属性添加到具有相同值的圆圈中。

.circle {
  min-width: 100px;
  min-height: 100px;
}