6hz7vif 发表于 2024-6-30 05:16:09

CSS垂直居中的七个办法


    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">咱们</span>在编辑一个版面,<span style="color: black;">一般</span>都会用到水平居中和垂直居中来设计,而水平居中很好处理,不外乎<span style="color: black;">便是</span>设定margin:0 auto;或是text-align:center;,就<span style="color: black;">能够</span><span style="color: black;">容易</span><span style="color: black;">处理</span>掉水平居中的问题,但<span style="color: black;">始终</span><span style="color: black;">败兴</span>最麻烦对齐问题,都是“垂直居中”这个讨人厌的设定,以下将介绍七种单纯利用CSS垂直居中的方式。</p>
    <h2 style="color: black; text-align: left; margin-bottom: 10px;">七种垂直居中的<span style="color: black;">办法</span></h2>设定行高(line-height)添加伪元素calc动态计算<span style="color: black;">运用</span>表格或假装表格transform绝对定位<span style="color: black;">运用</span>Flexbox<h2 style="color: black; text-align: left; margin-bottom: 10px;">设定行高(line-height)</h2>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">设定行高是垂直居中最简单的方式,适用于“单行”的“行内元素”(inline、inline-block),例如单行的标题,或是<span style="color: black;">已然</span>设为inline-block属性的div,若将line-height设成和高度<span style="color: black;">同样</span>的数值,则内容的行内元素就会被垂直居中,<span style="color: black;">由于</span>是行高,<span style="color: black;">因此</span>会在行内元素的上下都加上行高的1/2,<span style="color: black;">因此</span>就垂直居中了!<span style="color: black;">不外</span>由此就<span style="color: black;">能够</span>看出,<span style="color: black;">为何</span><span style="color: black;">必要</span>要单行的行内元素,<span style="color: black;">由于</span><span style="color: black;">倘若</span>多行,第二行与<span style="color: black;">第1</span>行的间距会变超大,就不是<span style="color: black;">咱们</span>所期望的效果了。CSS示例:</p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://pic1.zhimg.com/80/v2-7fcebe217dc284aa8c5b4dcc1c7fccdc_720w.webp" style="width: 50%; margin-bottom: 20px;"></div>
    <div style="color: black; text-align: left; margin-bottom: 10px;">.div0{
      width:200px;
      height:150px;
      border:1px solid #000;
      line-height:150px;
      text-align:center;
      }
      .redbox{
      display:inline-block;
      width:30px;
      height:30px;
      bac<span style="color: black;">公斤</span>round:#c00;
      }</div>
    <h2 style="color: black; text-align: left; margin-bottom: 10px;">添加伪元素(::before、::after)</h2>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">刚才</span><span style="color: black;">第1</span>种<span style="color: black;">办法</span>,虽然是最简单的<span style="color: black;">办法</span>(适用于单行标题),<span style="color: black;">不外</span><span style="color: black;">便是</span>只能单行,<span style="color: black;">因此</span><span style="color: black;">咱们</span><span style="color: black;">倘若</span>要让多行的元素<span style="color: black;">亦</span><span style="color: black;">能够</span>垂直居中,就<span style="color: black;">必要</span>要<span style="color: black;">运用</span>伪元素的方式。<span style="color: black;">这里</span>之前,先解释一下CSS里头vertical-align这个属性,这个属性虽然是垂直居中,<span style="color: black;">不外</span>却<span style="color: black;">指的是</span>在元素内的所有元素垂直位置互相居中,并不是相<span style="color: black;">针对</span>外框的高度垂直居中。(下面的CSS会<span style="color: black;">导致</span>这种样子的垂直居中)</p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://pic1.zhimg.com/80/v2-eababa762e8848f9de2b5733e6b333d4_720w.webp" style="width: 50%; margin-bottom: 20px;"></div>
    <div style="color: black; text-align: left; margin-bottom: 10px;">.div0{
      width:200px;
      height:150px;
      border:1px solid #000;
      text-align:center;
      }
      .redbox{
      width:30px;
      height:30px;
      bac<span style="color: black;">公斤</span>round:#c00;
      display:inline-block;
      vertical-align:middle;
      }
      .greenbox{
      width:30px;
      height:60px;
      bac<span style="color: black;">公斤</span>round:#0c0;
      display:inline-block;
      vertical-align:middle;
      }
      .bluebox{
      width:30</div>




星☆雨 发表于 2024-8-27 01:38:47

感谢楼主的分享!我学到了很多。

j8typz 发表于 2024-10-22 04:49:04

你的见解真是独到,让我受益匪浅。

j8typz 发表于 2024-10-27 17:17:49

我完全赞同你的观点,思考很有深度。
页: [1]
查看完整版本: CSS垂直居中的七个办法