试图设置一个跨度的大小作为内容大小的百分比

试图设置一个跨度的大小作为内容大小的百分比

问题描述:

我想我听起来像一个简单的请求,但可能实际上很愚蠢难,但我没有在HTML中工作很长时间。试图设置一个跨度的大小作为内容大小的百分比

首先,我只需要支持IE。我理解WebKit经常是,但直到Windows Phone 7内置WebKit浏览器,我才被限制在IE浏览器中。

我有一段文字要水平进出。出于国际化的原因,我真的不想提前衡量它。我很想做的是能够设置是这样的:

<span id="parent" style="width: 50% of child's size"> 
    <span id="child">Hello, cruel world</span> 
</span> 

,并让它看起来像

Hello, cru 

任何方式做到这一点?

+0

你知道'span'有* no * child吗? – 2010-11-19 22:31:51

+0

是不是文字“你好,残酷的世界”的孩子呢? – Hounshell 2010-11-19 22:34:03

+0

不,里面的文字只是文字。孩子,父母,兄弟姐妹等参考HTML中的节点,而不是文本。例如,在JS中,如果你做了那个span的element.child,你会返回0. – 2010-11-19 22:37:09

大卫说,跨度没有孩子,你所需要做的就是将跨度设置为一个块(display:block)和50%,并且它将占用父级的50%的宽度(如果这就是你的意思),然后做overflow:hidden,它会将其剪掉50%,并且不会显示其余内容。

- UPDATE 2 -

这里是原始的JS。如果您有任何问题,请告诉我。这和我在jQuery中做的事情是一样的,但只有JS。用脚本标签将它放在一边,你应该很好走。

//Setting up vars 
$ = document; 
$parent = $.getElementById('parent'); 
$child = $.getElementById('child'); 

//Set the styles for the child 
$child.style.width = $child.offsetWidth+'px' 
$child.style.display = 'block'; 

//Set the styles for the parent 
$parent.style.width = ($child.offsetWidth*0.5)+'px' 
$parent.style.overflow = 'hidden'; 
$parent.style.display = 'block'; 
+0

我正在寻找几乎相反的。我希望它占用儿童宽度的50%[无论你想调用它] – Hounshell 2010-11-19 22:37:51

+0

你需要使用JS,但是你要调用的子元素==该元素的宽度。 (最小的方式来举一个例子是用jQuery,所以...)基本上你会做'$(this).css({width:($(this).width()/ 0.5)+'px'})'' 。然后,如果你设置它(在CSS中)显示:block;并溢出:隐藏它会隐藏它。 – 2010-11-19 22:41:12

+0

所以在上面编辑的例子?如果我想让“父”跨度为“子”跨度有效宽度的50%,我该怎么办? – Hounshell 2010-11-19 22:49:51