十九、CSS 布局之元素垂直对齐方式

浏览器 文字类型 元素排版中,存在用于对齐的 基线 ,一般情况下,默认是基线对齐,这就会产生一些元素对不齐、有缝隙之类的问题,面对这些问题,我们可以用垂直对齐方式来解决。

垂直对齐方式

我们在设置图文样式的时候,可以发现,当图片和文字在一行中显示时,其实它们的底部是不对齐的,对于这类问题,可以用 垂直对齐 方式来解决。

垂直对齐方式可以解决 行内 / 行内块 元素的垂直对齐问题,其属性名是 vertical-align,它有 4 个属性值:

  • baseline :基线对齐,默认值
  • top :顶部对齐
  • middle :中部对齐
  • bottom :底部对齐

项目中 vertical-align 可以解决的问题

(1)文本框和表单按钮无法对齐问题

可以看到下例中,搜索按钮稍微有点上移,与输入框没有对齐:

HTML 复制代码
  <body>
    <input type="text" />
    <input type="button" value="搜索" />
  </body>
  
      <style>
      input {
        height: 60px;
        box-sizing: border-box;
      }
    </style>

在上例基础上,给元素设置垂直对齐方式:中部对齐

HTML 复制代码
  <body>
    <input type="text" />
    <input type="button" value="搜索" />
  </body>
  
    <style>
      input {
        height: 60px;
        box-sizing: border-box;
        vertical-align: bottom;
      }
    </style>

(2)input 系列和 img 图片无法对齐问题

HTML 复制代码
  <body>
    <img src="./beijing1.jpeg" alt="">
    <input type="text" />
  </body>
  
   <style>
      input {
        height: 60px;
        box-sizing: border-box;
      }
      img{
        width: 120px;
        height: 120px;
      }
    </style>

给 img 标签设置垂直对齐:以底部垂直为例

HTML 复制代码
  <body>
    <img src="./beijing1.jpeg" alt="">
    <input type="text" />
  </body>

    <style>
      input {
        height: 60px;
        box-sizing: border-box;
      }
      img{
        width: 120px;
        height: 120px;
        vertical-align: bottom;
      }
    </style>

(3)div 中的文本框无法贴顶问题

HTML 复制代码
    <style>
      div {
        width: 240px;
        height: 80px;
        background-color: rgb(51, 242, 30);
      }
    </style>

  <body>
    <div>
      <input type="text" />
    </div>
  </body>

给输入框设置垂直对齐方式:顶部对齐

HTML 复制代码
    <style>
      div {
        width: 240px;
        height: 80px;
        background-color: rgb(51, 242, 30);
      }
      input{
        vertical-align: top;
      }
    </style>
  </head>
  <body>
    <div>
      <input type="text" />
    </div>
  </body>

(4)div 不设置高度,由图片撑开,此时图片标签下面会存在额外间隙问题

HTML 复制代码
    <style>
      div {
        width: 240px;
        background-color: rgb(51, 242, 30);
      }
      img{
       width: 100px;
       height: 100px;
      }
    </style>
  </head>
  <body>
    <div>
      <img src="./beijing1.jpeg" alt="背景">
    </div>
  </body>

给图片设置垂直对齐方式:中间对齐

HTML 复制代码
    <style>
      div {
        width: 240px;
        background-color: rgb(51, 242, 30);
      }
      img{
        vertical-align: middle;
        width: 100px;
        height: 100px;
      }
    </style>
  </head>
  <body>
    <div>
      <img src="./beijing1.jpeg" alt="背景">
    </div>
  </body>

浏览器会把行内标签和行内块标签当作文字处理,默认是基线对齐,对于上面的示例,还可以将图片标签转换成块级标签来实现,效果相同:

(5)使用行内高让图片标签居中问题

HTML 复制代码
    <style>
      div {
        width: 240px;
        height: 200px;
        line-height: 200px;
        background-color: rgb(51, 242, 30);
      }
      img {
        width: 100px;
        height: 80px;
      }
    </style>
  </head>
  <body>
    <div>
      <img src="./beijing1.jpeg" alt="背景" />
    </div>
  </body>

给图片设置垂直对齐方式:中间对齐

HTML 复制代码
    <style>
      div {
        width: 240px;
        height: 200px;
        line-height: 200px;
        background-color: rgb(51, 242, 30);
      }
      img {
        vertical-align: middle;
        width: 100px;
        height: 80px;
      }
    </style>
  </head>
  <body>
    <div>
      <img src="./beijing1.jpeg" alt="背景" />
    </div>
  </body>

(6)水平、垂直都居中

HTML 复制代码
    <style>
      div {
        text-align: center;
        width: 240px;
        height: 200px;
        line-height: 200px;
        background-color: rgb(51, 242, 30);
      }
      img {
        vertical-align: middle;
        width: 100px;
        height: 80px;
      }
    </style>
  </head>
  <body>
    <div>
      <img src="./beijing1.jpeg" alt="背景" />
    </div>
  </body>
相关推荐
ZzMemory2 小时前
深入了解 module.css:前端样式管理的有效方案
前端·css·面试
Dream耀7 小时前
CSS过渡 vs 动画:都有哪些技巧
前端·css
拾光拾趣录20 小时前
Flexbox 布局:从“垂直居中都搞不定”到写出响应式万能布局
前端·css
编程猪猪侠1 天前
Tailwind CSS 自定义工具类与主题配置指南
前端·css
Sherry0071 天前
CSS Grid 交互式指南(译)(下)
css·面试
Hilaku1 天前
深入background-image:你可能不知道的几个性能优化与高级技巧
前端·css
睡不着先生1 天前
CSS `@scope` 实战指南:开启局部样式隔离新时代
css
gnip1 天前
实现elementplus官网主题切换特效
前端·css
前端老鹰1 天前
CSS scroll-snap-type:让滚动定位精准如 “自动吸附” 的魔法
前端·css
涔溪2 天前
响应式前端设计:CSS 自适应布局与字体大小的最佳实践
前端·css