css 水平垂直居中 & vertical-align

前言:这是笔者学习之后自己的理解与整理。如果有错误或者疑问的地方,请大家指正,我会持续更新!

已知宽度的元素居中

  

  position定位 + margin负值

  绝对定位 + 4个方向全部`0px` + `margin:auto` 可以做到基于父容器水平垂直居中。
  绝对定位 + 左50% + margin-left:宽度一半的负值,可以做到水平居中,右也可以。
  绝对定位 + 上50% + margin-top:高度一半的负值,可以做到垂直居中,底部也可以。
复制代码
  <style type="text/css">
    * {
      padding: 0;
      margin: 0;
    }

    .wrapper {
      width: 500px;
      height: 500px;
      background: #f90;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      position: absolute;
      margin: auto;
      /*绝对定位 + 4个方向全部0px + margin:auto 可以做到基于父容器水平垂居中*/
      /*如果只需要垂直居中,那可以把left和right删掉,并且水平居中的方法也很多*/
    }

    .content {
      width: 100px;
      height: 200px;
      background: #0f8;
      position: absolute;
      /*position: absolute基于第一个不是position:static的父级元素定位*/
      left: 50%;
      top: 50%;
      margin-left: -50px;
      margin-top: -100px;
      /*绝对定位 + 左50% + margin左:宽度一半的负值 可以做到水平居中  右也可以*/
      /*绝对定位 + 上50% + margin上:高度一半的负值 可以做到垂直居中  底部也可以*/
    }
  </style>

  <div class="wrapper">
    <span class="content"></span>
  </div>
复制代码

 

未知宽度的元素居中

position定位 + transform:translate(-50%,-50%)
复制代码
  <style type="text/css">
    * {
      padding: 0;
      margin: 0;
    }

    .wrapper {
      width: 500px;
      height: 500px;
      background: #f90;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      position: absolute;
      margin: auto;
      /*绝对定位 + 4个方向全部0px + margin:auto 可以做到基于父容器水平垂居中*/
      /*如果只需要垂直居中,那可以把left和right删掉,并且水平居中的方法也很多*/
    }

    .content {
      width: 100px;
      height: 200px;
      background: #0f8;
      position: absolute;
      /*position: absolute基于第一个不是position:static的父级元素定位*/
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      /*transform变化、使...变形、转换;transform属性应用于元素的2D或3D转换。这个属性允许你将元素移动,旋转,缩放,倾斜*/
      /*translate平移,是transform的属性值的一部分*/
      /*transition过渡、转变;可多个样式的变换效果*/
    }
  </style>
  <div class="wrapper">
    <span class="content"></span>
  </div>
复制代码

 

`div`中`img`图片垂直居中

  可以用`vertical-align:middle`,但是这个属性只有在`inline-block`类型(`inline`也有影响)的元素身上起作用。

  
方法一:图片`vertical-align:middle` + 父元素的`height`与`line-height`一致

复制代码
  <style type="text/css">
    * {
      padding: 0;
      margin: 0;
    }

    .wrapper {
      height: 300px;
      line-height: 300px;
      width: 300px;
      margin: 100px auto;
      background: #f90;
      text-align: center;
    }

    .wrapper img {
      width: 150px;
      vertical-align: middle;
    }
  </style>
  <div class="wrapper">
    <img src="images/1.jpg" alt="美女" title="美女" />
  </div>
复制代码

 

方法二:父元素设置`display:table-cell和vertical-align`
复制代码
  <style type="text/css">
    * {
      padding: 0;
      margin: 0;
    }

    .wrapper {
      width: 300px;
      height: 300px;
      background: #f90;
      text-align: center;
      vertical-align: middle;
      display: table-cell;
    }

    .wrapper img {
      width: 150px;
    }
  </style>
  <div class="wrapper">
    <img src="images/1.jpg" alt="美女" title="美女" />
  </div>
复制代码

 

posted @   快乐锁  阅读(777)  评论(2编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示
显示目录
目录
[1]已知宽度的元素居中[2]未知宽度的元素居中[3]`div`中`img`图片垂直居中