.active图片居中为什么要设置两种方式???

.active图片居中为什么要设置两种方式???

.active中间那张图要保持到中间,一个是用了定位属性left:0  right:0,一个是用了margin: auto;

按理说一个left:0 right:0应该就能保持左右两边拔河了吧,为啥还要用margin auto。我自己试了下单独一种属性确实不可以。但是非绝对定位的情况下单独margin auto就可以实现了,能解释一下么?


顺便还有图片img为什么要设置成100%然后在左偏移30%呢?是计算好的么?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

一、margin: auto将对象设置为水平居中对齐。这是因为auto属性值能够使浏览器自动为对象判断外边距大小,但是在下面的情况下却失效了.

>当设置相应的position元素,它的“margin:auto”会失效。

因为,对象脱离常规流,此时偏移属性参照的是离自身最近的定位祖先元素,如果没有定位的祖先元素,则一直回溯到body元素。盒子的偏移位置不影响常规流中的任何元素,绝对定位层的margin:auto 会失效。

解决方案:设置了 position 属性后,在设置 left和right 为 0 后,也就是左右不限制,通过margin:0 auto; 左右自动,来实现拔河效果,那垂直居中一个道理。

二、问题“图片img为什么要设置成100%然后在左偏移30%”

因为通过 .banner > ul > li 设置了大小,但是不是图片的大小,所以在框里看到的是原始图片从左上角显示的效果,如想看到我们要的效果,要设置图片的大小和位置。

解决:img设置 left: -30%; height: 100%; 将图片高设置成框一样大,宽度根据高自动调整,因为图片宽比较长,所以设置left: -30%将图片向右移动,显示希望的图片部分。

在好好思考下,动手实践下,希望对你有帮助,祝学习愉快,欢迎采纳。


  • 非常感谢!
    2017-04-12 00:28:46
  • 你好,想问下,“在设置 left和right 为 0 后,也就是左右不限制,通过margin:0 auto” 这句话是什么意思,意思是不是position后auto就是失效,但是设置了左右相等那么auto又有效了
    2017-04-20 21:24:23
  • 看下面的回复呦,这是一种解决方法,就像在不设置 position 属性时,margin:0 auto写时,根据父元素的宽度来进行居中显示。
    2017-04-21 10:29:53
wanglaoer 2017-04-20 21:21:46

你好,想问下,“在设置 left和right 为 0 后,也就是左右不限制,通过margin:0 auto”   这句话是什么意思,意思是不是position后auto就是失效,但是设置了左右相等那么auto又有效了

  • 你好,因为设置position:absolute后,对象脱离常规流,此时偏移属性参照的是离自身最近的定位祖先元素,如果没有定位的祖先元素,则一直回溯到body元素。盒子的偏移位置不影响常规流中的任何元素,绝对定位层的margin:auto 会失效。但是注意position可以通过left\top等设置偏移量,而设置了 left和right 为 0 后,左右不限制,在设置 margin:0 auto ,后左右就自动了,这种现象叫拔河现象。
    2017-04-21 10:26:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师