webkit-appearance 的样式来自哪里?
Where are the styles for webkit-appearance coming from?
我了解 -webkit-appearance
属性 背后的基本思想以及它如何将 platform-native 样式应用于元素。但是我不明白这些 platform-native 样式是在哪里定义的。我认为它们可能在用户代理样式表中,但没有样式可以使 <input type="date" />
在移动版 Safari 中看起来像这样:
You can view the user agent stylesheet of Safari here 不包括(据我所知)使用日期渲染类型进行输入的样式,如上图所示。
大部分样式似乎是通过用户代理样式表中的单个 CSS 属性 完成的,即:
-webkit-appearance: menulist-button;
这极大地改变了移动 Safari 上输入的视觉输出,使其看起来像示例图像。
如果不是来自用户代理样式表,这些样式来自哪里?
经过大量调查和深入研究 Webkit 源代码后,我找到了答案。
在基于 Webkit 的浏览器的上下文中,应用了 appearance
CSS 属性 的元素 不会 接收它们的 平台原生样式 来自浏览器的用户代理样式表。这些样式在 renderTheme
文件中的 UA 样式表之外定义,该文件是 Webkit 引擎内部的一部分。
例如,您可以找到我在此处定义的原始问题中要求的样式:https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/rendering/RenderThemeIOS.mm#L623
分解这一切:在移动版 Safari 中,<input type="date" />
从 Safari 的用户代理样式表接收 -webkit-appearance: menulist-button
。 -webkit-appearance: menulist-button
应用的附加样式 在用户代理样式表 is defined within a renderTheme
file of Webkit.
中不是
我了解 -webkit-appearance
属性 背后的基本思想以及它如何将 platform-native 样式应用于元素。但是我不明白这些 platform-native 样式是在哪里定义的。我认为它们可能在用户代理样式表中,但没有样式可以使 <input type="date" />
在移动版 Safari 中看起来像这样:
You can view the user agent stylesheet of Safari here 不包括(据我所知)使用日期渲染类型进行输入的样式,如上图所示。
大部分样式似乎是通过用户代理样式表中的单个 CSS 属性 完成的,即:
-webkit-appearance: menulist-button;
这极大地改变了移动 Safari 上输入的视觉输出,使其看起来像示例图像。
如果不是来自用户代理样式表,这些样式来自哪里?
经过大量调查和深入研究 Webkit 源代码后,我找到了答案。
在基于 Webkit 的浏览器的上下文中,应用了 appearance
CSS 属性 的元素 不会 接收它们的 平台原生样式 来自浏览器的用户代理样式表。这些样式在 renderTheme
文件中的 UA 样式表之外定义,该文件是 Webkit 引擎内部的一部分。
例如,您可以找到我在此处定义的原始问题中要求的样式:https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/rendering/RenderThemeIOS.mm#L623
分解这一切:在移动版 Safari 中,<input type="date" />
从 Safari 的用户代理样式表接收 -webkit-appearance: menulist-button
。 -webkit-appearance: menulist-button
应用的附加样式 在用户代理样式表 is defined within a renderTheme
file of Webkit.