【修真院小课堂】css中有哪些方法可以实现垂直居中?

本文介绍了多种CSS实现垂直居中的方法,包括单行文本、多行文本、div块级元素等场景下的解决方案,如使用line-height、display: table-cell、transform、flex布局等。

大家好,我是IT修真院武汉分院学员曾健,一枚正直纯洁善良的WEB程序员
今天给大家分享一下,修真院官网前端任务8,深度思考中的知识点——css中有哪些方法可以实现垂直居中?

1.背景介绍

在前端开发过程中,盒子居中是常常用到的。其中 ,居中又可以分为水平居中和垂直居中。水平居中是比较容易的,直接设置元素
margin: 0 auto就可以实现但是垂直居中相对来说是比较复杂一些的。

2.知识剖析

垂直居中就是竖直居中,下面让我们一起来讨论一下垂直居中的方法。

3.常见问题

css有哪些方法可以实现垂直水平居中?

4.解决方案

1.单行文本垂直居中的方法

该方法适用于情况比较简单的单行文本,只需要简单的把line-height设置为那个对象的height值

就可以使文本居中了。

2.多行文本的垂直居中方法

2.1给父级元素设置属性display:table-cell和vertical-align:middle。

2.2多行内容居中,且容器高度可变。也很简单,给出一致的padding-bottom和padding-top。

3.div垂直居中:inline-block

给元素设置display:inline-block配合vertical-align:middle来居中。

4.div垂直居中:绝对定位之margin:auto

父元素相对定位,子元素绝对定位。子元素上下左右均设置为0,并且设置margin:auto。

5.div垂直居中:绝对定位之trastranslate

css3的兴起。使得垂直居中有了更好的解决办法,就是使用transform。transform中translate偏移的百分比

值是相对于自身大小的

6:div垂直居中:flex

 给父元素设置display:flex,后在设置align-items:center表示让子元素垂直居中。

5.编码实战
6.拓展思考

使用writing-mode实现垂直居中

取值:vertical-rl:垂直方向自右而左的书写方式。

          vertical-lr:垂直方向自左而右的书写方式。

                    

7.参考文献

1.盘点8种css实现垂直居中水平居中的绝对定位居中技术

2.纯css实现垂直居中的几种方法

3.改变css世界纵横规则的writing-mode属性

8.更多讨论

问:还有更多实现垂直居中的方法吗?

答:display:inline-block,通过:after来占位,代码如下


问:怎么实现水平居中?

答:使用margin:auto来实现,该方法需要指定宽度

      使用text-align和inline-block实现

      使用绝对定位实现

问:怎么实现垂直水平居中?

答:使用display:inline-block,text-align,vertical-align实现


利用绝对定位实现


利用flex实现


  技能树.IT修真院   
        “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

          这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

                                         快来与我一起学习吧~http://www.jnshu.com/login/1/20654713





下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值