【问题标题】:Trying to set the size of a span as a percentage of size of contents尝试将跨度的大小设置为内容大小的百分比
【发布时间】:2010-11-20 08:12:17
【问题描述】:

我想我有一个听起来很简单但实际上很难做到的愚蠢请求,但我已经很长时间没有在 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

有什么方法可以做到这一点?

【问题讨论】:

  • 你知道span没有个孩子吗?
  • 文字“你好,残酷的世界”不是它的孩子吗?
  • 不,里面的文字只是文字。子、父、兄弟等引用 HTML 中的节点,而不是文本。例如,在 JS 中,如果你做了那个 span 的 element.child,你会返回 0。
  • 编辑以在文本周围创建一个子跨度

标签: html css internet-explorer


【解决方案1】:

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

-- 更新 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';

【讨论】:

  • 我正在寻找几乎相反的情况。我希望它占据孩子宽度的 50% [随便你怎么称呼它]
  • 您需要使用 JS,但是您所称的孩子 == 该元素的宽度。 (举个例子的最简单的方法是使用 jQuery 所以......)基本上你会做$(this).css({width:($(this).width()/0.5)+'px'})。然后,如果你将它(在 CSS 中)设置为 display:block;和溢出:隐藏它会隐藏它。
  • 所以在上面的编辑示例中?如果我希望“父”跨度为“子”跨度有效宽度的 50%,我该怎么办?
  • 在上面添加了一个包含很多 cmets 的示例。希望能帮助到你!另外,因为这是 JS/jQuery,所以它在页面加载后才会运行,所以你不必担心像你说的那样事先计算它。
  • 貌似没错,但是我不懂jQuery。你介意翻译一下吗?
猜你喜欢
  • 2019-01-11
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多