【发布时间】:2013-04-10 16:41:13
【问题描述】:
我正在尝试在 HTML/Javascript 中实现以下目标:
- 有一个彩色圆圈,其中有一段文本完全居中(水平和垂直);
- 通过 JavaScript 动态地改变圆圈的大小,始终保持文本居中。
以下实现了其中的第一个:
- 使用样式具有适当背景和边框半径的 DIV 元素创建圆;
- 在DIV中,放置一个P元素,其样式为“text-aligbn: center”和“line-height:”。
例如:
p.circlecaption {
text-align: center;
line-height: 128px;
}
...
<div style="background: #a0a0a0; margin: 0px; width: 128px;
height: 128px; border-radius: 64px;" id="theCircleDiv">
<p class="circlecaption" id="theText">TEST!</p>
</div>
这适用于初始的静态案例。当我尝试从 JavaScript 设置 line-height 属性以在更改 div 的大小时保持文本垂直居中时,问题就出现了。我希望类似以下的工作:
var obj = document.getElementById('theCircleDiv');
var sz = '' + (rad*2) + 'px';
obj.style.width = sz;
obj.style.height = sz;
obj.style.margin = '' + (64 - rad) + 'px';
obj = document.getElementById('theText');
obj.style['line-height'] = sz;
然而,虽然这段代码完美地重新调整了圆的大小和中心,但它并没有将文本垂直重新居中 - 即动态设置行高的尝试似乎被忽略了。
任何人都可以就如何动态设置行高或实现我想要的将文本保持在圆圈内居中的目标提供任何帮助吗?从我的阅读中,我看到了其他各种建议,例如调用属性“lineHeight”或使用“vertical-align:middle”,但似乎没有一个有效。
(我目前正在 Mac OS 上的 Safari 中进行测试,这可能是该网站的目标受众最常用的,但我也在寻找一种合理地跨浏览器兼容的解决方案。)
【问题讨论】:
-
这是一种对我有用的方法:jsfiddle.net/HKByH 但你没有用 jquery 标记这个问题,所以我很犹豫是否将它作为答案提交。
-
在那里,我将 jQuery 从调整大小中取出(将其保留在滑块中,以便您可以看到它工作)
标签: javascript css