• 元素水平垂直居中--分为行内元素和块级元素的情况


    直接上code:

    HTML文档

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>居中设置</title>
        <link href="../css/居中设置.css" rel="stylesheet" />
    </head>
    <body>
        <h1>居中样式</h1>
        <p>行内元素和块级元素的垂直居中、水平居中都不一样</p>
        <hr />
        <h2>两个块级元素怎么垂直水平居中</h2>
        <div class="box1">
            <div class="box2"></div>
        </div>
        <br />
    
        <div class="box3">
            <div class="box4"></div>
        </div>
        <br />
    
        <div class="box1">
            <div class="box6"></div>
        </div>
        <br />
        <h3>对于块级子元素宽高未知的情况下</h3>
        <div class="box7">
            <div class="box8"></div>
        </div>
        <br />
        <div class="box9">
            <div class="box10"></div>
        </div>
    
        <br />
        <h2>内联元素和行内块元素的居中设置</h2>
        <p>注意:内联元素(行内元素)不能设置宽高</p>
        <div class="box11">
            <a href="##">这是一条用来上下左右居中的链接--请勿点击</a>
        </div>
        <br />
        <div class="box12">
            <img src="../images/config.png" alt="Alternate Text" />
        </div>
        <br />
        <div class="box11">
            <p>可以将那些行内元素转换为块级元素,这样利用块级元素设置水平垂直居中</p>
        </div>
        <br />
    
        <h2>来看看img元素</h2>
        <p>
            img属于行内替换元素。height/width/padding/margin均可用。效果等于块元素。类似的元素还有input等。
            行内非替换元素,例如, height/width/padding top、bottom/margin top、bottom均无效果。只能用padding left、right和padding left、right改变宽度。
        </p>
        <div class="box11">
            <img src="../images/config.png" alt="Alternate Text" />
        </div>
        <br />
        <div class="box13">
            <img src="../images/config.png" alt="Alternate Text" />
        </div>
        <br />
        <div class="box14">
            <img src="../images/config.png" alt="Alternate Text" />
        </div>
    </body>
    </html>
    

      css样式:

    body {
        padding:0px;
        margin:0px;
    }
    
    /*第一种方法将位置都写死了,有的时候很不方便*/
    .box1{
        200px;
        height:200px;
        background-color:#e0cbcb;
        position:relative;
    }
    .box2 {
         50px;
        height: 50px;
        background-color: red;
    
        /**margin设置的时候只能水平居中,不能做到垂直居中*/
        /*margin: 0 auto; */
    
        /*使用定位进行水平垂直居中*/
        position: absolute;
        top: 50%;
        left:50%;
        /*向上移动自身高度的一半*/
        margin-top:-25px;
    
        /*向左移动自身宽度的一半*/
        margin-left:-25px;
    }
    
    /*第二种方法,利用css3的transform属性*/
    /*这个方法比较方便*/
    .box3 {
         200px;
        height: 200px;
        background-color: #e0cbcb;
    }
    .box4{
        50px;
        height:50px;
        background-color:red;
        position:relative;
        top:50%;
        left:50%;
        transform:translate(-50%,-50%)
    }
    
    /*第三种方法*/
    /*position: absolute; left: 0; right: 0; top: 0; bottom: 0;这是自动填充父元素的可用空间。然而给子元素设定了宽高,那么多余的空间,会被margin:auto平均分配。*/
    .box6 {
         50px;
        height: 50px;
        background-color: red;
        position: absolute;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        margin:auto;
    }
    
    /*第四种方法*/
    /*利用表格的特性,将子元素看成行内元素,实现元素中的文字(文字可以是单行的,也可以是多行的)或图片水平垂直居中*/
    .box7 {
        100px;
        height:100px;
        background-color:red;
        display:table;
    }
    .box8 {
        background-color: yellow;
        display: table-cell;
        vertical-align: middle;
        text-align: center;
    }
    
    /*第五种方法,强烈推荐这种计算*/
    /*弹性布局 display: flex。在已知或未知元素宽高的情况下,都能使元素居中显示。*/
    .box9 {
         100px;
        height: 100px;
        background-color: red;
        display: flex;
    
        /*align-items属性适用于所有的flex容器,它是用来设置每个flex元素在侧轴上的默认对齐方式。*/
        align-items: center;
        /*内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。*/
        justify-content: center;
    }
    .box10 {
         30px; /*宽度可以省略*/
        height: 30px; /*高度可以省略*/
        background-color:yellow;
    }
    
    /*第六种方法:一般情况行内元素的水平垂直居中,将样式写在父元素就行*/
    .box11{
        100%;
        height:100px;
        background-color:#000000;
        color:white;
        text-align:center;      /*行内元素水平居中*/
        line-height:100px;      /*行内元素垂直居中*/
    }
    .box11>a{
        color:white;
        text-decoration:none;
    }
    
    /*第七种方法:img元素有点特殊,它并不是单纯的行内元素,可以设置宽高*/
    .box12 {
         100%;
        height: 100px;
        background-color: #000000;
        text-align:center;      /*img元素可以居中*/
        line-height:140px;     /*这里需要进行调整,因为img元素对齐的方式有点不一样*/
    }
    .box12>img{
        50px;
    }
    
    /*第八种方法:行内元素转成块级元素*/
    /*可以将图片转换为块级元素,然后利用块级元素进行调整*/
    .box11 > img {
        /*img只设置宽高中的一个属性,另一个会自动调整成原来比列,保证不变形*/
        /*单位是%的话,会根据父元素进行调整*/
        height: 50%;
        display: block;
        /*第二种方法*/
        position: relative;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%)
    }
    
    /*第九种方法:父元素使用display:table-cell*/
    /*这个方法十分方便快捷,可以放心使用*/
    .box13 {
         500px;
        height: 150px;
        background-color: antiquewhite;
        display: table-cell;
        vertical-align: middle;
        text-align: center;
    }
    .box13>img{
        height:50%;
    }
    
    /*第十种方法:给div设置text-align,给img设置transform,这样也能居中*/
    .box14 {
         500px;
        height: 150px;
        background-color: antiquewhite;
        text-align:center;
    }
    .box14 > img {
            height: 50%;
            /*vertical-align:150px;   这句话放在这没有起到作用*/
    
            /*可以使用margin-top调整垂直位置,但是比较死板*/
    
            /*margin-top:50px;*/
            /*使用transform沿着Y轴移动50%,就能够垂直居中*/
            transform:translateY(50%);
        }
    

      这里只尝试了div包一个div、div包一个img元素这两种情况,后续学习div包一个input的情况!

  • 相关阅读:
    css3条件判断_@supports的用法 以及 Window.CSS.supports()的使用
    UI自动化测试框架 ---TestCafe
    JavaScript的bind方法
    还在拼字符串?试试HTML5的template标签
    讲C#泛型规则最好的一篇文章
    不一样的go语言-不同的语法之type
    不一样的go语言-不同的OO
    不一样的go语言-一样的语法
    不一样的go语言之入门篇-Hello World
    不一样的go语言创世
  • 原文地址:https://www.cnblogs.com/baojinjin/p/9141998.html
Copyright © 2020-2023  润新知