【发布时间】:2013-12-07 04:29:16
【问题描述】:
我正在尝试缩小另一个 div (divA) 内部的 div (divB)。问题是 divA 的高度是由它的内容指定的。当 divB 被缩小时, divA 的高度不会改变......当应用变换时会发生这种情况,因为它实际上并没有改变像素数,它会改变像素本身的大小(至少我很漂亮确定这就是正在发生的事情)。因此,简单的解决方法是手动将 divA 的高度设置为 divB 的大小乘以比例因子。
但是,如果我这样做,每次 divA 的内容发生变化时,我都需要手动重置高度。就我而言,这非常麻烦,因为 divA 的内容会有很多变化。所以,我想知道是否有更简单的方法可以做到这一点,最好使用 CSS。
这里有一个简单的 JSFiddle 来演示这个问题:http://jsfiddle.net/turtlewaxer1100/82cux/8/
只需添加一些元素,按比例缩小,您就会明白我所说的高度未调整是什么意思。如果您单击“修复高度”,那么它会正确调整高度,但是如果您添加更多元素,除非您再次修复它,否则高度不会调整...
html
<div>
<div class="wrapper">
<div id="scalar"></div>
</div>
<div class="buttons">
<div id="button">
<input type="button" value="Add" />
</div>
<div id="scaleDown">
<input type="button" value="Scale Down" />
</div>
<div id="scaleUp">
<input type="button" value="Scale Up" />
</div>
<div id="fixHeight">
<input type="button" value="Fix Height" />
</div>
</div>
</div>
css
.wrapper {
float:right;
width: 200px;
background-color: black;
}
.section {
margin-left:75px;
height: 50px;
width: 50px;
background-color: red;
}
.buttons {
float:left;
}
.scaleDown {
-webkit-transform: scale(0.75);
-moz-transform: scale(0.75);
-ms-transform: scale(0.75);
transform: scale(0.75);
-webkit-transform-origin: 50% 0 0;
-moz-transform-origin: 50% 0 0;
-ms-transform-origin: 50% 0 0;
transform-origin: 50% 0 0;
}
jquery
var section = $("<div class='section'></div>")
$(document).ready(function () {
$("#button").children().click(function () {
$("#scalar").append(section.clone(false));
});
$("#scaleDown").children().click(function () {
$("#scalar").addClass("scaleDown");
});
$("#scaleUp").children().click(function () {
$("#scalar").removeClass("scaleDown");
});
$("#fixHeight").children().click(function () {
$(".wrapper").height($("#scalar").height()*.75)
});
});
【问题讨论】:
-
不要将随机文本标记为代码,以便绕过在问题中包含代码的要求,以便发布指向 jsfiddle 的链接。相反,实际上遵守规则并添加代码。
-
这个问题类似,但我想知道是否有某种方法可以解决这个问题,而不必为每次更改 divA 的内容显式设置高度。
标签: javascript jquery html css css-transforms