如何使 text-shadow 和 box-shadow 在所有浏览器上使用文本颜色?

2023-11-22

我正在尝试为带有与其文本颜色相同的阴影的框创建样式。因为我有几个框,每个框都有不同的文本颜色,所以我想避免在每个框的每个规则集中重复相同的颜色。

现在,背景和边框模块指出,对于box-shadow(这也适用于text-shadow):

Where

<shadow> = inset? && [ <length>{2,4} && <color>? ]

每个的组成部分<shadow>解释如下:

  • ...

  • 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 and box-shadow。当然,这是可以理解的,因为如上所述,浏览器选择的任何颜色当时都可以。

但既然定义已经明确,所有浏览器的最新版本也反映了这一变化,我能做些什么来让旧版本也效仿呢?我知道我可以多次指定颜色——一次为文本,一次为每个阴影——但就像我说的,如果可能的话,我想避免这种情况。


1 Note that in the mid-2012 WD, which is the latest as of this writing, an earlier statement in the same section contradicts the one quoted here, however the statement quoted here is the canonical one; see this mailing list thread and the ED where this has been fixed.


CSS1 和 CSS2 中描述的行为已在颜色级别 3 中扩展为currentColor关键词值,这基本上意味着“计算值color对于此元素”,并且可以在任何接受颜色值的地方使用。正如您所期望的,这已被重新纳入border-colorpropdef 作为其初始值,如 B&B 模块中所示,here.

因为几乎所有浏览器都支持box-shadow and text-shadow也支持currentColor,您应该能够将其指定为阴影颜色:

text-shadow: 0 0 0.5em currentColor;
box-shadow: 0 0 0.5em currentColor;

这明确指示浏览器使用与文本相同的颜色,而不是编程使用的任何颜色,以某种方式正常化跨浏览器的行为。互动小提琴。

不幸的是,对于一些非常顽固的浏览器,例如某些 WebKit 浏览器的某些版本,问题不在于它们不使用currentColor,但事实是他们不执行currentColor正确使用这些属性。这意味着即使您确实尝试显式设置颜色值,它仍然无法工作,因为这就是他们已经所做的 - 他们只是没有正确执行。

具体来说,Safari 不支持currentColor无论如何,直到版本 4,但由于我无法理解的原因,Safari 5.x 无法正确应用上述声明,尽管能够应用类似的内容background-color: currentColor正好。我相信这在 Safari 6.x 及更高版本中已修复,但自 6.x 及更高版本起,应用没有正确颜色组件的声明anyway,他们甚至不需要这个解决方法。

Passing currentColor明确地does解决 Firefox 中的一个奇怪的错误,该错误阻止其动画往返text-shadow or box-shadow没有颜色分量的值 - 在上面链接的交互式小提琴中,如果您更改div:not(:hover)规则或div:hover删除规则currentColor无论哪种阴影声明,该阴影都不会在 Firefox 中产生动画。

如果您绝对需要支持旧版本的 WebKit 浏览器,您别无选择,只能硬编码所需的颜色。但考虑到这些浏览器自我更新的频率和速度,您最好还是担心旧版本的 IE。但请注意,IE9 没有问题支持box-shadow没有颜色分量,同样对于 IE10text-shadow,因此 IE 根本不需要此解决方法。震惊和敬畏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 text-shadow 和 box-shadow 在所有浏览器上使用文本颜色? 的相关文章

  • HTML/CSS - 打印样式、背景颜色和图像不会在 IE 和 Firefox 中显示?

    我如何在打印时显示背景颜色和图像 我知道这是浏览器属性 但我想从 CSS 完成它 例如我用于 webkit 的 CSS webkit print color adjust exact 那么我怎样才能实现它呢 不 这是不可能的 请参阅 web
  • rvest如何通过id选择特定的css节点

    我正在尝试使用 rvest 包从网页中抓取数据 简单来说 html 代码如下所示 div class style div
  • 我可以使用 CSS 或脚本设置禁用控件的样式吗?

    我有一个 HTMLdiv页面上的元素在以下情况下更新select页面上的元素发生变化 有时 input需要根据选择禁用标签 文本框 问题是 项目涉众喜欢该功能 他们只是认为在 禁用 状态下 文本框内容太浅 因此不可读 我可以将 CSS 应用
  • TransitionEnd 事件未触发?

    我有多个元素 每个元素都以 某种程度上 持续时间进行动画处理 我使用 CSS3 过渡 jQuery 库和transitionend辅助函数来自大卫 沃尔什 https davidwalsh name css animation callba
  • 最小高度:自动在 Opera 中不起作用

    我注意到min height不在 Opera 中工作 我正在尝试这样的事情 div class content div div class content newstyle div 我的 CSS 代码是 content min height
  • 的 CSS margin-top 影响父级的边距

    我已经研究这个问题有一段时间了 但还没有找到直接的答案 当向元素添加页边距顶部时 就我而言 它主要发生在标题上 在许多情况下 边距顶部是与父级共享的 HTML div h1 My title h1 div CSS div padding 2

  • css 表格单元格,内容有不必要的上边距

    我在代码中使用 div 块的表格单元格排列 我的代码有问题 我的 html 的预览是here http jsbin com avozik 10 edit preview 当我的第一个面板中有任何内容 文本或图像 时 inner第二个和第三个
  • 阻止内容因 Bootstrap 中的重叠而被下推

    In a 上一个问题 https stackoverflow com questions 22293227 make an element overlap contents below it using bootstrap 22293428
  • Firefox 30 不再隐藏选择框箭头

    我一直使用的 技巧 是 select moz appearance none text indent 0 01px text overflow 在 FF 上进行自定义选择框 但自从版本 30 发布以来 它完全停止工作 我试图找出这是否已被弃
  • Firefox 背景图像在切换标签后消失

    我在渲染背景图像时遇到一些非常奇怪的问题 我不确定这是 Firefox 的错误还是我的错 每次我在 Firefox 中打开项目站点时 所有背景图像都会正确加载并显示 当我切换到另一个选项卡并在一段时间后切换回来后 所有背景图像都消失了 我检
  • 纯CSS代码,没有绝对定位

    我试图想出一个纯CSS代码 就像你在电视上看到的那样 仅not粘在屏幕底部 我已经找到了涉及 JS 的东西 但我正在努力避免 JS 我还发现了一些其他人创建的纯 CSS 代码 但这些的问题在于它们都使用position absolute 这
  • 在 Chrome 中,应用于包含图像的锚点的轮廓高度不正确

    对于我正在开发的网站 我希望当链接聚焦 悬停 活动时 链接周围会出现虚线轮廓 我希望文本和图像链接发生这种情况 我遇到的问题是 虽然我的代码在 Firefox 和 IE 中运行良好 但在 Chrome 7 0 517 41 中 虚线轮廓与我
  • 如何使用div绘制曲线?

    我需要使用 CSS 绘制两条曲线 我尝试过组装一些divs 使用CSSborder radius绘制弧形面板 但结果很糟糕 还有更好的算术吗 正如我之前在评论中提到的 请不要使用CSS用于实现复杂的曲线和形状 虽然仍然可以使用 CSS 来实
  • 简化 CSS 代码

    我怎样才能简化这段代码 user panel subscribe user panel faves user panel tags user panel title user panel calendar a user panel item
  • 这个 CSS 选择器是什么? [类* =“跨度”]

    我在 Twitter Bootstrap 中看到了这个选择器 show grid class span background color eee text align center border radius 3px min height
  • 如何实现右边缘倾斜的 div? [复制]

    这个问题在这里已经有答案了 我几天来一直在寻找使 div 的右边缘倾斜 45 度的代码 这是我特别想要得到的图像示例 似乎有很多 倾斜边缘 div 的示例 但我找不到任何具有特定右侧倾斜的示例 我花了很多时间试图改变其他人的代码 但结果却一
  • CSS 选择器用于选择最后两个子项,而不知道列表中有多少项

    我有一个无序列表 它有时包含 4 5 6 或 7 个项目 我想知道是否有一个 CSS 选择器来选择最后两项 我意识到 last child会给我最后一件物品 是否有 倒数第二个孩子 选择器 或者 孩子数量 2 选择器 HTML ul li
  • 如何检查元素的内容是否为空,如果是,则在 jquery 中删除该元素

    我目前正在尝试选择某个 div 内没有内容的任何 h2 元素并将其删除 这是我的 html 代码 div class skipToContainer h2 class vidSkipTo Hello h2 h2 class vidSkipT
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • 文本后面有粗下划线

    如何使用 span 和 css 在文本 ABC 后面重现这种下划线 我已经能够做下划线below嵌套的文本span和彩色的border bottom 但无法获取behind图像和above文本基线 p style font size 48p

随机推荐

  • 通过内联数据属性传递 Javascript 函数

    我正在使用 Javascript 文件上传库 它的功能之一是它使用 HTML5 内联数据属性将信息传递给插件 这对于任何与数据相关的字符串 数字等都非常有用 但是该插件有一些您可以为其分配函数的回调方法 我的问题是 当尝试通过这些内联数据属
  • 如何向极坐标图(玫瑰图)添加颜色条?

    In 这个例子颜色与每个条形的半径相关 如何向该图添加颜色条 我的代码模仿 玫瑰图 投影 它本质上是极坐标投影上的条形图 这是其中的一部分 angle radians 10 patches radians 360 angle theta n
  • JSP 或 JavaScript 相当于 PHP 的 $_SERVER["HTTP_HOST"]?

    我在 JavaScript 中使用了绝对 URL 并为 window location 进行了硬编码 我不想每次测试我的应用程序时都必须更改此设置 在 PHP 中 我会通过测试 SERVER HTTP HOST 变量来找出我所在的服务器 并
  • Google App Engine“没有名为 pwd 的模块”

    我能够很好地运行我的 Google App Engine 项目 我使用 Python Flask 来开发 Web 应用程序 但是当我将系统从 Ubuntu 12 04 升级到 14 04 时 App Engine 项目在本地系统上变得无响应
  • 抽象如何帮助隐藏 Java 中的实现细节?

    抽象是隐藏实现细节并仅向用户显示功能的过程 另一种方式是 它只向用户显示重要的内容并隐藏内部细节 下面是一个创建抽象类并重写抽象方法的示例 但我不明白的是它是如何隐藏实现细节的 abstract class Bank abstract in
  • iPhone:检测 UIImageView 图像序列动画结束的最佳方法

    我们知道UIImageView对图像序列动画有很好的支持 我们可以轻松创建 UIImage 对象的数组 设置animationImages属性 配置动画持续时间 重复计数等 然后直接触发 但似乎没有办法知道这个动画什么时候结束 假设我有十张
  • VS2013调试时的身份验证问题-iis express

    我试图在 Visual Studio 2013 中调试时获取 Windows 用户名 我只是使用 httpcontext current user identity name 如果我在我的开发服务器上运行它 它可以正常工作 如果我在任何以前
  • htaccess 中的子域重定向[关闭]

    Closed 这个问题是无关 目前不接受答案 我想知道使用 htaccess 规则是否可以实现以下场景 我希望将一个子域重定向到另一个网址 我已联系服务器管理员将 test 子域添加到 example com 域 主域没有其他子域 我必须在
  • 自定义视图,使用不同的子视图对角分割布局

    我怎样才能分开LinearLayout or RelativeLayout对角线分成两个不同的尺寸 每个都有不同的子视图 例子ViewPager在上半部分和不同的LinearLayout在底部 像这样的东西 我怎样才能做到这一点 请帮忙 最
  • Twitter Bootstrap 3 Typeahead / Tagsinput 完成两次

    编辑 添加工作 JSFiddle 我正在使用 Twitter Bootstrap TagsInput 和 Bootstrap Typeahead 我的源是一个 json 文件 但这无关紧要 我已经检查了静态源 预输入和标签输入正在工作 但是
  • git-svn clone 或 svn2git 意外停止

    我正在尝试使用以下命令从 git 迁移到 svn git svn clone stdlayout https my sourcecontrol 或使用 git2svn svn2git notags https sourcecontrol v
  • .Net 应用程序可以转换为便携式应用程序,即单个 .exe

    Net 应用程序可以转换为单个 exe 可移植应用程序吗 即没有安装程序 它只是运行 我想所有的 dll 资源等都需要嵌入到 exe 中吗 如果是这样 我该怎么做 Thanks 你可以使用ILMerge将所有程序集合并为一个可执行文件 但您
  • MySQL:获取特定行的行号(排名)

    我有一个users具有名为的列的表money sent 我想通过以下方式订购这张桌子money sent按降序排列 然后找出特定用户的 排名 例如 只有 111 人比用户 12392 花费的钱更多 因此他们的排名为 112 我该如何查询这个
  • URL 嵌入凭证

    维基百科说HTTP 基本身份验证依赖于Authorization用于从客户端向服务器提供凭据的标头 但也可以将凭据嵌入 URL 中 http s
  • 找不到模块“express”(带有 docker 的节点应用程序)

    我是 Docker 新手 我正在尝试从 NodeJS 开始 所以这是我的问题 我的项目中有这个 Dockerfile FROM node argon Create app directory RUN mkdir p home Documen
  • 如何设置LIBSVM Matlab界面?

    我在 MATLAB 中实现 LibSVM 时遇到问题 我正在使用 MATLAB R2009a 我也有最新版本 R2012b 但我不使用那个 我将 LibSVM 包 libsvm 3 14 下载到我的 Windows 7 PC 上 其中 MA
  • 如何使用固定的外部分层集群创建热图

    我有一个矩阵数据 想用热图将其可视化 这些行是物种 所以我想可视化行旁边的系统发育树 并根据树对热图的行重新排序 我知道heatmapR 中的函数可以创建层次聚类热图 但如何使用我的系统发育聚类而不是图中默认创建的距离聚类 首先你需要使用包
  • 安装 cygwin 需要帮助:可能是 ini 文件问题

    我正在尝试在我的 Windows 7 计算机上安装 cygwin 我通过开始安装来获得设置http www cygwin com 我选择 从互联网安装 链接到http www cygwin com setup exe 然后在向导中依次选择
  • css3 flexbox 与 Firefox 和 Safari 的兼容性问题

    我正在尝试整理我的 Flexbox 布局 使其与最新版本的 IE Firefox Safari 兼容 但我在使用 Firefox Safari 时遇到问题 建议布局 header nav section 在 Firefox 和 Safari
  • 如何使 text-shadow 和 box-shadow 在所有浏览器上使用文本颜色?

    我正在尝试为带有与其文本颜色相同的阴影的框创建样式 因为我有几个框 每个框都有不同的文本颜色 所以我想避免在每个框的每个规则集中重复相同的颜色 现在 背景和边框模块指出 对于box shadow 这也适用于text shadow Where