首页 > 其他分享 >[css]总结-如何实现水平垂直都居中对齐?

[css]总结-如何实现水平垂直都居中对齐?

时间:2023-05-23 12:12:03浏览次数:39  
标签:居中 color 元素 height background 对齐 css

最后一种方法最简单

普通盒子-居中对齐: 方式一

思路:外面的容器盒子 outer 让他只有一行.
里面元素改为非块元素. 因为vertical-align对块元素无效.
然后用vertical-align:middle;垂直居中

代码实现
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .outer {
            width: 400px;
            height: 280px;
            line-height: 280px; /* 关键. 让外部容器只有一行. */
            background-color: #cccccc;
            text-align: center;  /* 内容水平居中 */
        }

        .inner {
            width: 140px;
            height: 60px;
            background-color: limegreen;
            font-size: 40px;
            line-height: 60px;

            display: inline; /* 改为行内 或 行内块 */
            vertical-align: middle; /* 因为vertical-align对块元素无效 */
        }
    </style>
</head>
<body>
<div class="outer">
    <div class="inner">你好啊</div>
</div>
</body>
</html>


普通盒子-居中对齐: 方式二

思路: 计算内部需要对齐元素的margi-top: (父高-自身高)/2;
前提条件: 父元素高度,自身高度要明确给定.
且内部元素要能设置宽高.那就不能是行内元素

代码实现
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .outer {
            width: 400px;
            height: 280px;
            background-color: #cccccc;
            text-align: center;/* 水平居中 */
        }

        .inner {
            height: 60px;
            background-color: limegreen;
            font-size: 40px;
            line-height: 60px;
            display: inline-block;  /* inner所在元素是span,默认是inline,对行内元素设置宽高无效 */
   
            margin-top: 110px; /* (280-60)/2=110px */
			/* 改用外部容器的padding-top计算数值也能垂直居中 */
        }
    </style>
</head>
<body>
<div class="outer">
    <span class="inner">你好啊</span>
</div>
</body>
</html>


普通盒子-居中对齐: 方式三

思路: 和上面类似.但是改为计算父元素的padding-top.
padding会撑开父元素高度. 再给父元素总高度减去 padding-top的数值 赋回去.
padding-top数值计算方法:
父元素内容区高度-子元素总体高度/2
其中: 子元素总体高度=内容区高度+上下边框高度+上下内边距高度

点击查看代码
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .outer {
            width: 400px;
/*父元素原高度 height: 280px .   */
/*padding-top=(280-60)/2=110px */
/* 加上padding-top还想让父元素不被撑高. 280-padding-top=170px */
            height: 170px;
            background-color: #ccc;
            text-align: center;
            padding-top:100px;
        }

        .inner {
		height:60px;
            background-color: limegreen;
            font-size: 40px;
            border: 1px solid black;
            box-sizing: border-box; /* 子元素总高度就等于height.为了偷懒好计算 */
        }
    </style>
</head>
<body>
<div class="outer">
    <span class="inner">你好啊</span>
</div>
</body>
</html>


普通盒子-居中对齐: 方式四 -定位1

思路: 自绝父相---让父容器成为子元素的包含块
定位,用2D位移
优点: 不用繁琐的计算margin,padding. 也不用必须知道子元素的宽高.

代码
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .outer {
            width: 400px;
            height: 280px;
            background-color: #ccc;
            position: relative;
        }

        .inner {
            background-color: limegreen;
            
            position: absolute;
            /* 块元素居中. 用定位,配合位移 */
            left: 50%;
            top: 50%; /* 相对父元素取一半 */
           
            /* 位移函数参数百分比.是参照自身的宽高 */
            transform: translateX(-50%) translateY(-50%); 
        }
    </style>
</head>
<body>
<div class="outer">
    <div class="inner">你好啊</div>
</div>
</body>
</html>


普通盒子-居中对齐: 方式五 -定位2

思路: 定位,自动margin
注意: 子元素宽高要已给定

代码
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .outer {
            width: 400px;
            height: 280px;
            background-color: #ccc;
            position: relative;
        }

        .inner {
            width: 140px;
            height: 60px;
            background-color: limegreen;
            font-size: 40px;
            line-height: 60px;
			
            position: absolute;

            /* 下面代码是居中关键 */
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            margin: auto;
        }
    </style>
</head>
<body>
<div class="outer">
    <div class="inner">你好啊</div>
</div>
</body>
</html>

弹性盒子-居中对齐:方式一

思路: 弹性容器 主轴,侧轴对齐方式都设置为center

点击查看代码
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .outer {
            width: 400px;
            height: 280px;
            background-color: #ccc;

            display: flex;
            justify-content: center;/* 调整主轴 居中对齐 */
            align-items: center;  /* 只有一行时,调整侧轴居中对齐 */
        }

        .inner {
            width: 140px;
            height: 60px;
            background-color: limegreen;
        }
    </style>
</head>
<body>
<div class="outer">
    <span class="inner"></span>
</div>
</body>
</html>


弹性盒子-居中对齐:方式二

思路: 弹性项目自动分配margin

代码实现
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .outer {
            width: 400px;
            height: 280px;
            background-color: #ccc;
            display: flex; /* 关键1 */
        }

        .inner {
            background-color: limegreen;
            text-align: center;

            
            margin:auto;/* 关键2 */
        }
    </style>
</head>
<body>
<div class="outer">
    <span class="inner">你好啊</span>
</div>
</body>
</html>

标签:居中,color,元素,height,background,对齐,css
From: https://www.cnblogs.com/unity-yancy/p/17422611.html

相关文章

  • css 中伪类 :not()
    demo<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>testdemo</title&g......
  • css 中 +
    在CSS中,加号(+)是一个相邻兄弟选择器,用于选择指定元素后面满足条件的第一个相邻兄弟元素。demo<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0......
  • 纯CSS实现加载效果
    HTML标签<divclass="loading"><span></span><span></span><span></span><span></span><span></span></div>CSS样式<style>.loading{ width:80px; height:40px; ......
  • 【整理】CSS知识点
    1、=========================================css注释/*这是个注释*/2、=========================================选择器id选择器#para1{}class选择器.center{}p.centerclass为center的所有p元素3、===========......
  • css优先级
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatib......
  • Java缓存行对齐
    来源:  https://blog.csdn.net/mofeizhi/article/details/106816026  ......
  • ExtJS 4中自定义Grid列标题的对齐方式
           从ExtJS2.0到目前的4.0,Grid的列标题对齐方式都是和数据的对齐方式一致的,这不太符合中国人的习惯。解决办法是,自己重写一下Ext.grid.column.Column对象中渲染列标题的对齐方式的代码。代码只有一句,在afterRender方法中,因而重写afterRender方法就行了,具体做法如下。......
  • CSS表情包好上头,再来一款送我嫣的晚安表情
    晚安好梦我与好友道晚安,喜欢用一个带「晚安做个美梦」文字的表情,因为喜欢这个文字。前面做了一个送花的表情,我有些膨胀了。还有就是,有些豪言壮志,也到了该兑现的时候了。先来摆一摆,对我嫣的那些空口大话。我又要给你整活了,入秋三件套。我应该是可以画出来,等你回京带你去吃真的。送......
  • CSS基础知识笔记
    CSS(CascadingStyleSheets)指层叠样式表,是一种描述如何显示HTML元素的语言。参考教程:https://www.w3school.com.cn/css/index.aspCSS语法CSS规则集(rule-set)由选择器和声明块组成:CSS选择器元素选择器p{text-align:center;color:red;}id选择器注意:i......
  • word两端对齐后最后一行字符间距太大,怎么办?
    (52条消息)word两端对齐字的间距太大,怎么办?_两端对齐后字间距太大怎么办_我来了嗷嗷嗷的博客-CSDN博客 解决方案:在段落最后一句,回车即可。 ......