新手怎么理解CSS元素居中原理,有哪些要注意的
Admin 2022-06-06 群英技术资讯 905 次浏览
这篇文章主要介绍了新手怎么理解CSS元素居中原理,有哪些要注意的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇新手怎么理解CSS元素居中原理,有哪些要注意的文章都会有所收获,下面我们一起来看看吧。在 CSS 中要设置元素水平垂直居中是一个非常常见的需求了。但就是这样一个从理论上来看似乎实现起来极其简单的,在实践中,它往往难住了很多人。
让元素水平居中相对比较简单:如果它是一个行内元素,就对它的父元素应用 text-align: center;如果它是一个块级元素,就对它自身应用 margin: auto。
然而如果要对一个元素进行垂直居中,那就没有那么容易了,有时候光是想想就令人头皮发麻了。
本文分别从行内元素和块级元素进行说明,将目前比较流行的实现方式进行汇集并解析实现原理,方便大家查阅。这里要说明一点,每一种方式都不是十全十美的,关键要看自己的需求,从而分析出哪种实现方式是最合适的。
行内元素
首先我们先把基础代码写出来:
<div class="main">
<span class="content">我是要居中的行内元素span</span>
</div>
.main {
width: 300px;
height: 300px;
background-color: #50ba8b;
}
.content {
background-color: #5b4d4e;
color: #FFFFFF;
}
class 为 .main 的 div 包裹这一个 class 为 .content 的行内元素 span,我们的目的就是要让 .content 元素 在 .main 元素中居中。
水平居中
text-align
行内元素的水平居中比较简单,我们直接在 .main 中添加 text-align: center; 即可,此时 .main 变为:
.main {
width: 300px;
height: 300px;
background-color: #50ba8b;
text-align: center; /* 水平居中 */
}
实现原理: 设置 text-align 的值为 center ,因为该属性规定元素中的文本的水平对齐方式,那么设置为 center 则文本就水平居中了。
垂直居中
line-height
行内元素的垂直居中我们分为 一行 和 多行或者图片等替换元素 来说明。
如果是 一行,那么我们可以使用 line-height 来实现,此时 .main 元素 css 代码变为:
.main {
width: 300px;
height: 300px; /* 可以不设置 */
background-color: #50ba8b;
line-height: 300px; /* 垂直居中 */
}
其实设置了 line-height 就可以让文本垂直居中,并不需要同时设置 height,这里也是一直存在的一个误区。
实现原理: 这种方式实现垂直居中运用的是 CSS 中“行距的上下等分机制”,这也说明了为什么该方式只适用于 一行 的文本。
还有一点需要说明是,这种方式实现的垂直居中是“近似”的,并不是完美的垂直居中,因为文字字形的垂直中线位置普遍要比真正的“行框盒子”的垂直中线位置低,而由于我们平时使用的 font-size 比较小,使得这点偏差不容易察觉出来,那么感官上也就看成是垂直居中了。
line-height 及 vertical-align
下面再来说说 多行或者图片等替换元素 的垂直居中效果实现,这里我们需要同时借助 line-height 和 vertical-align 来实现。
先让文本换行:
<div class="main">
<span class="content">
我是要居中的行内元素span <br>
我是要居中的行内元素span
</span>
</div>
再看修改之后的 css 代码:
.main {
width: 300px;
background-color: #50ba8b;
line-height: 300px;
}
.content {
display: inline-block;
background-color: #5b4d4e;
color: #FFFFFF;
line-height: 20px;
margin: 0 20px;
vertical-align: middle;
}
实现原理:
块级元素
依然先把基础代码写出来:
<div class="main">
<div class="content">我是要居中的块级元素div</div>
</div>
.main {
width: 300px;
height: 300px;
background-color: #50ba8b;
}
.content {
width: 150px;
height: 150px;
background-color: #5b4d4e;
}
class 为 .main 的 div 包裹这一个 class 为 .content 的 块级元素 div,我们的目的就是要让 .content 元素 在 .main 元素中居中。
position + margin: auto
实现代码如下:
.main {
width: 300px;
height: 300px;
background-color: #50ba8b;
/*关键代码*/
position: relative;
}
.content {
width: 150px;
height: 150px;
background-color: #5b4d4e;
/*关键代码*/
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
}
实现原理:
position + margin-left/top
实现代码如下:
.main {
width: 300px;
height: 300px;
background-color: #50ba8b;
/*关键代码*/
position: relative;
}
.content {
width: 150px;
height: 150px;
background-color: #5b4d4e;
/*关键代码*/
position: absolute;
top: 50%;
left: 50%;
margin-left: -75px;
margin-top: -75px;
}
实现原理:
position + translate
实现代码如下:
.main {
width: 300px;
height: 300px;
background-color: #50ba8b;
/*关键代码*/
position: relative;
}
.content {
width: 150px;
height: 150px;
background-color: #5b4d4e;
/*关键代码*/
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
实现原理:
Flexbox
实现代码如下:
.main {
width: 300px;
height: 300px;
background-color: #50ba8b;
/*关键代码*/
display: flex;
}
.content {
width: 150px;
height: 150px;
background-color: #5b4d4e;
/*关键代码*/
margin: auto;
}
实现原理:
Flexbox 的另一个好处在于,它还可以将匿名容器(即没有被标签包裹的文本节点)垂直居中。比如我们不设置 .main 元素为 display: flex;,而是设置 .content 元素为 display: flex;,并借助 Flexbox 规范所引入的 align-items 和 justify-content 属性,我们可以让它内部的文本也实现居中(我们可以对.main 元素使用相同的属性来使 .content 元素元素居中,但比 margin: auto 方法要更加优雅一些,并且同时起到了回退的作用)。
.content {
width: 150px;
height: 150px;
background-color: #5b4d4e;
/*关键代码*/
display: flex;
align-items: center;
justify-content: center;
margin: auto;
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
CSS缩写规则有哪些,使用缩写有什么好处?一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
这篇文章主要介绍了CSS 小结笔记之变形、过渡与动画的示例的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这篇文章主要给大家分享关于filter与fixed冲突的内容,下文会给大家介绍filter与fixed冲突的原因及解决方法,需要的朋友可以参考,接下来我们一起来学习一下吧。
圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式。圣杯布局和双飞翼布局是很多大厂必考的内容,本文就详细介绍一下这两个布局有什么区别,感兴趣的可以了解一下
说语义标签前先来理解下什么叫语义化,当下html是靠div+css来铸造页面的整体框架和结构的,通篇大量的div可读性极低,因此诞生了这些特殊的标签,简单地说就是见名知义,使页面更清晰,方便维护和开发。HTML5为我们提供了一系列的语义标签。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008