CSS的百分比,你知道多少?

文章开始,先提几个问题,且看代码:

    
    body {
        font: 16px/30px sans-serif;
    }
    .box {
        width: 1000px;
        height: 500px;
        background: #808080;
        margin: 0 auto;
    }
    .item {
        width: 20%;
        height: 50%;
        padding: 10%;
        margin-left: 10%;
        font-size: 200%;
        background: orange;
    }


    <div class="box">
        <div class="item">
            这个页面是为了验证CSS中各种尺寸使用百分比时的参照对象是什么
        </div>
    </div>


请告诉我,item类的width,height,padding,margin-left的实际尺寸值各是多少?它的文字大小行高又是多少?如果你能很确定自己的答案,那么这篇文章你就可以不看了。答案我这里不会公布的,因为如果你真的对自己有信心,那么相信你是不需要答案的。


回到正题,在文章最后我会附上我自己写的一个DEMO,那个demo比上面的例子更详细。大家想深入了解的话可以去看看我的demo。

其实CSS中的百分比很好理解。且让我一个个跟你解释

且看代码:

.parent {
  width: 200px;
}
.child {
  width: 50%;
}

<div class="parent">
  <div class="child">
    这个容器的宽度是100px
  </div>
</div>

上面的例子中child的宽度是100px,因为其上一个设置了width的父元素是parent,width的值为200px,固按照百分比转换,child的宽度为100px。这个很简单,没什么好说。再看代码,在上面例子的HTML结构的基础上,我们更改其CSS的值:

.parent {
  width: 200px;
  height: 100px;
}
.child {
  width: 50%;
  height: 50%;
}

上面的代码中,child的width和height的值各是多少呢?你会脱口而出么——width=100px, height=50px!

再看代码:

.parent {
  width: 200px;
  height: 100px;
}
.child {
  width: 80%;
  height: 80%;
}
.childchild {
  width: 50%;
  height: 50%;
}

<div class="parent">
  <div class="child">
    <div class="childchild">
      这个容器尺寸是多少呢?
    </div>
  </div>
</div>

且猜猜看,childchild的那个容器尺寸是多少?这里没有卖关子,是80x40。这个例子主要想说明,容器的CSS百分比尺寸始终依赖于父元素。

来个复杂的:

.parent {
  padding: 100px;
  width: 200px;
}
.child {
  padding: 20%;
  margin: 5% 10%;
  width: 50%;
  height: 50%;
}

你猜你猜你猜猜猜,猜到了么?padding=40px , margin-left=margin-right=10px , margin-top=margin-bottom=20px , width=100px , height=未知,你猜对了么?到这里,其实基本上可以确定一个问题了。那么就是, padding,margin,width这些属性的百分比值始终是以父容器的宽度为基准的而height是以父容器的高度为基准(若父容器没有设置高度,即height值为auto,则浏览器会设置子容器的height属性为auto)

接下来说说font-size和line-height,说到这两个属性,这里就不举例子了。font-size和line-height仍然是参照父容器的属性,只不过大家要清楚的是font-size的改变并不会影响line-height。所以在文章开始的例子中我是设了一个陷阱(*^__^*) 嘻嘻……


最后附上我自己的demo:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    body {
        font: 16px/30px sans-serif;
    }
    .box {
        width: 1000px;
        height: 500px;
        background: #808080;
        margin: 0 auto;
    }
    .item {
        width: 20%;
        height: 50%;
        padding: 10%;
        margin-left: 10%;
        background: orange;
    }
    .item2 {
        margin-left: 10%;
    }
    .item3 {
        margin-left: 20px;
    }
    .item4 {
        font-size: 200%;
        margin-top: 10%;
    }
    .item5 {
        font-size: 32px;
        margin-top: 10%;
    }
    .item6 {
        font-size: 64px;
        margin-top: 10%;
    }
    </style>
</head>
<body>
    <div class="box">
        <div class="item">
            这个页面是为了验证CSS中各种尺寸使用百分比时的参照对象是什么<br>
            <span class="item2">行内元素</span><br>
            <span class="item3">行内元素2</span>
            <ul class="item4">
                <li>块级元素3</li>
            </ul>
            <ul class="item5">
                <li>块级元素4</li>
                <ul class="item4">
                    <li>5</li>
                </ul>
                <ul class="item6">
                    <li>6</li>
                </ul>
            </ul>
        </div>
    </div>
</body>
</html>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值