为了账号安全,请及时绑定邮箱和手机立即绑定

用了float:left又用position:relative。为什么?

第15-5课中,div的float:left起了什么作用?li的float:left又起了什么作用?为什么不直接使用display:inline-block?

<!DOCTYPE HTML>

<html>

<head>

<meta charset="utf-8">

<title>不定宽块状元素水平居中</title>

<style>

.container{

    float:left;

position:relative;

left:50%

}


.container ul{

list-style:none;

margin:0;

padding:0;

position:relative;

left:-50%;

}

.container li{float:left;display:inline;margin-right:8px;}



/*下面是代码任务区*/


.wrap-center{

    background:#ccc;

    

    

}

</style>

</head>


<body>

<div class="container">

<ul>

    <li><a href="#">1</a></li>

        <li><a href="#">2</a></li>

        <li><a href="#">3</a></li>

    </ul>

</div>


<!--下面是代码任务区-->

<div class="wrap">

    <div class="wrap-center">我们来学习一下这种方法。</div>

</div>

</body>

</html>


正在回答

1 回答

我来说下我的观点(尽量通俗易懂):
首先,咱们只看container与ul,先不管其他。

1.container浮动到left;

2.相对定位,是相对于container原来的位置进行移动,参照物为页面,右移50%,也就是说,现在container的左边界就在页面正中间。

3.ul是container中的一个子元素,规定了padding为0和margin为0,也就是说,ul包含在container中,但是它们的边界是重合的(因为边界距离为0),也就是说,从盒子的角度来看,ul这个盒子和container这个盒子是一样的,简单来说,ul这个盒子就是container那个盒子。

4.现在,ul这个盒子要向左边移动50%,此时的参照物为container,也就是说ul这个盒子向左移动container的50%,然而ul本来就是container,也就相当于container自己向左移动了它自己的50%。

5.此时,container的中间与页面的中间重合,即container水平居中,由于ul与container本来就是一样的,ul也就水平居中了。

然而ul始终是一个列表,即使水平居中了,1 2 3 也是垂直排列的(当然它们整体是水平居中的),另外加入一些css让它们成水平排列,依然不影响ul这个整体的水平居中。

欢迎拍砖!
4 回复 有任何疑惑可以回复我~
#1

风早君418

ul盒子是向右移动吧?
2016-05-30 回复 有任何疑惑可以回复我~
#2

安之以祖古 提问者

非常感谢!就是这样的
2016-05-30 回复 有任何疑惑可以回复我~
#3

慕粉3442477

第四条没说清楚,你的意思ul左移50%,那不是又回到原来的位置了?哪里会居中
2016-06-08 回复 有任何疑惑可以回复我~
#4

妙言

整体和我理解的一样,但是想请教一个问题:ul以ul为基准,向左偏移container的50%,为什么用left:-50%,而不用right:50%呢?我觉得是一样的
2016-06-13 回复 有任何疑惑可以回复我~
#5

慕虎9317830

大佬问一下 .container只设置position:relative也能通过left进行偏移,为什么还要设置float:left呢?难道是为了脱离文档流?
2019-01-19 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

用了float:left又用position:relative。为什么?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号