css - Img 未拉伸(stretch)以满足所需的纵横比

标签 css

来自 flagcdn 的 svg 标志具有不同的宽高比,我试图将它们全部变成 3/2 的宽高比,但是通过我在巴西国旗下面尝试过的 2 种方法,在侧面显示了一些空白而上方和下方有 GB 标志。我该如何修复它?

li {
  font-size: xx-large;
}

.inline-flag {
  display: inline-block;
  height: 0.9em;
  transform: translate(0, 0.15em);
  border: black 2px solid;
  aspect-ratio: 3/2;
}

div img {
  object-fit: fill;
  height: 100%;
  width: 100%;
}
<h1>without div</h1>
<ul>
  <li>
    <img class="inline-flag" src="https://flagcdn.com/fr.svg"> France
  </li>
  <li>
    <img class="inline-flag" src="https://flagcdn.com/br.svg"> Brazil
  </li>
  <li>
    <img class="inline-flag" src="https://flagcdn.com/gb.svg"> Great Britain
  </li>
</ul>

<h1>with div</h1>
<ul>
  <li>
    <div class="inline-flag"><img src="https://flagcdn.com/fr.svg"></div> France
  </li>
  <li>
    <div class="inline-flag"><img src="https://flagcdn.com/br.svg"></div> Brazil
  </li>
  <li>
    <div class="inline-flag"><img src="https://flagcdn.com/gb.svg"></div> Great Britain
  </li>
</ul>

最佳答案

您需要使用片段标识符 #svgView(preserveAspectRatio(none)) 覆盖 SVG 的宽高比加载时,例如

https://flagcdn.com/br.svg#svgView(preserveAspectRatio(none))    

有关片段标识符的更多信息可以在这里找到:https://www.w3.org/TR/SVG11/linking.html#LinksIntoSVG

工作示例

li {
    font-size:xx-large;
}

.inline-flag {
  display: inline-flex;
  width: 60px;
  height: 25px;
  border: black 2px solid;
  overflow: hidden;
}

.inline-flag > img {
  flex: 1;
  width: 100%;
  height: 100%;
}
<ul>
    <li>
        <div class="inline-flag">
            <img src="https://flagcdn.com/fr.svg#svgView(preserveAspectRatio(none))">
        </div>
        France
    </li>
    <li>
        <div class="inline-flag">
          <img src="https://flagcdn.com/br.svg#svgView(preserveAspectRatio(none))">
        </div>
        Brazil
    </li>
    <li>
        <div class="inline-flag">
          <img src="https://flagcdn.com/gb.svg#svgView(preserveAspectRatio(none))">
        </div>
        Great Britain
    </li>
</ul>

关于css - Img 未拉伸(stretch)以满足所需的纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76201000/

相关文章:

html - Css flex-box - 如何将单个元素对齐到底部,同时将其他元素保持在顶部

css - Html <div> 元素背景图像不显示,div 内也没有任何内容

HTML - 如果单击文本,自定义单选按钮不会切换

html - 如何在文本和单选按钮之间添加空格?

html - Bootstrap 主题中带有 CSS 的标题图像总是变回默认值

javascript - 使用 mouseover 和 mouseout 时避免抖动动画

html - 想要使用 CSS 在所有内容之上制作文本

javascript - 页面加载后如何启动webkit动画?

html - Safari 中的 Flex 元素溢出容器

javascript - 用 CSS 生成的图像替换输入字段中的文本