- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在尝试为一个带有与其文本颜色相同的阴影的框创建样式。因为我有几个框,每个框都有不同的文本颜色,所以我想避免在每个框的每个单独规则集中重复相同的颜色。
现在,背景和边框模块状态为 box-shadow
(这也适用于 text-shadow
):
Where
<shadow> = inset? && [ <length>{2,4} && <color>? ]
The components of each
<shadow>
are interpreted as follows:
...
The color is the color of the shadow. If the color is absent, the used color is taken from the ‘color’ property.1
这意味着如果您没有在给定元素上指定阴影颜色,则所使用的阴影颜色必须取自为该元素计算的文本颜色。这类似于与没有明确颜色的边框相关的行为,可以追溯到CSS1。并保持不变 CSS2 .
但是,我知道阴影的情况并非总是如此 — 以前(迟至 2011 年!)选择的颜色由浏览器在文本模块和 B&B 模块中决定。事实上,我记得过去的测试表明,一些浏览器选择了 black
其他人选择了transparent
(或完全忽略阴影样式)。这甚至可能在 text-shadow
之间变化和 box-shadow
.当然,这是可以理解的,因为如前所述,当时浏览器选择的任何颜色都可以。
但现在定义已经明确,所有浏览器的最新版本也反射(reflect)了变化,我能做些什么来让旧版本效仿吗?我知道我可以多次指定颜色——一次为文本,一次为每个阴影——但正如我所说,我想尽可能避免这种情况。
1 请注意,在撰写本文时最新的 2012 年年中 WD 中,同一部分中较早的声明与此处引用的声明相矛盾,但是此处引用的声明是规范的;见this mailing list thread和 ED这已被修复。
最佳答案
CSS1 和 CSS2 中描述的行为已在颜色级别 3 中扩展为 currentColor
keyword value ,这基本上意味着“该元素的 color
的计算值”,可以在接受颜色值的任何地方使用。如您所料,这已作为其初始值重新连接到 border-color
propdef 中,如 B&B 模块中所示,here .
因为几乎每个支持 box-shadow
和 text-shadow
的浏览器也支持 currentColor
,你应该能够将它指定为阴影颜色:
text-shadow: 0 0 0.5em currentColor;
box-shadow: 0 0 0.5em currentColor;
这明确指示浏览器使用与文本相同的颜色,而不是编程使用的任何其他颜色,以某种方式 normalizing跨浏览器的行为。 Interactive fiddle.
不幸的是,对于一些非常固执的浏览器,比如某些 WebKit 浏览器的某些版本,问题不在于它们不使用 currentColor
,而在于 它们不使用这些属性正确实现 currentColor
。这意味着即使您确实尝试明确设置颜色值,它仍然不会起作用,因为他们已经这样做了——他们只是做得不正确。
具体来说,已知 Safari 在第 4 版之前不支持 currentColor
,但由于我无法理解的原因,Safari 5.x 无法正确应用上述声明,尽管能够应用像 background-color: currentColor
这样的东西就好了。我相信这在 Safari 6.x 及更高版本中已修复,但由于 6.x 及更高版本应用了没有颜色组件的声明无论如何,它们甚至不需要此解决方法。
显式传递 currentColor
确实解决了 Firefox 中的一个奇怪错误,该错误阻止它在 text-shadow
或 之间进行动画处理没有颜色分量的 box-shadow
值 — 在上面链接的交互式 fiddle 中,如果您更改 div:not(:hover)
规则或 div:hover
规则从任一影子声明中删除 currentColor
,该影子不会在 Firefox 中设置动画。
如果您绝对需要支持旧版本的 WebKit 浏览器,您别无选择,只能硬编码所需的颜色。但是考虑到这些浏览器无论如何都会更新自己的频率和速度,您最好还是担心 IE 的旧版本。但是请注意,IE9 可以在没有颜色组件的情况下支持 box-shadow
,对于具有 text-shadow
的 IE10 也是如此,因此 IE 根本不需要此解决方法。 Shock and awe.
关于cross-browser - 如何让 text-shadow 和 box-shadow 在所有浏览器上使用文本颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560018/
我无法创建另一个父 div 容器,是否可能仅使用 css 技巧?盒子阴影:7px 7px 7px 黑色;只会从右边框和底边框创建阴影,但我也需要左边框和上边框。 最佳答案 盒子阴影有4个参数;偏移量、
我刚遇到一个有趣的情况,我有一个提交 放置在 内的 native 自定义元素的 Shadow DOM 内. Select #shadow-root ...
假设我们有一些 CSS 代码,例如动画 CSS 加载器,我们希望在所有使用 Shadow DOM 的 Web 组件中使用它。如果我们无法像 ::shadow 那样穿透 Shadow DOM,我们如何重
shadow-dom 中的document 变量的值是多少?在 this jsfiddle 我们可以看到它在父文档中搜索 app 节点并提醒它的值。这是否意味着 shadow-dom 没有单独的文档变
以下代码是来自 chrome 开发工具的 View #shadow-root (user-agent) This I want to restyle 如果我想在 shadow
运行mvn package:shade shade时,日志中的条目显示:用 XYZ-shaded.jar 替换 XYZ.jar但在我的目标目录中,我找不到阴影 jar 这是我关于 Maven 阴影的
我正在尝试编写一个 mixin,它应该将 CSS box-shadow 作为参数并将其转换为 filter: drop-shadow()。 // mixin drop-shadow($shadows)
我正在使用 gradle shadow 插件构建我的 uber jar。 build.grade 文件看起来像: buildscript { repositories { jc
我正在尝试向子对象所在的父对象添加阴影 元素位于其中。我希望插入的阴影与图像重叠。 我的 HTML 代码是: 和 CSS: .highlights { height: 360px
我想在 UIView 上添加drop shadow 和stroke shadow这是我的设计师给我的阴影, 对于投影,他告诉我使用 RGB(176,199,226),不透明度为 90%,距离为 3,大
我希望在单击图像时出现投影。我目前不使用 Jquery,所以如果可能的话,请提供一个 java 脚本解决方案。这是我的 fiddle :http://jsfiddle.net/zUNhD/7/ 我还希
从那以后我一直在使用 CSS box-shadows,但现在我有一个带有圆 Angular 的图像并想给它一个圆 Angular 阴影。所以我尝试使用 filter: drop-shadow,但不幸的
LWC 合成影子 dom 似乎不像 native 影子 dom 实现那样处理插槽,例如 假设您从一个元素开始: Hi there 然后附加影子dom并添加一个插槽,h1将被插入: 现在,如果您在运行“
我试图在以下文档中观察文档级别的自定义输入元素的文本输入元素的输入值的变化: 其中自定义 Div 和自定义输入定义如下: Units 如状态h
我的网站上安装了一个 Angular 网络组件。它使用 Shadow DOM,因此它非常快(在我的情况下必须如此)。 在我的站点上,我还有一个快捷方式 h,它会打开一个显示一些有用信息的弹出窗口。 h
我正在尝试为一个带有与其文本颜色相同的阴影的框创建样式。因为我有几个框,每个框都有不同的文本颜色,所以我想避免在每个框的每个单独规则集中重复相同的颜色。 现在,背景和边框模块状态为 box-shado
我想使用不支持 Shadow-DOM 的浏览器(如 Firefox、PhantomJS 以及其他使用 WebDriver 的浏览器)测试 Polymer 应用程序。 当我使用类似的东西时,Firefo
我有一个 Assets 代表一个按钮,下面有一个阴影。我只想让蓝色部分可点击。有没有简单的方法来做到这一点? 谢谢。 最佳答案 您可以像这样以编程方式添加阴影: button.layer.shadow
我正在尝试创建一个 Photoshop 内阴影效果,与 css3 框阴影插入效果相同。 第 1 步(我正在生成按钮 - 圆 Angular 矩形): convert -size 220x50 xc:n
我需要在 boxMesh 上转换阴影,而网格本身应该不可见。 我找到了 technique Three.js GitHub 问题跟踪器似乎在几年前就可以工作,但现在不再工作了 - 它涉及创建一个新的着
我是一名优秀的程序员,十分优秀!