【发布时间】:2011-07-19 22:09:25
【问题描述】:
WebKit 和 Microsoft 浏览器是否支持像 Firefox 和 Opera 那样使用 -moz-tab-size 和 -o-tab-size 属性指定标签宽度的任何方法?
例如,我希望<textarea> 中的选项卡宽度为 4 个空格:
textarea {
-moz-tab-size: 4;
-o-tab-size: 4;
/* How would I do this in Chrome, Safari, and IE? */
}
[更新:]
我创建了一个tab-size polyfill (Demo):
<script> // tab-size polyfill
var codeElements = document.getElementsByTagName('code'), // Applies to all code elements. Adjust to your needs.
codeElementCount = codeElements.length,
e = d.createElement('i');
if(e.style.tabSize !== '' && e.style.mozTabSize !== '' && e.style.oTabSize !== '') {
for(var i = 0; i < codeElementCount; i++) {
codeElements[i].innerHTML = codeElements[i].innerHTML.replace(/\t/g,'<span class="tab">	</span>');
}
}
</script>
<style>
.tab {
width: 2.5em; /* adjust to your needs */
display: inline-block;
overflow: hidden;
}
</style>
注意:这不适用于<textarea>s,但仅适用于可以包含其他元素的元素。如果浏览器确实支持tab-size,它将使用它。
【问题讨论】:
-
tab-size属性的相关规范:w3.org/TR/css3-text/#tab-size -
感谢@BoltClock!该属性在 Chrome、Safari 和 IE 中有哪些支持?
-
没有,到目前为止。我已经发布了答案。
-
bugs.webkit.org/show_bug.cgi?id=52994 - 似乎这已在 WebKit 中得到修复
-
我最近在我的一个网站上创建了这个 jQuery 插件来解决这个问题。 github.com/davestewart/jquery-plugins/tree/master/tabSize 如果可用,它使用 CSS3 属性 tab-size,但如果不可用,它正确将制表符转换为空格,包括那些不占用整个制表符宽度的制表符,也就是列。跨度>
标签: css tabs cross-browser