阅读 275

CSS居中方式大全

水平居中的几种方式

1.使用inline-block 和 text-align实现  复制代码

 .content{            width: 900px;            height: 500px;            background: pink;            text-align: center;             //这里的text-align:center子元素会继承该属性             //我们的目的是将元素居中而不是文本居中            }            .item{            width: 300px;            background: gold;            display: inline-block;         } 复制代码

    优点:兼容性好     缺点:需要同时设置子元素和父元素,并且文本居中会继承      复制代码

如图: 在这里插入图片描述

 2.使用margin:0 auto 复制代码

          body{              background: yellowgreen;          }          .content{              width: 500px;              height: 500px;              margin: 0 auto;              background: gold;          } 复制代码

     优点:兼容性好      缺点:需要指定宽度      margin属性值可以为一个、两个、三个、四个、      margin:40px      如果为一个值代表上下左右都一样,为40px      margin:40px 40px      如果为两个值代表上下间距为40,左右间距为40      margin:40px 50px 40px      如果为三个值代表上间距为40,左右间距为50,下边距为40      margin:10px 20px 30px 40px      如果为四个值代码则依次代表上、右、下、左,分别为10,20,30,40      margin与padding相同       所以这里的margin: 0 auto;代表上下为0,左右间距为居中      margin:0 auto 在不同场景下的生效条件       块级元素:必须给块级元素指定宽度才可以生效      行内元素:必须转化为块级元素设置display:block,并且指定宽度      行内块元素:必须转化为块级元素设置display:block,并且指定宽度(如input、button、img等元素,自带宽度可以不用设置其宽度)  复制代码

如图: 在这里插入图片描述

3.使用table居中  复制代码

                body{              background: yellowgreen;          }          div.content{              width: 500px;              display: table;              margin: 0 auto;              background: gold;          } 复制代码

   优点:只需要对自身进行调整    缺点:IE6,7需要调整结构     复制代码

如图二

4.使用绝对定位居中  复制代码

         .content{             width: 500px;             height: 500px;             background: gold;             position: relative;          }          .item{             width: 300px;              position: absolute;              left: 50%;              background: yellowgreen;              transform: translateX(-50%);          } 复制代码

   优势:无需设置容器宽度,在移动端可以使用     劣势:兼容性差,需要IE9及以上浏览器的支持     复制代码

如图: 在这里插入图片描述 5.使用flex布局来实现

        .content{             width: 500px;             height: 500px;             background:pink;             display: flex;             justify-content: center;          }          .item{             width: 300px;             height: 300px;             background: gold;          } 复制代码

   优势:实现起来简单,尤其是使用在响应式布局中     劣势:兼容性差,如果大面积的使用该布局可能会影响效率     复制代码

如图: 在这里插入图片描述

垂直居中的几种方式

这里就和水平居中类似了

1.使用display:table-cell来实现

         .content{             width: 500px;             height: 500px;             background: gold;             display: table-cell;             vertical-align: middle;          }          .item{             background: yellowgreen;                      } 复制代码

如图: 在这里插入图片描述

2.使用display:inline-block来实现 只有一个元素属于inline或是inline-block,它的vertical-align属性才会起作用。在使用vertical-align的时候,由于对齐的基线是用行高的基线作为标记,需要设置line-height或设置display:table-cell;

我这里申明一点这个第二种方式,大家网上查阅的大都是错误示例,根本不可能实现,正确代码如下

        .content {             width: 300px;             height: 300px;             line-height: 300px;             background: gold;         }         .item {             width: 50%;             height: 50%;             background: yellowgreen;             display: inline-block;             vertical-align: middle;         } 复制代码

如图: 在这里插入图片描述

3.使用绝对定位absolute来实现(同水平居中的使用方法)

         .content{             width: 500px;             height: 500px;             background: gold;             position: relative;          }          .item{              width: 300px;              height: 300px;              position: absolute;              top: 50%;              background: yellowgreen;              transform: translateY(-50%);          }  复制代码

4.使用flex来实现

        .content{             width: 500px;             height: 500px;             background:pink;             display: flex;             align-items: center;          }          .item{             width: 300px;             height: 300px;             background: gold;          } 复制代码

垂直水平居中的几种方式

1.使用绝对定位absolute来实现 已知宽高情况,利用margin:auto

       .content{             width: 500px;             height: 500px;             background:pink;             position: relative;          }          .item{             width: 300px;             height: 300px;             position: absolute;             top: 0;             left: 0;             bottom: 0;             right: 0;             margin: auto;             background: yellowgreen;          }  复制代码

如图: 在这里插入图片描述

未知宽高情况

         .content{             width: 500px;             height: 500px;             background:pink;             position: relative;          }          .item{            position: absolute;            left: 50%;            top: 50%;            transform: translate(-50%,-50%);            background: yellowgreen          }  复制代码

如图: 在这里插入图片描述 2.使用flex布局来实现

        .content{             width: 500px;             height: 500px;             background:pink;             display: flex;             justify-content: center;             align-items: center;          }          .item{             width: 300px;             height: 300px;             background: gold;          }  复制代码

3.使用inline-block 和 text-align以及vertical-align实现

       .content {             width: 300px;             height: 300px;             line-height: 300px;             background: gold;             text-align: center;         }         .item {             width: 50%;             height: 50%;             background: yellowgreen;             display: inline-block;             vertical-align: middle;                      }  复制代码

4.使用display:table-cell+display: inline-block来实现

         .content{             width: 500px;             height: 500px;             background: gold;             display: table-cell;             text-align: center;              vertical-align: middle;                      }          .item{              width: 200px;              height: 200px;              display: inline-block;                         background: yellowgreen;                      } 复制代码

并不是所有方法,只是我们日常常用的方法,每种方法都作者亲试。


作者:勿忘初心y
链接:https://juejin.cn/post/7036925471556108324

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐