外链论坛

 找回密码
 立即注册
搜索
查看: 76|回复: 4

10个CSS办法实现元素水平垂直居中 元素不定宽高居中办法

[复制链接]

3024

主题

2万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99099012
发表于 2024-6-30 06:12:08 | 显示全部楼层 |阅读模式

背景

研发中经常遇到这个问题,即让某个元素的内容在水平和垂直方向上都居中,内容不仅限于文字,可能是照片或其他元素

居中是一个非常基本但又是非常要紧的应用场景,实现居中的办法存在非常多能够将这些办法分成两个大类:

居中元素(子元素)的宽高已知居中元素宽高未知

实现方式

以下是10种实现元素水平垂直居中的方式:

text-align:center 块状元素,水平居中(只适用于块级元素,块级元素内的行内元素能够居中将此行内元素设置为块级元素)margin:0 auto 水平居中 以外边框为参照物,上下外边框距为0,上下外边框距浏览器会自动计算平分line-height 垂直居中 经过设置行间距。line-height只适用于单行文本的元素,多行元素不适用。float属性+relative定位 给父元素设置float:left ,而后父元素整体向左移动50%(position:relative;left:50%),此时父元素要清除浮动(clear:both),而后再给子元素整体向左移动50%(position:relative;left:-50%)按照绝对定位absolute+margin实现水平居中 给父元素一个相对定位relative,利用绝对定位absolute,协同margin:auto自动计算外边距(position: absolute; top: 0;right: 0; bottom: 0; left: 0;margin: auto;)。相针对相对应于relative的绝对定位absolute,必须定宽。relative只是为了给子元素定位用的运用absolute绝对定位+translate 移动转换,实现水平垂直居中 运用百分比来绝对定位一个元素,并协同运用translate,将元素移动定位居中(position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%))。利用table布局,默认垂直居中(vertical-align:middle) 倘若不是table布局的话能够:仿table(display:table-cell),同样运用vertical-align:middle实现居中对齐flex布局 父元素运用display:flex,设置其属性justify-content.align-items都为center(display: flex; justify-content: center; align-items: center),实现水平居中flex布局+margin 父元素运用flex布局(display:flex),子元素运用margin:auto利用定位+margin:负值grid布局

绝对定位+transform:translate(-50%,-50%)

.parent{ position:relative; } .son{ position: absolute; top:50%; left:50%; transform:translate(-50%,-50%); }

行内元素

基本思想:单行文本子元素line-height 值为父元素 height 值

.parent { height: 200px; } .son { line-height: 200px; }

行内块级元素

基本思想:元素是行内块级,运用display: inline-block, vertical-align: middle+伪元素处在容器中央

.parent::after, .son{ display:inline-block; vertical-align:middle; } .parent::after{ content:; height:100%; }

利用定位+margin:auto

先上代码:

<st
回复

使用道具 举报

3005

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139185
发表于 2024-8-23 16:02:59 | 显示全部楼层
你的留言真是温暖如春,让我感受到了无尽的支持与鼓励。
回复

使用道具 举报

1

主题

996

回帖

-3

积分

限制会员

积分
-3
发表于 2024-8-27 22:11:28 | 显示全部楼层
感谢楼主的分享!我学到了很多。
回复

使用道具 举报

3081

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968831
发表于 2024-10-19 07:39:21 | 显示全部楼层
“BS”(鄙视的缩写)‌
回复

使用道具 举报

2992

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139306
发表于 2024-10-20 06:18:55 | 显示全部楼层
这夸赞甜到心里,让我感觉温暖无比。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-4 01:04 , Processed in 0.083079 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.