iOS中textarea上的Shadow DOM强制填充

时间:2014-02-21 13:34:22

标签: html ios css mobile-safari shadow-dom

我遇到了一个令我困惑的问题。

我对此问题的参考是Mac上的Chrome 32和iOS 7.0.4上的Safari。

在以下示例中,Chrome会将.backgroundtextarea元素中的文字完美呈现在彼此之上,这就是我想要的。但iOS上的Safari会以{3}像素为单位抵消textarea中的文本。虽然填充,边框和边距在两个元素上设置为相同的值,但会发生这种情况。

当我在Safari的开发者工具中调试时,无论是通过我的iPhone设备还是iOS模拟器,在概述元素指标时,元素本身都能完美对齐。

Metrics outline on iOS

标记

<div class="container">
    <div class="background">This is a test</div>
    <textarea>This is a test</textarea>
</div>

CSS

.container {
    border: 1px solid #cdcdcd;
    background: #f0f0f0;
    width: 400px;
    height: 50px;
    position: relative;
    margin: 24px 0;
}

.background {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    color: #f00;
}

textarea {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    background: transparent;
    border: 0;
    position: relative;
    z-index: 2;
}

演示:http://jsfiddle.net/Y8S5E/2/

对于这个问题,有人可以提供解决方案或一些理论来研究吗?

修改

这似乎是textarea的shadow DOM节点的问题。有没有人提到如何定义这个元素的填充?百分比值或硬3px值?有没有办法删除这个填充?

Shadow DOM node forces padding in textarea

1 个答案:

答案 0 :(得分:5)

不幸的是,我不认为你不能在iOS中的Shadow DOM内部设置样式。有些元素会暴露您可以挂钩的伪属性。例如,<input type="range">公开了-webkit-slider-runnable-track伪元素。

http://codepen.io/robdodson/pen/FwlGz

您可以在开发工具中看到这一点。

enter image description here

但我不认为textarea暴露了这样的事情。