CSS - 根据宽度设置高度

5

我能否使用宽度来设置CSS中的高度?这是我现在拥有的:

width: 22.5%;
height: width*2.25;
background: #fff url("images/image_bg.png");
background-repeat: no-repeat; 
background-size: cover;
border: 0.5px solid #ddd;
标签的宽度始终相同,但高度有微小差异,导致其背景不完全适合。如果可以设置高度随宽度缩放,那就太完美了。
1个回答

8

填充
...
百分数:参考包含块的宽度
http://www.w3.org/TR/CSS2/box.html#propdef-padding-right

填充属性的一个鲜为人知但非常有用的技巧是,如果提供的值是百分比,则计算出的值将是所包含块的宽度的百分比。

要保持宽高比不变,请使用padding-bottom: X%

  • 如果您想要高度宽度相同,并且宽度设置为所包含块的25%,则应在元素上设置padding-bottom: 25%

  • 如果您想要高度宽度的一半,并且宽度是所包含块的25%,则应设置padding-bottom: 12.5%

  • 如果您想要高度宽度2.25倍,并且宽度22.5%,则将该百分比乘以2.25,得到56.25%,然后应用该百分比,例如
    padding-bottom: 56.25%

#keep-ratio {
  width: 22.5%; /* 22.5% of the parent's width*/
  padding-bottom: 56.25%; /* (25% of the parent's width) * 2.25 */
  background: #fff url("//lorempixel.com/400/400");
  background-repeat: no-repeat; 
  background-position: center center;
  background-size: cover;
  border: 0.5px solid #ddd;
}
<div id="keep-ratio"></div>


1
我知道这个技巧,但你是第一个准确指出标准的人,谢谢。 - intijk
@intijk 你可能会对这个关于该主题的标准问题失败尝试感兴趣。 - user4639281
我看到了这个。我尝试了padding-top的操作,但不同的浏览器在操作状态变得复杂时有不同的反应,所以最终我使用了JavaScript来实现我的目的。 - intijk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接