zoukankan      html  css  js  c++  java
  • 关于Css的垂直居中的一些方法

    前两种方法称为大致居中,一般误差随高度的减小而减小,不过一般来说不怎么看得出来,除非你用javascript调用
    offsetTop来查看。不然没有强迫症的比较难看出来。但是兼容性很好,尤其是table-cell的从IE6即可使用

    1.使用table-cell处理图片间的关系

    父元素使用display:table-cell; vertical:middle
    子元素使用display:inline-block; vertical:middle;
    

    即可简单使图片居中

    2.使用line-height处理

    父元素使用display:inline-block;height:300px;line-height:300px;vertical-align:middle;//这里的line-heiht要跟父元素大小一样;
    子元素使用vertical-align:middle;
    

    第三种称为绝对居中,不居中来找我,就是兼容性有点差,起码要IE9 才能兼容,一般的webkit也都没问题就是。随着ES6的泛滥,很快老旧的浏览器也就成了古董,所以这个居中方法也挺不错,就是对于兼容性很高的项目,最好不要使用。但是有问题的是,必须指定height,因为显然,这边计算的是下移50%的当前高度的Y轴。而前面两种方法不需要
    3.使用translateY来垂直居中

    父元素使用position:relative;height:400px;
    子元素position:relative;transfrom:translateY(-50%);height:100px;top:50%;
    

    以下是全部代码,自己找张demo.jpg做实验就可以

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>test</title>
    </head>
    <!--<link rel="stylesheet" href="./test.css">-->
    <style>
        span {
            vertical-align: middle;
             300px;
            height: 400px;
            display: inline-block;
            border: 1px red solid;
            line-height: 400px;
        }
        
        .middle {
             100px;
            /*vertical-align: middle;*/
            position: relative;
        }
        
        .div {
            height: 400px;
             500px;
            display: table-cell;
            vertical-align: middle;
            border: 1px solid red;
        }
        
        .big {
             300px;
            height: 100px;
            position: relative;
            border: 1px red solid;
        }
        
        .small {
             50px;
            height: 50px;
            position: relative;
            transform: translateY(-50%);
            top: 50%;
            border: 1px red solid;
            display: inline-block;
        }
    </style>
    
    <body>
        <span>
            <img class="middle" src="./img/1.jpg" alt="">a
            <img class="middle" src="./img/1.jpg" alt="">
        </span>-->
    
        <div class="div">
            <img class="middle" src="./img/1.jpg" alt="呵呵">
        </div>
    
        <div class="big">
            <div class="small"></div>
            <div class="small"></div>
            <div class="small"></div>
            <img src="./img/1.jpg" style="100px;" class="small"  alt="">
        </div>
    
        <script>
            //计算自己要计算的元素的位置判断是否居中。
            calc(true);
            function calc(flag) {
                    var oheight = document.querySelector('.middle').offsetTop;
                    alert(oheight)
            }
        </script>
    </body>
    
    </html>
    

    部分idea 参考自以下文章

  • 相关阅读:
    onmousewheel
    Zepto 使用中的一些注意点(转)
    oninput onpropertychange 监听输入框值变化
    try catch
    center的用法
    [转]你的编程语言可以这样做吗?(map/reduce的js示范) (转)
    vue中 $event 的用法--获取当前父元素,子元素,兄弟元素
    chrome的vue插件——vue.js devtools的安装
    说明与比较:new Vue() 和 export default {}
    Vue反转字符串及join(),reverse()与 split()函数用法解析
  • 原文地址:https://www.cnblogs.com/10manongit/p/12630393.html
Copyright © 2011-2022 走看看