外链论坛

 找回密码
 立即注册
搜索
查看: 62|回复: 0

实现CSS居中的多种办法

[复制链接]

2615

主题

4554

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99110695
发表于 2024-6-30 09:39:18 | 显示全部楼层 |阅读模式

居中在 CSS 中用的比较平常,总结几种自己比较熟悉的居中的写法。当然,肯定还有更加多更不错的写法,针对文中不足的地区欢迎指正。

假设此刻给出这种场景:

<div class="parent"> <div class="child"> DEMO </div> </div>

其中在 class=child 这个 div 中的内容长度是不必定的,此刻必须实现这个 div 的居中。

水平居中

1.1 display: inline-block

在块级父容器中让行内元素类行内元素居中,只需运用 text-align: center,

这种办法能够让 inline/inline-block/inline-table/inline/flex 居中。
.child { display:inline-block; /*子元素文字会继承居中,因此呢要在上面写上向左边居中*/ text-align:left; } .parent { text-align:center; }

当有多个 child div 的时候倘若设置 display: inline-block 的时候必须重视每一个 div 之间会有缝隙,这不是什么 bug ,特性便是如此。。

倘若想去掉这些缝隙的话,有几种处理办法

1.去掉 HTML 中的空格。

元素之间留白间距显现原由由于标签段之间的空隙,这个时候只必须去除掉 HTML 之间的空隙就好了。

例如这种写法,当然写法非常多种,只要保准把空隙去掉就能够了,然则这种办法总觉得写起来有点反人类。

<div class="parent"> <div class="child"> DEMO1</div ><div class="child"> DEMO2</div ><div class="child"> DEMO3</div> </div>

2.运用 margin 负值

这种办法这个负的值不太好确定,和上下文的字体等等都相关,这种办法不太适合大规模的运用

.child { margin-right; -5px; }

3.运用 font-size: 0

这种办法非常简单地这个间距问题,只必须将父 div 的 font-size 设为0 ,而后记得将子 div 的 font-size 属性设置回来就可

.parent { font-size: 0; } .chilc { font-size: 16px; }

4.运用 letter-spacing word-spacing

.parent { letter-spacing: -5px; /**/ word-spacing: -5px; } .chilc { letter-spacing: 0; /**/ word-spacing: 0; }

1.2 display:table

table 元素的宽度是跟着内容走,居中的时候加上 margin 就可。兼容IE8。

倘若不设置成table,设置成别的块级元素能够然则要强调设置宽度width,否则会拉伸成父元素的宽度。(重视加上 width 这种办法拓展性欠好倘若 child div 里面的内容很长的话可能超过设置的 width 的宽度)

.child { display:table; margin:0 auto; }

1.3 position: absolute

absolute 元素的宽度默认是由于内容决定

这种办法的优点是居中的元素不会对其他元素产生影响 脱离正常流

.parent { position:relative; } .child{ position:absolute; /*参照物是父容器*/ left:50%; transform:translateX(-50%); /*百分比的参照物是自己*/

1.4 dispaly: flex

只兼容IE

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-3 22:20 , Processed in 0.068384 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.