我有一种情况,我认为使用'em'度量标准是完美的。我有一个里面有几个元素的容器。这些元素都使用em来表示尺寸,字体大小,边框等等。我希望能够通过简单地更改父容器的em值来动态增大或缩小所有这些元素。使用em调整所有包含JavaScript元素的元素
至少这是我的理论。我试图用jQuery实现这样的东西,但它似乎将所有内容都转换为px,并且更改em对子元素没有影响。
下面是一个例子:
<div id="parent">
<div class="child">Text</div>
<div class="child">Text</div>
<div class="child">Text</div>
</div>
<style>
#parent { font-size: 1em; }
.child { width: 10em; height: 10em; font-size: 5em; }
</style>
使用JavaScript(jQuery的这个例子),我希望能够做这样的事情:
$('#parent').css('font-size', '2em') // This would make everything grow
$('#parent').css('font-size', '.5em') // This would make everything shrink
这条线不会产生错误。但是,进一步检查后,似乎所有内容都已转换为px值。因此,父母的价值观失去了力量。这里是我的意思是:在页面呈现
后,我通过Firebug控制台
$('#parent').css('font-size'); // Returns 100px (for example's sake)
$('.child:first').css('font-size'); // Returns 50px
$('#parent').css('font-size', '2em'); // This should affect all children
$('#parent').css('font-size'); // Returns 20px
$('.child:first').css('font-size'); // STILL Returns 50px
运行这些命令,你可以看到,所有的孩子都保持在50像素。
我对此有何看法?我错过了什么?这真的比我想象的难得多吗?从某种意义上说,我试图重复浏览器缩放的效果。
感谢您的任何帮助。
但是是多米诺骨牌效应不可能?我必须对所有需要的样式规则(宽度,高度,字体大小,边框等)的所有孩子使用此技术。我猜想递归遍历是可能的,但我希望避免这样的事情。 – 2009-06-29 00:24:23