zoukankan      html  css  js  c++  java
  • 主流 CSS 布局(水平居中、垂直居中、居中 )

    什么是布局

    • html 页面的整体结构或骨架
    • 布局不是某个技术内容 而是一种设计思想

    [ 布局方式 ]

    • 水平居中布局
    • 垂直居中布局
    • 居中布局( 水平 + 垂直 )

    什么是水平居中布局

    水平居中布局 元素相对于页面/元素相对于父元素水平居中
    [ 实现方式 ]

    • inline-block + text-align 属性配合使用

    注:[优点] 浏览器兼容性比较好 [缺点] text-align 属性具有继承性 导致子级元素的文本居中显示
    **解决方法:在子级元素重新设置 text-align 属性覆盖掉父级元素的 text-align 属性 **

    <style>
        *{
            margin: 0;
            padding: 0;   
        }
        .parent {
             100%;
            height: 200px;
            background-color: #00ffff;
            /* 方法一: inline-block + text-align 属性配合使用  为父元素 添加 text-align 属性  为子元素添加 display 属性
               - text-align 属性 为文本内容设置对其方式
                 + left: 左对齐 
                 + center: 居中对齐
                 + right: 右对齐   
            */
            text-align: center;
        }
        .child {
             300px;
            height: 200px;
            background-color: #ff0000;
            /* display 属性:
               - block: 块级元素
               - inline: 内联元素 (text-align 有效)
                 + width 和 height 属性无效
               - inline-block: 行内块元素 (块级 + 内联 )
             */
            display: inline-block;
        }
        </style>
    <body>
    <!-- 居中布局 -->
    <!-- 方法一: inline-block + text-align 属性配合使用 -->
    
        <div class="parent">
            <div class="child"></div>
        </div>
    </body>
    
    
    • table + margin 属性配合使用
      注:[优点] 只需要对子级元素进行设置就可以实现水平居中 [缺点] 如果子级元素脱离文档流,导致 margin 属性失效
      解决方法:考虑第一种或第三种解决方案

    [ 拓展 ] CSS 中使元素脱离文档流的方式

    • 将元素设置浮动 float
    • 将元素设置为绝对定位 position: absolute
    • 将元素设置为固定定位 position: fixed
      <style> 
         *{
            margin: 0;
            padding: 0;   
        }
        .parent {
             100%;
            height: 200px;
            background-color: #00ffff;
        }
        .child {
             300px;
            height: 200px;
            background-color: #ff0000;
            /* 方法二: gtable + margin 属性配合使用 */
            /* display的值 为 table 或 block */
            display: table;
            /* margin 属性: 外边距
               - 一个值: 上下左右
               - 两个值: 上下,左右
                 + auto 根据浏览器自动分配    
               - 三个值: 上,左右,下 
               - 四个值: 上,右,下,左
             */
            margin: 0 auto;
        }
        </style>
    
    • absolute + transform 属性配合使用

    注:[优点] 无论父级元素是否脱离文档流,不影响子级元素水平居中的效果 [缺点] transform 属性是 CSS 3 中新增的属性 浏览器支持情况不好
    **解决方法:考虑第一种或第二种解决方案 **

    <style>
        * {
        margin: 0;
        padding: 0;
        }
    
        .parent {
         100%;
        height: 200px;
        background-color: #00ffff;
        /* 相对定位 */
        position: relative;
        }
    
        .child {
         300px;
        height: 200px;
        background-color: #ff0000;
        /* 当把当前元素设置为绝对定位以后
        - 如果父级元素没有设置定位,当前元素是相对于页面定位的
        - 如果父级元素设置了定位,当前元素是相对于父级元素定位的 
        */
        position: absolute;
        left: 50%;
        /* 水平方向平移 */
        transform: translateX(-50%);
        /* margin-left: -50%; */
        }
        </style>
    
    • ... ...

    什么是垂直居中布局

    垂直居中布局 :当前元素相对于页面/父元素垂直方向是居中显示的
    [ 实现方式 ]

    • table-cell + vertical-align 属性配合使用
      注:[优点] 浏览器的兼容性比较好 [缺点] vertical-align 属性 具有继承性 导致子级元素的文本居中显示
      **如果父级元素中包含除子级元素以外的文本内容,此方法不适用 **
      <style>
        * {
            margin: 0;
            padding: 0;
        }
        .parent {
        /*方法一: table-cell + vertical-align 属性配合使用 */
         200px;
        height: 600px;
        background-color: #00ffff;
        /* display 属性:
           - table: 设置当前元素为<table>元素
           - table-cell:设置当前元素为<td>元素  单元格
           - 设置完成以后 作为子级元素的div就相当于单元格中的内容了,设置对齐方式即可
        
         */
        display: table-cell;
        /* 
            vertical-align 属性: 用于设置文本内容的垂直方向的定对齐方式
            - top: 顶部对齐
            - middle: 居中对齐
            - bottom: 底部对齐 
         */
        vertical-align: middle;
        }
        .child {
             200px;
            height: 300px;
            background-color: #ff0000;
    
        }
        
        </style>
    <body>
        <div class="parent">
            <div class="child"></div>
        </div>
    </body>
    
    • absolute + transform 属性配合使用
      注:[优点] 无论父级元素是否脱离文档流,不影响子级元素的垂直居中的效果 [缺点] transform 属性是 CSS 3 中新增的属性 浏览器支持情况不好
      **解决方法:考虑第一种解决方案 **
        <style>
    
        * {
            margin: 0;
            padding: 0;
        }
        .parent {
             200px;
            height: 600px;
            background-color: #00ffff;
            
            position:relative;
        }
        /* 方法二: absolute + transform 属性配合使用 */
        .child {
             200px;
            height: 300px;
            background-color: #ff0000;
            
            position: absolute;
            top: 50%;
            /* 垂直方向 */
            transform: translateY(-50%);
        }
        </style>
    

    什么是居中布局

    居中布局:( 水平 + 垂直 )居中
    [ 实现方式 ]

    • display:block + margin 属性实现水平方向居中,table-cell + vertical-align 属性实现垂直方向居中
      注:[优点] 浏览器兼容性比较好 [缺点] 父元素与子元素都需要增加代码
       <style>
        * {
            margin: 0;
            padding: 0;
        }
        .parent {
    
         1000px;
        height: 600px;
        background-color: #00ffff;
        /* 实现垂直居中  */
        /* <td> */
        display: table-cell;
        vertical-align: middle;
    
        }
    
        .child {
             200px;
            height: 300px;
            background-color: #ff0000;
            /* 实现水居中 */
            /* <table> */
            /* display: table; */
            display: block;
            margin: 0 auto;
    
        }
        
        </style>
    <body>
        <div class="parent">
            <div class="child"></div>
        </div>
    </body>
    
    
    • absolute + transform 属性实现水平和垂直方向的居中
      注:[优点] 无论父级元素是否脱离文档流,不影响子级元素的垂直居中的效果,不考虑浏览器兼容性,优于第一中方案 [缺点] transform 属性是 CSS 3 中新增的属性 浏览器支持情况不好同时子父元素都增加了代码
    <style>
    
        * {
            margin: 0;
            padding: 0;
        }
        .parent {
             1000px;
            height: 600px;
            background-color: #00ffff;
            /* 相对定位 不脱离文档流*/
            position:relative;
        }
        .child {
             200px;
            height: 300px;
            background-color: #ff0000;
            /* 绝对定位 ———— 子绝父相 */
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            /* transform: translateX(-50%);
            transform: translateY(-50%); */
        }
        </style>
    
  • 相关阅读:
    XML 编码
    XML CDATA
    XML 命名空间
    XML 解析器
    XML XMLHttpRequest 对象
    XML 和CSS
    XML 验证
    XML 属性
    XML 元素
    XML 语法规则
  • 原文地址:https://www.cnblogs.com/serdy/p/11779479.html
Copyright © 2011-2022 走看看