- 写出以下
%
分别有多少px
:
<div class="box"> <div class="box-item"></div></div><style> .box { position: relative; width: 1000px; height: 500px; } .box-item { position: absolute; top: 50%; bottom : 50%; left: 50%; right: 50%; width: 50%; height: 50%; padding-top: 10%; padding-bottom: 10%; margin-right: 10%; margin-top: 10%; }</style>
说实话,看到这道题,刚开始我是自信满满的,可算到后面自己就越来越不确定了,为什么会出这么简单的题呢?由此可见,自己的基本功真不扎实呀!为了展示,我加了两个背景,效果见CodePen
解析
- 首先明确box-item块会相对于box块定位,并且box块是box-item块的包含块;
top, bottom, left, right, width, height, padding, margin这些属性的值为
%
时,计算的规则如下:- top, bottom, height: 基于包含元素的高度;
- left, right, width, padding-left, padding-right, margin-left, margin-right,
padding-top
,padding-bottom
,margin-top
,margin-bottom
: 基于包含元素的宽度;
- 最容易混淆以致出错的就是
padding-top
,padding-bottom
,margin-top
,margin-bottom
,也是本题的主要考察点:margin和padding四个方向的值为%
时,都是基于包含元素的宽度计算的,一定要记住!
答案
<div class="box"> <div class="box-item"></div></div><style> .box { position: relative; width: 1000px; height: 500px; } .box-item { position: absolute; top: 50%; /* 250px; */ bottom : 50%; /* 250px; */ left: 50%; /* 500px; */ right: 50%; /* 500px; */ width: 50%; /* 500px; */ height: 50%; /* 250px; */ padding-top: 10%; /* 100px; */ padding-bottom: 10%; /* 100px; */ margin-right: 10%; /* 100px; */ margin-top: 10%; /* 100px; */ }</style>