html的li浮动之后往下移动,多个li浮动后居中显示问题

本文分享三种方法应对动态li元素在父元素内的水平居中问题:使用:nth-child(n)设置最后一列margin,负margin使ul整体偏移,以及设置ul宽度覆盖li加margin。推荐后两者兼顾兼容性。
摘要由CSDN通过智能技术生成

wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

在实际工作当中经常会遇到像上面这样的布局,就是不确定li的个数,但是想让它在父元素内水平居中显示或是相对父元素两端对齐。

先看基础的

/p>

这样只能靠左显示。

解决方法目前搜集了三种:

第一种:利用css3选择器:nth-child(n)设定最后一列li的margin-right值为0。

这也是我第一反应想到的方法,添加

/p>

第二种:设置ul的margin-left为负值。

这是从猫爷的博客看到的,感觉很酷,也很简单

html 代码

HTML5

//老IE支持 html5 新标签

//老IE支持响应式标签

*{margin:0;padding: 0;}

.main{width:1180px;height:auto;margin:100px auto;border:1px solid #f00;}

.main ul{list-style: none;overflow: hidden;margin:0 auto;margin-left: -20px;}

.main ul li{width:280px;height:200px;margin-left:20px;margin-top:20px;background: #f00;float:left;}

原理:让ul整体向左移动一个li的margin-left值,第一个li不是多出来一个margin-left吗?让它移到与.mian对齐就好了

第三种:设置ul的宽度大于.mian的宽度,即为li总体宽度(li+margin值)

这是极客学院上提出的一种方法,也可以解决

html 代码

HTML5

//老IE支持 html5 新标签

//老IE支持响应式标签

*{margin:0;padding: 0;}

.main{width:1180px;height:auto;margin:100px auto;border:1px solid #f00;}

.main ul{width:1200px;list-style: none;overflow: hidden;margin:0 auto;}

.main ul li{width:280px;height:200px;margin-right:20px;margin-top:20px;background: #f00;float:left;}

总结:以上方法都可以解决,但是如果考虑到css3兼容性的话,建议用后两种。如果有更多方法,欢迎吐槽!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值