CSS实现元素水平垂直居中的各种方法

这篇具有很好参考价值的文章主要介绍了CSS实现元素水平垂直居中的各种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于 CSS 如何将元素进行水平垂直居中的几种常用方法

前言

        在设计网页页面的过程中,总会有将元素或者文字进行水平或者垂直居中的要求,各种CSS样式调整,搞的头都大了。这里将会介绍 CSS 中几种常用到的水平垂直居中的方法,希望能够对你有所帮助。


接下来出现的CSS代码如无详细说明均使用以下Html代码:

<body>
    <div id="father">
        <!-- 父元素只做参照作用 -->
        <div id="son">
            居中示例
        </div>
    </div>
</body>

一、CSS实现水平居中

        对于行内元素,CSS实现水平居中的方法如下:

text-align:center;

        对于块级元素,CSS实现水平居中的方法主要有以下几种:

       1、通过绝对定位

               对于父元素和子元素的宽度都确定的情况,可以通过设置父元素position:absolute,子元素给剩余宽度一半的margin-left实现CSS水平居中。

#father{
            background-color: aqua;
            width: 200px;
            height: 200px;
            /* 通过绝对定位实现水平居中 */
            position: absolute;
        }
        #son{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            /* 让子元素左边与父元素的最左侧相距50%((200-100)/2) */
            margin-left: 50px;
        }

        2、通过 display:table-cell 和 margin-left

                如果父元素和子元素的宽度都确定的情况,也可以使用display:table-cell和margin-left实现CSS水平居中;此时,父元素display:table-cell,子元素给剩余宽度一半的margin-left。

#father{
            background-color: aqua;
            width: 200px;
            height: 200px;
            /* 通过 display:table-cell 和 margin-left 实现水平居中 */
            display: table-cell;
        }
        #son{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            /* 让子元素左边与父元素的最左侧相距50%((200-100)/2) */
            margin-left: 50px;
        }

                 再次提醒:以上两种方法只适用于父元素和子元素的宽度都确定的情况!

CSS实现元素水平垂直居中的各种方法
已知父元素和子元素的宽度

        3、使用 margin 和 text-align 属性

                当父元素有指定宽度和长度时,可以通过“margin: 0 auto; text-align: center”实现CSS水平居中。

#father{
            background-color: aqua;
            /* 父元素的width和height必须指定 */
            width: 500px;
            height: 100px;
        }
        #son{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            /* 通过margin+text-align实现水平居中 */
            margin: 0 auto;
            text-align: center;
        }

                结果图如下:

CSS实现元素水平垂直居中的各种方法
父元素需要指定width和height,子元素的长宽不做要求

        4、通过 display:flex

                如果浏览器兼容flexbox的话,可以通过“display:flex”实现CSS水平居中。

#father{
            background-color: aqua;
            /* width: 500px;
            height: 100px; */
            /* 父元素 display:flex */
            display: flex;
            flex-direction: column;
        }
        #son{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            /* 子元素 align-self:center */
            align-self: center;
        }

                结果图如下:

CSS实现元素水平垂直居中的各种方法
与上个方法相比不需要知道父元素的长宽了

        5、通过transform属性

                 不推荐使用这种方法,因为transform属性在各个浏览器中的表现行为不一致,可能会出现奇怪的兼容问题。

#father{
            background-color: aqua;
            height: 250px;
            width: 250px;
            position: relative;
            
        }
        #son{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            text-align: center;
            position: absolute;
            left: 50%;
            top: 20%;
            transform: translate(-50%,-50%);
        }
CSS实现元素水平垂直居中的各种方法
不推荐使用

二、CSS实现垂直居中

        1、块级元素

                对于块级元素的布局,垂直居中和水平居中类似,对于水平居中适用的大多对于垂直居中也适用:

#father{
            background-color: aqua;
            width: 200px;
            height: 200px;
            /* 通过绝对定位实现垂直居中 */
            position: absolute;
        }
        #son{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            /* 让子元素顶部与父元素的顶部相距50%((200-100)/2) */
            margin-top: 50px;
        }
#father{
            background-color: aqua;
            width: 200px;
            height: 200px;
            /* 通过 display:table-cell 和 margin-top 实现垂直居中 */
            display: table-cell;
        }
        #son{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            /* 让子元素顶部与父元素的顶部相距50%((200-100)/2) */
            margin-left: 50px;
        }
CSS实现元素水平垂直居中的各种方法
已知父元素和子元素的长宽的话可以使用上述方法实现CSS垂直居中
#father{
            background-color: aqua;
            /* width: 100px; */
            height: 500px;
            /* 父元素 display:flex */
            display: flex;
        }
        #son{
            background-color: aquamarine;
            width: 100px; 
            height: 100px;
            /* 子元素 margin: auto 0 */
            margin: auto 0;
            /* 子元素 align-self: center 也可以实现 */
            align-self: center;
        }
CSS实现元素水平垂直居中的各种方法
通过Flex布局可以在不需要父元素长宽的情况下将子元素垂直居中
#father{
            background-color: aqua;
            width: 300px;
            height: 300px;
            position: relative;
        }
        #son{
            background-color: aquamarine;
            width: 100px; 
            height: 100px;
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%,-50%);
        }
CSS实现元素水平垂直居中的各种方法
考虑到兼容问题还是不推荐使用transform

        2、行内元素

                对于行内元素(行内块元素同理),可以通过verticle-align:middle实现CSS垂直居中。

#father{
            background-color: aqua;
            width: 300px;
            height: 300px;
            line-height: 300px;
        }
        #father img{
            width: 100px; 
            height: 100px;
            vertical-align: middle;
        }
<body>
    <div id="father">
        <!-- 父元素只做参照作用 -->
        <!-- <div id="son">
            块级元素不能用此方法
        </div> -->
        <img src="./Koishi.jpg" alt="">
    </div>
</body>
CSS实现元素水平垂直居中的各种方法
使用 line-height 和 vertical-align 对图片进行垂直居中

         

#father{
            background-color: aqua;
            width: 300px;
            height: 300px;
            display:table;
        }
        #child{
            display: table-cell; 
            vertical-align: middle;
        }
<body>
    <div id="father">
        <!-- 父元素只做参照作用 -->
        <!-- <div id="son">
            块级元素不能用此方法
        </div> -->
        <p id="child">居中示例</p>
    </div>
</body>
CSS实现元素水平垂直居中的各种方法
使用 display 和 vertical-align 对容器里的文字进行垂直居中

 三、CSS实现水平垂直居中

         要想实现元素在水平和垂直都处于居中的位置,最简单粗暴的方法就是在之前水平/垂直居中的情况下实现另一个方向的居中。这里介绍一下CSS中几种常用到的水平垂直居中的方法。

         1、使用 margin:auto

                当元素有给定的高度以及宽度的时候,使用 margin: auto; 元素仅会水平居中,并不会进行垂直居中。此时就需要设置元素的 position 为 absolute,父级元素的 position 为 relative,同时元素的上下左右都需要设置为 0,即可实现水平垂直均为居中。

#father{
            background-color: aqua;
            width: 500px;
            height: 500px;
            position: relative;
        }
        #son{
            background-color: aquamarine;
            width: 100px; 
            height: 100px;
            margin: auto;  
            position: absolute;  
            top: 0;  
            left: 0;  
            right: 0;  
            bottom: 0;
        }
CSS实现元素水平垂直居中的各种方法
已知父元素的长宽的情况下可以使用

         2、使用 Flex 布局

                在不清楚父元素的长宽的情况下可以通过弹性布局来设置水平垂直居中,需要设置父级元素 display:flex 、水平布局 justify-content 以及垂直布局 align-items两个属性。

#father{
            background-color: aqua;
            height: 600px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        #son{
            background-color: aquamarine;
            width: 100px; 
            height: 100px;
        }
CSS实现元素水平垂直居中的各种方法
不清楚父元素的长宽的情况下可以使用

         以上是元素的水平垂直居中常见用法,在实际操作中,将文字进行水平垂直居中也是一个常见的需求。下面介绍的是如何通过CSS实现文字水平垂直居中:

                3、文本水平对齐和行高

                        可以通过设置 text-align 和 line-height 实现文字水平垂直居中:

#father{
            background-color: aqua;
            width: 200px;
            height: 200px;
        }
        #son{
            text-align: center;
            line-height: 200px;
        }
CSS实现元素水平垂直居中的各种方法
根据父元素的属性实现文字居中

                         也可以通过网格布局 grid 来实现文字水平垂直居中,这种方法有两种实现方式:对元素本身属性进行设置,或者在父级元素中设置grid。

#father{
            background-color: aqua;
            width: 600px;
            height: 300px;
            display: grid;
            /* 在父级元素中设置grid */
            align-items: center;
            justify-content: center
        }
        #son{
            /* 对元素本身属性进行设置 */
            /* align-self: center;
            justify-content: center;
            margin: auto; */
        }
CSS实现元素水平垂直居中的各种方法
使用两种网格布局方式都可以达到这种效果

总结

        以上就是常见的CSS实现水平垂直居中的方法,限于笔者水平,本文介绍的居中方法并非全部,如有补充或者指正欢迎在评论区进行交流。文章来源地址https://www.toymoban.com/news/detail-479764.html

到了这里,关于CSS实现元素水平垂直居中的各种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSS实现盒子模型水平居中、垂直居中、水平垂直居中的多种方法

    水平居中效果图 水平居中 全局样式 第一种:margin+width 这种方法适用于已经知道width的盒子,实现起来比较简单 第二种:text-align+inline-block 这种方法适用于多种场景(width不固定) 第三种:float+position 这种方法适用于多种场景(width不固定) 第四种: 这种方法适用于多种场

    2024年02月09日
    浏览(54)
  • css基础知识七:元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

    一、背景 在开发中经常遇到这个问题,即让某个元素的内容在水平和垂直方向上都居中,内容不仅限于文字,可能是图片或其他元素 居中是一个非常基础但又是非常重要的应用场景,实现居中的方法存在很多,可以将这些方法分成两个大类: 居中元素(子元素)的宽高已知

    2024年02月11日
    浏览(35)
  • 面试:CSS让一个元素水平垂直居中

    水平居中 对于 行内元素 : text-align: center ; 对于确定宽度的块级元素: (1)width和margin实现。 margin: 0 auto ; (2)绝对定位和margin-left: (父width - 子width)/2, 前提是父元素position: relative 对于宽度未知的块级元素 (1) table标签配合margin左右auto实现水平居中 。使用table标签(或直

    2024年02月06日
    浏览(32)
  • CSS图片水平垂直居中的三种方法

    我们知道img元素为行内快元素,所以首先设置图片元素的父元素里文字水平居中,行高与整体高度一致。 其次最重要的是设置图片元素的vertical-align属性为middle,该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐方式。 代码示例: 具体方式是先使用定位让图

    2024年02月13日
    浏览(39)
  • css垂直水平居中的几种实现方式

    一、固定宽高: 1、定位 + margin-top + margin-left 设置父元素的position为相对定位,子元素绝对定位,并在 top 和 left 方向上移动父元素50%的距离。 但这个时候,是子元素的上边框和左边框距离父元素150px,整体向右下角偏了一些,所以还需要再用 margin 调整至中心位置,数值分别

    2024年01月18日
    浏览(29)
  • 【前端 | CSS系列】—— 第1篇:如何实现水平垂直居中对齐?

    单纯的元素 左右居中 对齐: 块级元素 可以使用 magrin: 0 auto ; 非块级元素 使用 text-align: center;

    2024年02月13日
    浏览(37)
  • 居中一个元素(水平+垂直居中)

    我们的示例代码全在此基础上修改: 具体原理参考下面这篇博客: flex 弹性布局_本郡主是喵的博客-CSDN博客 对于内容是 行内式元素(内容大小撑起标签宽高)或文字, 是有效的。 line-heignt == height ,能使文字垂直对齐,text-align:center,能使内容居中水平对齐 父元素,采用相对布局,

    2024年02月11日
    浏览(28)
  • uniapp 页面元素水平垂直居中

    在uniapp中如何让一个源码在页面中水平垂直居中?可添加如下操作: 在App.vue添加如下代码设置页面宽度100%显示 在你要居中的页面添加 效果如下

    2024年02月15日
    浏览(28)
  • 元素水平垂直居中的5种方式

    1、利用弹性盒子 将父元素设置为display:flex; 通过:  justify-content: center;  align-items: center; 来设置元素的垂直水平居中 2、将元素转化为表格的形式 父元素设置:  display: table-cell;  vertical-align: middle;  text-align: center; 子元素需设置: display: inline-block;  vertical-align: middle;//消除行

    2024年01月16日
    浏览(34)
  • CSS水平垂直居中

    1.利用定位 + margin:auto 2.flex布局 3.grid布局 一、利用position+margin:auto  二、利用flex 三、gird布局

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包