css水平居中的5种几种方式

简介: css水平居中的5种几种方式

元素水平居中的第一种方式 子元素不需要宽度也可以

<div class="box">
    <div class="son"> 我是内容 </div>
</div>
.box {
    width: 500px;
    height: 300px;
    background: pink;
}
.son {
    width: 300px;
    margin: auto;
    text-align: center;
    background: red;
}
使用的是margin:auto
这样在水平方向上就可以居中了

margin: 100px auto 注意点:

有的小伙伴说:想要上下有一点的间距
可以使用 margin: 100px auto;
但是使用之后,我们发现了一些小的问题。
从上面效果图可以发现:两个盒子同时向下移动。
这种情况并不是我们想要的。
出现是由 margin塌陷导致的
如何解决这种问题呢?
可以将父元素box变为BFC:overflow: hidden; [ 注意不是超出隐藏的作用 ]

position + left:50% + margin-left:-px 第二种 子元素需要宽度

<div class="box">
    <div class="son"> 我是内容 </div>
</div>
.box {
    width: 500px;
    height: 300px;
    background: pink;
    position: relative;
}
.son {
    width: 300px;
    background: red;
    position: absolute;
    text-align: center;
    left: 50%;
    /* 当前盒子的一半 */
    margin-left: -150px;
}

注意点 left: 50%和 margin-left的区别

扩展点设置left: 50%;并不能实现水平居中的效果:
它是相对父级元素。【相对于父元素box的宽度】
margin-left它是相对自己的宽度。【相对于自己son的宽度】

定位 position + left+ translateX(-50%) 推荐 子元素不要宽度也可以

<div class="box">
    <div class="son"> 我是内容 </div>
</div>
.box {
    width: 500px;
    height: 300px;
    background: aquamarine;
    position: relative;
}
.son {
    width: 300px;
    text-align: center;
    background: pink;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

父text-align:center + 子display:inline-block 子元素不要宽度也可以

<div class="box">
    <div class="son"> 我是内容 </div>
</div>
.box {
    width: 500px;
    height: 300px;
    background: aquamarine;
    text-align: center;
}
.son {
    width: 300px;
    text-align: center;
    background: pink;
    display: inline-block;
}
注意点:
如果仅使用 text-align:center; 是无法达到水平居中的效果的,为什么?
text-align:center; 需要在行内块元素上使用的,
而盒子是块级元素,所以。
需要将盒子转换为行内块元素 text-align:center; 才能生效。

弹性布局:display:flex; [推荐] 子元素不要宽度也可以

<div class="box">
    <div class="son"> 我是内容 </div>
</div>
.box {
    width: 500px;
    height: 300px;
    background: aquamarine;
    display: flex;
    justify-content: center;
}
.son {
    width: 300px;
    text-align: center;
    background: pink;
}

遇见问题,这是你成长的机会,如果你能够解决,这就是收获。

相关文章
|
前端开发
CSS水平居中与垂直居中的方法
CSS水平居中与垂直居中的方法
|
前端开发 UED
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
799 5
|
前端开发 容器
css 中可以让文字在垂直和水平方向上重叠的两个属性是什么?
css 中可以让文字在垂直和水平方向上重叠的两个属性是什么?
124 1
|
前端开发 C++ 容器
CSS【详解】居中对齐 (水平居中 vs 垂直居中)
CSS【详解】居中对齐 (水平居中 vs 垂直居中)
273 0
|
前端开发
css flex布局两个元素水平居中垂直居中
css flex布局两个元素水平居中垂直居中
288 1
|
前端开发 容器
css 中可以让文字在垂直和水平方向上重叠的两个属性是什么?
css 中可以让文字在垂直和水平方向上重叠的两个属性是什么?
|
人工智能 前端开发 开发者
Baidu千帆大模型赋能——CSS控制DIV垂直水平居中——送给大一的孩子们,学会用AI思维来帮助你解决问题
Baidu千帆大模型赋能——CSS控制DIV垂直水平居中——送给大一的孩子们,学会用AI思维来帮助你解决问题
161 1
|
前端开发 容器
css中元素水平居中的方式
css中元素水平居中的方式
141 0
|
前端开发
CSS div 水平排列
CSS div 水平排列
244 0
|
前端开发
css设置div水平居中
css设置div水平居中

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 5
    React 中如何安装与使用 Tailwind CSS
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
  • 9
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation