CCS居中总结(上)

本文详细介绍了CSS中实现元素水平居中的多种方法,包括text-align、margin: 0 auto、绝对定位以及flex布局。重点讲解了text-align对行内元素和块级元素的影响,以及margin自动分配在不同情况下的表现。还探讨了浮动元素、display属性对居中效果的影响,同时提到了display: table的居中技巧。最后,文章总结了各种方法的适用场景和优缺点,强调了flex布局在现代前端开发中的重要性。
摘要由CSDN通过智能技术生成

CCS居中总结

-因为最近在归纳css 所以其中的内容不仅限于居中-

水平居中

text-align

1.假如现在有一段文字,“我是大帅哥”让你相对于浏览器居中。这时我们想到的第一个方法就是对于行内元素(inline)可以直接设置父元素的text-align属性值为:center就可以实现居中。怎么理解呢?看代码:

.parent{
   
    text-align:center;
}
<div class="parent">
    <span>我是大帅哥</span>
</div>

就可以实现居中了,这是怎么实现的呢?

​ 我们的父级div设置了text-align属性,是对其内部的行级元素有居中效果。span是行级元素(与其相似的还有a、abbr、b、br、em、input、label、select、span、strong、sub、sup、textarea等) 。突然的想法,如果我们添加一个块级元素还会居中吗?

<div class="parent">
    <span>我是大帅哥</span>
    <div>你也是大帅哥</div>
</div>

div没居中,但是这时你会发现div中的内容居中了!!!这是为什么呢?

​ 其实这里有一个误区,都说text-align是对行级元素起作用,为什么div这个明显的块级元素也会居中,其实并不是子级div居中了,而是子级div继承了父级的text-align属性,并且这时的子级div没有设置宽度以及高度,看起来就像是div居中,但事实上只是子级div中的文字居中了。


块级元素与内联元素的默认宽高

文档流的概念: 行内元素:从左到右排列,宽度不够时换行 块级元素:从上到下排列,每一个元素另起一行

行内元素宽高的确定:

宽度:不受width的限制 由文字内容决定 padding和margin可以改变宽度

高度:不受height的限制 padding和margin也不能改变 可以通过line-height(行高)和font-size(字体大小)来改变

块级元素宽高的确定

宽度:可以自行设置宽度(width)的值 不设置时值为auto 默认宽度是父元素的宽度-自身border-自身margin

高度:

​ 1、可以自行设置height的值;
  2、默认值为0;
  3、由元素内部的文档流中的元素的高度的总和决定的(里面元素的height+padding+margin有合并的可能),当元素脱离文档流时,不能用于父元素高度的计算;
  4、当块级元素里面是文字时,文字只有一行,高度由line-height决定,文字有多行,会自动换行,但是碰到长度很长的单词时需要手动添加连字符(-)换行,有一个属性与之相关,word-breaking: break all; 超出宽度,不管单词是否结束都换行。

**注意:**如果宽度写成100% 这时元素content的宽度等于父元素的宽度 所以元素的宽度应该等于这个宽度加自身的border 会凸出来一部分


所以上面的解释就可以说通了,子级div是没有设置宽度的。默认宽度是父级宽度-border-margin 但是不会超出父级div 所以在浏览器中看到的文字也是居中的。

​ 如果我们设置了子级div:

.child{
   
    width:500px;
    height:200px;
    background-color:red;
}
<div class="parent">
    <span style="background-color: #64c333">我是大帅哥</span>
    <div class="child">你也是大帅哥</div>
</div>

为了截图方便观察,我设置了父级div背景颜色为黄色,子级为红色,span为绿色在这里插入图片描述

这时就清楚的看见第二句话是随着我们的子级div居中而改变位置。

​ 这使我又来突发奇想,如果我将div中的块元素元素全部换成行内元素或者行内块元素,这时对父级div用text-align会发生什么事情呢?

我们设置4个子块:

.parent{
   
    text-align: center;
}
.box{
   
 	width: 200px;
    height: 200px;
    background-color: red;
    border: 5px solid #cccccc;
}
<div class="parent">
    <div class="box">我是块1</div>
    <div class="box">我是块2</div>
    <div class="box">我是块3</div>
    <div class="box">我是块4</div>
</div>

这时我们可以观察到四个子块由上到下排列,每个独占一行并且块中的文字相对于子级块居中,因为这时的子级div继承了父级div的text-align属性。
在这里插入图片描述

这时我们通过display属性将块元素分别变成行内元素与行内块级元素观察两个不同的结果

.box{
   
    display: inline/inline-block;
    width: 200px;
    height: 200px;
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值