css 之水平居中对齐

本文详细介绍了CSS中实现文字、元素以及复杂布局的水平和垂直居中对齐的各种方法,包括text-align属性、margin居中、子绝父相定位、flex布局和grid布局。同时提供了阮一峰大大的相关博客链接作为进一步学习资源。
摘要由CSDN通过智能技术生成

0 前言

初学css,对各种居中很是头疼,这里特地整理一下.

 

1 文字水平居中对齐及它的延伸写法

1.设置 text-align 属性 

 

例如:

 <h4 style="text-align: center;">测试标题1</h4>

具体解释:

CSS属性定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐

MDN解释地址:

https://developer.mozilla.org/zh-CN/docs/Web/CSS/text-align

总结:

1.只能用于 块级元素内容(block containers) 的行内内容(文字,行内元素,行内块元素)的居中, 对行内元素本身设置是无效的.

例如 <i style="text-align: center;">测试标题1</i> 这种写法 就不会在屏幕中居中对齐

但是 当他转换为块级元素的时候就又可以居中了 ,或者父元素是块元素且设置为居中的时候文字(行内元素)也可以居中

例如:


<!-- 下面这种是不可以居中的,因为i标签默认是行内元素,而且div 也没有设置居中 -->
<div>
    <i style="text-align: center;">测试标题1</i>
</div>
<!-- 下面两种是都可以居中的 -->
<i style="text-align: center; display: block">测试标题1</i>
<div style="text-align: center;">
     <i>测试标题1</i>
 </div>

效果图:

2.该属性会被子元素继承

例如:

   <div style="text-align: center;">
        <h4>测试标题1</h4>
    </div>

这个例子跟上图中的单h4例子效果是一样的

上图可以看到 文字的内容已经居中,但是元素并没有居中.

3.MDN中有个备注 居中元素,不居中文字 的方法 特此注明一下 防止自己忘了

备注

居中一个块元素且不居中它的行内内容的标准兼容的方法是将它的左、右margin设为auto, 例如:

margin:auto; 或margin:0 auto; 或margin-left:auto; margin-right:auto;

2 元素的水平居中

1.对于确定宽度的块级元素:

magin:margin 属性为给定元素设置所有四个(上下左右)方向的外边距属性。也就是 margin-topmargin-rightmargin-bottom,和 margin-left 四个外边距属性设置的简写

Magin:auto 让浏览器自己选择一个合适的外边距。有时,在一些特殊情况下,该值可以使元素居中。

MDN:https://developer.mozilla.org/zh-CN/docs/Web/CSS/margin

 margin和width实现水平居中:magin: 0 auto 就可以实现水平居中

注意:

这种只适合于父元素是body的时候,其他的情况下不行.

MDN中已经不推荐这种magin: 0 auto 来实现水平的方法,

2.子绝父相的设置方法

意思 是将 子元素设置为为绝对定位,让其他的父元素设置为相对定位,再将子元素的margin left 和 right 设置为 auto, left 和right 设置为 0 '

这样的话子元素就会相对于父元素进行居中对齐

代码:

  <div style="position: relative; height:100px ; background-color:rgb(143, 143, 207)">
        <div
            style="position: absolute; width: 50px; height: 50px; left:0 ;right: 0; ;margin: 0 auto; background-color: pink; ">
        </div>
    </div>

原理:

left 和right : 定义了定位元素的左/右外边距边界与其包含块左/右边界之间的偏移,非定位元素设置此属性无效。

当设置left 和 right 为 0 或者是相同数值 边距 例如 (left:1px;right: 1px) 说明左右边距的权重是一样的

margin:

注意:

1.这种布局下需要注意高度塌陷问题

2.这种写法兼容性比较好,但是比较麻烦,

3.这种写法  将 top: 0; bottom 0;  magin :auto ; 的情况下 也可以设置垂直居中

3.flex布局中的居中

关于flex 可以看下阮一峰大大的这篇博客,写的非常详细,我这里就不多废话了

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

MDN的导引地址:

https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container

设置改

  • justify-content - 控制主轴(横轴)上所有 flex 项目的对齐(一般为水平居中,主轴为横向)。
  • align-items - 控制交叉轴(纵轴)上所有 flex 项目的对齐(一般是垂直居中)。

代码

   <div style="display:flex; justify-content: center">
        <div style="width: 50px;height: 50px;background-color: pink;"></div>
    </div>

4.gird布局中居中方式

grid布局的介绍 也可以同理看下这篇博客

http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html

主要是用grid布局中的justify-items 属性

MDN中的解释

CSS 的 justify-items 属性为所有盒中的项目定义了默认的 justify-self , 可以使这些项目以默认方式沿适当轴线对齐到每个盒子。

地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/justify-items

同理用align-items  属性可以实现垂直居中

<style>  
.tb {
      display: grid;
      justify-items: center;
     }

.tb div {
            background-color: pink;
            width: 50px;
            height: 50px;
        }
</style>  

<div class="tb">
    <div></div>
</div>

 

要将CSS块级元素居中对齐,有多种方法可以实现这一目标,下面是一些常见的方法: ### 方法一:使用 Flexbox 布局 Flexbox 提供了一种简便的方式来处理布局问题,包括水平和垂直居中。 ```css .container { display: flex; justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ } ``` ### 方法二:使用 Grid 布局 Grid 布局允许你更精细地控制元素的位置。 ```css .container { display: grid; place-items: center; /* 同时水平和垂直居中 */ } ``` ### 方法三:设置 margin auto 属性 对于简单的场景,可以直接给块级元素添加 `margin: auto` 来实现水平居中。 ```css .element { width: 100px; /* 或其他宽度值 */ margin: auto; /* 自动计算上、下、左、右的外边距使其居中 */ } ``` ### 方法四:利用百分比定位 如果元素需要相对于视口居中,则可以使用 `position: relative` 和 `left: calc(50% - value / 2)` 等技巧来实现。 ```css .element { position: relative; left: calc(50% - thisWidth / 2); } ``` 这里的 `thisWidth` 需要替换成实际的元素宽度。 ### 相关问题: 1. **如何确定居中时元素的具体位置?** 当使用 Flexbox 或者 Grid 进行居中时,通常会指定容器的尺寸以及元素在其内部的位置,通过容器的属性如 `justify-content`, `align-items`, 或 `place-items` 控制元素的居中效果。 2. **在响应式设计中如何保持元素居中?** 对于响应式设计,可以结合媒体查询和上述方法,在不同屏幕尺寸下调整元素的居中策略,比如使用百分比单位而不是固定像素。 3. **使用 Flexbox 或 Grid 的优势是什么?** 使用 Flexbox 或 Grid 可以更容易地创建复杂的、自适应的布局,并简化对齐和空间管理的需求。它们提供强大的工具集来控制元素的排列和布局,使得前端开发者能够更快地构建高质量的页面。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值