如何保持div一定比例,但给它一个最大尺寸?

时间:2013-11-12 15:18:12

标签: html css

我正在尝试将div元素保持为特定比率(例如,1:2),但保持宽度小于200px。

到目前为止我得到了什么:

div {
    width: 100%;
    height: 0;
    padding-bottom: 50%;
    max-width: 200px;
}

它不起作用 - 如果我展开窗口,宽度会以200px的速度停止扩展,但高度会不断增长!

我已尝试设置box-sizing: border-boxmax-height: 100px,但都无法正常工作。

我该怎么办?

这是一个小提琴:http://jsfiddle.net/WVu3s/

2 个答案:

答案 0 :(得分:3)

这是一个基于此post代码的纯CSS解决方案,但有一些小的改动:

HTML

<div class = "box">
    <div class = "content">Ratio 1:2</div>
</div>

CSS

/* Box styles */
.box {
 width: 100%;
 position: relative;
 display: inline-block;
 max-width:200px; /* max width of the box */
}

.box:after {
    padding-top: 50%; /*1:2 ratio*/
    display: block;
    content: '';
}

/* Style that should be applied to the box content */
.content {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    background-color: green;
}

这是一个demo

答案 1 :(得分:0)

在我的情况下,问题是我想根据应用于body标签的CSS类显示两个不同的图像。我本可以只使用display:none,但我不想在上面显示它,但是那只涉及到只需要一个时就加载两者,所以我得出了这样的结论:

HTML:

<div class='arrow'>
    <img src="/img/arrow.png" style='max-width: 100%;'>
</div>

CSS:

.arrow {
  max-width: 100%;
  overflow: auto;
}

.darktheme .arrow {
  background: url(/img/arrow-darktheme.png) center no-repeat;
}
.darktheme .arrow img {
  opacity: 0;
}

它在Darktheme条件下都加载,但如果未应用darktheme,则仅加载一个。