美文网首页
居中问题

居中问题

作者: 落叶知声 | 来源:发表于2017-03-06 13:35 被阅读0次

    css图片居中

    1 tanslate居中

        postion:absolute;
        left: 50%;
        transform: translateX(-50%);
        -webkit-transform: translateX(-50%);
    

    2 text-align属性水平居中

        <div>
         ![](images/tt.gif)
      </div>
      CSS样式如下:
      div {width:300px; height:150px; background-color:#CCC; border:#000 1px solid; text-align:center; padding-top:50px;}
    

    3 绝对定位元素居中

    .element {
        width: 600px; height: 400px;
        position: absolute; left: 50%; top: 50%;
        margin-top: -200px;    /* 高度的一半 */
        margin-left: -300px;    /* 宽度的一半 */
        
    }
    但,这种方法有一个很明显的不足,就是需要提前知道元素的尺寸。否则margin负值的调整无法精确。此时,往往要借助JS获得。
    

    4 css3解决了上面一种的不足

    CSS3的兴起,使得有了更好的解决方法,就是使用transform代替margin. transform中translate偏移的百分比值是相对于自身大小的,于是,我们可以:
    
    .element {
        width: 600px; height: 400px;
        position: absolute; left: 50%; top: 50%;
        transform: translate(-50%, -50%);    /* 50%为自身尺寸的一半 */
        -webkit-transform:translate(-50%, -50%);
    }
    最好要加上兼容性webkit-
    然,问题很明显,兼容性不好。IE10+以及其他现代浏览器才支持, IE9(-ms-), IE10+以及其他现代浏览器才支持。中国盛行的IE8浏览器被忽略是有些不适宜的(手机web开发可忽略)。
    
    实际上,绝对定位元素的居中实现还有另外一种方法,可以说是权衡了上面的尺寸自适应以及兼容性的一个方案,其实现的核心是margin:auto.
    

    5 margin auto实现绝对定位元素居中

    .element {
        width: 600px; height: 400px;
        position: absolute; left: 0; top: 0; right: 0; bottom: 0;
        margin: auto;    /* 有了这个就自动居中了 */
    }
    代码两个关键点:
    
    上下左右均0位置定位;
    margin: auto
    于是,就居中了。上面代码的width: 600px height: 400px仅是示意,你修改为其他尺寸,或者不设置尺寸(需要是图片这种自身包含尺寸的元素),都是居中显示的。很有意思的~~
    

    相关文章

      网友评论

          本文标题:居中问题

          本文链接:https://www.haomeiwen.com/subject/chxugttx.html