zoukankan      html  css  js  c++  java
  • CSS子元素在父元素中水平垂直居中的几种方法

    1. 水平居中(margin: auto;)子父元素宽度固定,子元素上设置 margin: auto; 子元素不能设置浮动,否则居中失效。

    复制代码
            #div1{
                width: 300px;
                height: 300px;
                border: 1px solid red;
            }
            #div1 p {
                width: 100px;
                height: 100px;
                background-color: green;
    
                /*float: left;    !*如果设置了浮动,则自动居中就会失效。*!*/
                margin: 0 auto;
            }
    
            <div id="div1">
                <p></p>
            </div>
    复制代码

    2. 水平居中,子父元素宽度固定,父元素设置 text-align: center; 
    子元素设置 display: inline-block; 子元素不能设置浮动,否则居中失效。 
    如果将元素设置为 inline , 则元素的宽高设置会失效,这就需要内容来撑起盒子

    复制代码
           #div2 {
                width: 300px;
                height: 300px;
                border: 1px solid red;
    
                /*position: relative;*/
                text-align: center;
            }
            #div2 p{
                width: 100px;
                height: 100px;
                background-color: green;
                margin: 0;
    
                /*float: left;     !*如果设置了浮动,则自动居中就会失效。*!*/
                display: inline-block;
                /*display: inline;*/
                /*display: inline-flex;*/
            }    
    
            <div id="div2">
                <h4>其他内容</h4>
                <p></p>
                <h3>其他内容</h3>
            </div>    
    复制代码

    1. 水平垂直居中,子元素相对于父元素绝对定位, 
    子元素top,left设置为50%,子元素margin的top,left减去自身高,宽的一半。

    复制代码
            #div3 {
                width: 300px;
                height: 300px;
                border: 1px solid red;
    
                position: relative;
            }
            #div3 p {
                width: 100px;
                height: 100px;
                background-color: green;
    
                /*margin-top: 10%;      !*百分比相对于父元素*!*/
                /*padding-top: 10%;        !*百分比相对于父元素*!*/
                position: absolute;
                top: 50%;
                left: 50%;
                margin-top: -50px;
                margin-left: -50px;
            }
    
            <div id="div3">
                <p></p>
                <h3>其他内容</h3>
            </div>
    复制代码

    2. 水平垂直居中,子元素相对于父元素绝对定位, 
    将子元素的top,right,bottom,left均设为0,然后设置子元素 margin: auto;

    复制代码
           #div4{
                width: 300px;
                height: 300px;
                border: 1px solid red;
    
                position: relative;
            }
            #div4 p{
                width: 100px;
                height: 100px;
                background-color: green;
    
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
                margin: auto;
            }
    
            <div id="div4">
                <p></p>
                <h3>其他内容</h3>
            </div>
    复制代码

    3. 水平垂直居中,父元素设置 display: table-cell; vertical-align: middle; 
    子元素设置 margin: auto; 
    这种方式是让所有的子元素作为一个整体垂直居中,并不能单独指定某一个子元素居中

    复制代码
            #div5{
                width: 300px;
                height: 300px;
                border: 1px solid red;
    
                display: table-cell;
                vertical-align: middle;
            }
            #div5 p{
                width: 100px;
                height: 100px;
                background-color: green;
    
                margin: auto;
            }
    
            <div id="div5">
                <p></p>
            </div>
    复制代码

    4. 水平垂直居中,子元素相对定位,top,let设为50%,transform: translate(-50%, -50%); 
    这种方式并不会释放子元素在文档中所占的位置。

    复制代码
            #div6{
                width: 300px;
                height: 300px;
                border: 1px solid red;
            }
            #div6 p {
                width: 100px;
                height: 100px;
                background-color: green;
                margin: 0;
    
                position: relative;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
            }
    
            <div id="div6">
                <p></p>
                <h3>其他内容</h3>
            </div>
    复制代码

    5. 水平垂直居中,子元素相对于父元素绝对定位, 
    子元素top,let设为50%,transform: translate(-50%, -50%); 
    这种方式会释放子元素在文档中所占的位置

    复制代码
            #div7{
                width: 300px;
                height: 300px;
                border: 1px solid red;
    
                position: relative;
            }
            #div7 p {
                width: 100px;
                height: 100px;
                background-color: green;
                margin: 0;
    
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
            }
    
            <div id="div7">
                <p></p>
                <h3>其他内容</h3>
            </div>
    复制代码

    6. 水平垂直居中,父元素设置 display: flex; justify-content: center; align-items: center; 
    justify-content: center; 是让所有的子元素作为一个整体居中。

    复制代码
           #div8{
                width: 300px;
                height: 300px;
                border: 1px solid red;
    
                display: flex;
                justify-content: center;
                align-items: center;
            }
            #div8 p{
                width: 100px;
                height: 100px;
                background-color: green;
                margin: 0;
            }
    
            <div id="div8">
                <p></p>
            </div>
    复制代码

    转自:https://www.cnblogs.com/yingtoumao/p/11541256.html感谢

  • 相关阅读:
    TensorFlow从0到1之TensorFlow实现多元线性回归(11)
    TensorFlow从0到1之TensorFlow实现简单线性回归(10)
    TensorFlow从0到1之TensorFlow csv文件读取数据(9)
    TensorFlow从0到1之TensorFlow优化器(8)
    TensorFlow从0到1之TensorFlow损失函数(7)
    TensorFlow从0到1之回归算法(6)
    Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐
    Python爬虫小白入门(五)PhatomJS+Selenium第二篇
    Python爬虫小白入门(四)PhatomJS+Selenium第一篇
    Python爬虫小白入门(三)BeautifulSoup库
  • 原文地址:https://www.cnblogs.com/hudaxian/p/14781839.html
Copyright © 2011-2022 走看看