解决css图片下方出现空白

120 阅读1分钟

在测试css新单位vminvmax的时候,发现图片刚好占满视口高度的时候,右边竟然出现了滚动条。下面简单分析一下:

1. 案例复现

image-20231121213848630

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    *{
      margin: 0;
      padding: 0;
    }
    body{
      box-sizing: border-box;
      border: 1px solid green;
    }
    img{
      box-sizing: border-box;
      border: 1px solid red;
      width: 100vmin;
      height: 100vmin;
    }
  </style>
</head>
<body>
<img src="https://picsum.photos/2000/3000"/>
</body>
</html>

2. 出现空白的原因

参考这篇文档,由于<img>默认是inline的,所以默认是vertical-align: baseline,知道了问题,解决起来就很简单了。

image-20231121214813817

3. 解决方案

方案一: 修改vertical-align的值

img{
  vertical-align: middle;
}

方案二: 将img元素变为block

img{
  display:block;
}

注意:方案将img元素变为块元素,可能会导致布局上的改变。