【问题标题】:Shadow DOM on textarea in iOS forces paddingiOS中textarea上的Shadow DOM强制填充
【发布时间】:2014-03-23 01:19:19
【问题描述】:

我遇到了一个让我有点困惑的问题。

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

在下面的示例中,Chrome 将 .backgroundtextarea 元素中的文本完美地呈现在彼此之上,这就是我想要的。不过,iOS 上的 Safari 将 textarea 中的文本偏移了 3 个像素单位。尽管填充、边框和边距在两个元素上设置为相同的值,但仍会发生这种情况。

当我通过我的 iPhone 设备和 iOS 模拟器在 Safari 的开发人员工具中进行调试时,元素本身在概述元素指标时完美对齐。

标记

<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 的影子 DOM 节点的问题。有没有人对如何定义这个元素的填充有一些参考?百分比值还是硬 3px 值?有什么办法可以去掉这个填充?

【问题讨论】:

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


【解决方案1】:

不幸的是,我认为您不能在 iOS 的 Shadow DOM 中设置样式。一些元素公开了您可以挂钩的伪属性。例如,&lt;input type="range"&gt; 公开了一个 -webkit-slider-runnable-track 伪元素。

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

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

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

【讨论】:

  • 不,看起来不是这样。我不确定这是否应该被视为 Mobile Safari 中的错误?
  • 我想如果他们暴露一个伪属性会很好。不知道他们为什么选择不这样做。这可能是疏忽,也可能是出于安全原因。
  • 同意。这似乎不正确。为什么那里有填充物?
猜你喜欢
  • 2017-04-18
  • 1970-01-01
  • 2019-04-05
  • 2016-06-29
  • 2017-09-02
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多