css – Chrome/Safari:如果指定了border,box-shadow只会显示在文本输入上

我遇到WebKit浏览器(Chrome 15.0.x和Safari 5.1.1)的问题,其中盒子阴影没有在文本输入上呈现。只是偶然地,我发现明确设置边框导致框阴影渲染,即使您将边框设置为“无”或默认,“插入”。下面的代码(在 JSFiddle上查看它)在Chrome或Safari浏览时显示了问题,但是如Firefox 6.0.2和Opera 11.52所示。

HTML

<input type="text" value="Works" style="border:none;" />
<input type="text" value="Works" style="border:inset;" />
<input type="text" value="Doesn't" />

CSS

input[type="text"] {
    margin: 1em;

    -webkit-box-shadow: 0px 0px 2px 1px green;
    box-shadow: 0px 0px 2px 1px green;
}

我在WebKit中缺少使用盒子阴影的一些细节,还是发现了一个错误?

解决方法

默认情况下,WebKit中的输入具有应用于此的属性:
-webkit-appearance: textfield;

如果您希望文本字段的外观与平台相关,则这是您想要的。有时您可以使用这个仍然设置的样式,但其他时候,它需要设置为none,这使得它应用于标准CSS并且更少依赖于操作系统。似乎边框自动触发这个,但是box-shadow没有,但是 – -vbkit-appearance是none,只适用于box-shadow。 (如果应用了box-shadow并且如果启用平台相关的外观,则不会渲染box-shadow,则平台相关的外观不会关闭这一事实可能是一个错误)

要解决这个问题,只需明确地告诉它不要使用依赖于平台的外观:

input[type="text"] {
    -webkit-appearance: none;
}

Test it with -webkit-appearance:none;添加。

这样做的缺点就是你失去了(一些)平台的本地外观,但是如果你试图使用盒子阴影,那么你可能试图将原生的外观风格化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


css的bordercolor属性怎么使用
CSS中contain属性的作用和语法
深入学习响应式布局框架:适合初学者到专家的详尽指南
CSS3选择器优先级规则
margin-top用法
选择最适合您的响应式布局框架:综合评估不同工具
使用CSS中的content属性
设计一个无缝适应不同屏幕尺寸的网站
如何处理CSS样式的层叠问题
探究最佳响应式布局框架:竞争激烈!
学习基本数据类型的快速入门:掌握常用操作技巧
CSS中float布局介绍
一同探讨响应式布局的益处
掌握响应式设计的益处,让网页在不同设备上展现完美适配!
可能导致CSS加载失败的原因有哪些?
各种基本数据类型的全面操作指南
CSS3选择器是否用于设计界面结构?
响应式布局优化移动设备适配的策略与实用技巧
伪元素怎么清除浮动
利用CSS响应式布局创作独特网页设计的设计技巧