zoukankan      html  css  js  c++  java
  • 设置 img 在 div 中水平居中和垂直居中

    Ø  前言

    html + css 时,img 标签的垂直与水平居中,应该是很常见的设计。实现的方式很多,但是容易遗忘,下面分别整理了几种实现方式。

     

    1.   css 代码

    <style type="text/css">

        p, img{

            margin: 0px;

        }

        #div1{

            600px;

            /*border: 1px solid blue;*/

            margin: 0px auto;

        }

        .interior{

            100%;

            height: 120px;

            border: 1px solid purple;

            margin-bottom: 5px;

        }

        .interior img{

            100px;

            height: 100px;

            border: 1px solid orange;

        }

     

        #div1_1{

            text-align: center;

            line-height: 118px;

        }

        #div1_1 img{

            display: inline-block;

            vertical-align: middle;

        }

     

        #div1_2{

            text-align: center;

            display: table;

        }

        #div1_2 span{

            display: table-cell;

            vertical-align: middle;

        }

     

        #div1_3{

            position: relative;

            text-align: center;

        }

        #div1_3 img{

            position: absolute;

            left:50%;

            top: 50%;

            margin-left: -50px;

            margin-top: -50px;

        }

     

        #div1_4 {

            text-align: center;

        }

     

        #div1_4 img {

            position: relative;

            top: 9px;

        }

    </style>

     

    2.   html 代码

    <div id="div1">

        <p>方式1. 使用</p>

        <p>div: text-align: center; line-height: 150px;</p>

        <p>imgdisplay: inline-block; vertical-align: middle;</p>

        <div id="div1_1" class="interior">

            <img src="../../../../Images/20170319161233408.jpg" />

        </div>

        <p>缺点:<p>

        <p>1. 需要父 div 定义 text-align: center; 这样如果有其他元素也会同样水平居中。</p>

     

        </br>

        <p>方式2. 使用</p>

        <p>div: text-align: center; display: table;</p>

        <p>span: table-cell; vertical-align: middle;</p>

        <div id="div1_2" class="interior">

            <span>

                <img src="../../../../Images/20170319161233408.jpg" />

            </span>

        </div>

        <p>缺点:<p>

        <p>1. 需要父 div 定义 text-align: center; 这样如果有其他元素也会同样水平居中。</p>

        <p>2. 而且需要使用 span 标签将 img 标签包裹。</p>

       

        </br>

        <p>方式3. 使用绝对定位 img</p>

        <p>div: position: relative;</p>

        <p>imgposition: absolute; left:50%; top: 50%; margin-left: -50px; margin-top: -50px;</p>

        <div id="div1_3" class="interior">

            <img src="../../../../Images/20170319161233408.jpg" />

            <span>span 1 span 1 span 1</span>

        </div>

        <p>缺点:<p>

        <p>1. 如果内部有其他元素时,都水平垂直居中,会被 img 遮盖。</p>

       

        </br>

        <p>方式4. 使用相对定位 img</p>

        <p>div: text-align: center;</p>

        <p>imgposition: relative; top: 9px;</p>

        <div id="div1_4" class="interior">

            <img src="../../../../Images/20170319161233408.jpg" />

            <span>span 1 span 1 span 1</span>

        </div>

        <p>缺点:<p>

        <p>1. 需要父 div 定义 text-align: center; 这样如果有其他元素也会同样水平居中。</p>

        <p>2. 必须知道父 div 的高度,自行调整 top 值,在高度不确定的情况下就不能使用了。</p>

    </div>

     

    3.   运行效果

    clip_image002

    clip_image004

     

    Ø  总结

    1.   其实方式123 都并没有真正的垂直居中,仔细观察会发现,不是上边距比下边距高了几px,就是下边距比上边距高了几px。是否有其他方式可以解决呢?

    2.   如果在父 div 高度确定的情况下,方式4是比较可取的,浏览器兼容也挺好。

    3.   参考链接:http://www.51xuediannao.com/html+css/htmlcssjq/css_img_center.html

  • 相关阅读:
    Grodno 2015 (Urozero May 2015 Day 5) D Triangles
    Flea Circus(Project Euler 213)
    Prime triplets (Project Euler 196)
    ACM 博弈(难)题练习 (第二弹)
    Crosses Puzzles zoj 4018 (zju校赛)
    Petrozavodsk Summer-2015. Ivan Smirnov Contest 1 B Bloom
    ACM 博弈(难)题练习 (第一弹)
    2017 ACM区域赛(南宁站) 参赛流水账
    2017 CCPC 杭州 流水账
    2017 ACM区域赛(西安) 参赛流水账
  • 原文地址:https://www.cnblogs.com/abeam/p/7865671.html
Copyright © 2011-2022 走看看