为什么不能将供应商特定的伪元素/类组合到一个规则集中?

2023-12-06

在 CSS 中可以设置样式placeholder使用特定于供应商的伪类和伪元素的组合来输入输入中的文本(以获得最佳的跨浏览器覆盖率)。

这些都共享相同的基本属性(即:文本样式和颜色声明)。

然而,虽然我不可避免地想要应用相同的样式,而不管浏览器供应商如何,但似乎不可能将它们组合成一个逗号分隔的选择器(就像您希望两个选择器共享的任何其他 CSS 片段一样)相同的风格)。

例如,我倾向于使用以下四个选择器来定位占位符样式:

  • input:-moz-placeholder
  • input::-moz-placeholder
  • input:-ms-input-placeholder
  • input::-webkit-input-placeholder

(虽然:-moz-placeholder 正在被弃用有利于::-moz-placeholder这仅在 FireFox 19 发布时发生,因此目前需要两者来获得更好的浏览器支持)。

令人沮丧的是,声明并赋予每个(相同)样式会导致 CSS 中出现大量重复。

因此,为了确保占位符文本右对齐且斜体,我最终会得到:

input:-moz-placeholder{
    font-style: italic;
    text-align: right;
}
input::-moz-placeholder{
    font-style: italic;
    text-align: right;
}
input:-ms-input-placeholder{
    font-style: italic;
    text-align: right;
}
input::-webkit-input-placeholder{
    font-style: italic;
    text-align: right;
}

我真正想做的是将它们组合成一个逗号分隔的规则集,如下所示:

input:-moz-placeholder,
input::-moz-placeholder,
input:-ms-input-placeholder,
input::-webkit-input-placeholder{
    font-style: italic;
    text-align: right;
}

然而,尽管尝试过几次,但这似乎从未奏效。这让我担心 CSS 的一些基本部分我不理解。

任何人都可以解释为什么会发生这种情况吗?


CSS2.1 states:

选择器(另请参阅有关选择器) 由直到(但不包括)第一个左大括号 ({) 的所有内容组成。选择器总是与声明块一起使用。当用户代理无法解析选择器时(即,它不是有效的 CSS 2.1),它必须ignore选择器和下面的声明块(如果有)。

请注意,由于 CSS2.1 早于 CSS3,因此“它不是有效的 CSS 2.1”是在用户代理完全符合 CSS2.1 并且 CSS3 理论上不存在的假设下编写的。在实践中,只要规范说“它不是有效的 CSS”或类似的内容,就应该理解为“用户代理无法理解它”。请参阅我的回答这个相关问题以获得更深入的解释。

Namely, since one vendor's browser doesn't understand other vendors' prefixes, it has to drop any rules that contain those unrecognized prefixes in pseudo-class and pseudo-element selectors.1

对于一些见解why制定了这样的规则,参见这个答案.


1 Note that WebKit is notorious for partially flouting this rule: it has no trouble parsing rules whose selectors have unrecognized prefixed pseudo-elements (which in this case is ::-moz-placeholder). That said, the :-moz-placeholder pseudo-class in your combined rule will cause it to break anyway.

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

为什么不能将供应商特定的伪元素/类组合到一个规则集中? 的相关文章

随机推荐

  • XML 反序列化忽略不按字母顺序排列的属性

    我有一个小问题 XML 反序列化完全忽略了不按字母顺序排列的项目 在示例对象中 问题末尾的描述 Birthday节点在之后FirstName节点 反序列化后会被忽略并分配默认值 对于任何其他类型和名称都相同 我有节点CaseId of Gu
  • StreamException:无效的 XML 字符(Unicode:0x1a)

    我正在使用 XStream 将用户对象保存在文件中 private void store XStream xStream new XStream new DomDriver UTF 8 xStream setMode XStream XPA
  • 确定 Java 中指定日期的夏令时 (DST) 是否有效

    我有一个 Java 类 它接收某个位置的纬度 经度 并在夏令时开启和关闭时返回 GMT 偏移量 我正在寻找一种简单的方法来确定 Java 中当前日期是否处于夏令时 以便我可以应用正确的偏移量 目前我只对美国时区执行此计算 尽管最终我也想将其
  • 尝试通过 Inline::Java 模块将 Java 内联到 Perl 中

    这是我第一次尝试在 Perl 中内联 Java 代码 我们无法在我们的系统上使用标准 SFTP 命令 这超出了我的能力范围 我们有一个名为 SFTP jar 的 jar 文件可以使用 在我之前的前一个人能够让 Inline Perl 工作
  • 数组作为函数的参数

    有一系列结构 static field fields xsize ysize 我想在功能上改变它 void MoveLeft pacman Pacman field fields int play 但是当我这样发送时 MoveLeft Pa
  • 无法在 matplotlib 中保存动画:Windows 权限被拒绝

    我已经尝试了一整天来解决这个问题 检查类似的线程 但没有成功 Stretch的无法使用ffmpeg保存matplotlib动画帮助解决了以前的错误 我的 ffmpeg 路径错误 但修复后我一直遇到访问被拒绝的情况 我的 ffmpeg 二进制
  • Spring MappingJacksonJsonView,如何告诉使用它而不是JSP视图?

    我正在尝试使用MappingJacksonJsonView使用Spring 3 0 没有成功 我不知道我做错了什么 我认为问题是我不知道如何告诉使用MappingJacksonJsonView提出请求 我尝试对视图名称和 bean 名称使用
  • 当我从 a-sky 标签内的另一台服务器加载图像时出现 CORS 错误

    我试图使用我自己托管的网络服务器中的纹理 但将其放入资产项目标签中时出现以下错误 gt Access to Image at http 192 168 137 1 3000 cat2 jpg from origin gt http loca
  • Azure功能不通知我的机器人(机器人框架)

    我正在使用 Azure 函数 计时器触发函数 该函数每 X 分钟执行一次 我使用 BotFramework 创建了一个机器人 并且希望每 x 分钟触发一个 azure 函数 当它被触发时 我的机器人必须得到通知 我有一个输出机器人框架 这是
  • 如何确定点是否在给定所有纬度/经度坐标的矩形内?

    如果给定矩形所有 4 个角的 x y 坐标 然后给出另一个 x y 坐标 如果左上角为 0 0 则很容易确定该点是否在矩形内 但是 如果坐标是纬度 经度 它们可能为负值 该怎么办 请参阅附件 有没有一个公式可以在这种情况下工作 从数学上讲
  • 在片段中实现 GridView 的问题

    我正在开发一个小型应用程序 其中包含 ActivityNavigationDrawer 我已经使用该活动放置了一个片段FragmentManager and FragmentTrancation 问题是 我有一个GridView在未出现的片
  • 合并多个音频缓冲区源

    关于html5 webaudio的问题 是否可以将多首歌曲合并在一起 我有不同的曲目 它们都使用 webaudio 同时播放 但我需要处理音频 因此我需要一个缓冲区内的所有音频 而不是每个曲目都有自己的缓冲区 我尝试通过添加通道数据来合并它
  • 连接目录中的所有文件

    如何加入一个目录中的所有文件 我可以通过显式命名下面的文件来一步完成此操作 有没有一种方法可以在不显式命名文件的情况下完成此操作 join lt join lt join lt join lt sort rpkmDir HS0477 chs
  • 如何使用带有参数列表的 django-filter 包?

    我想用以下方法过滤我的模型Django 过滤器 如果我按一个 id 进行过滤 效果很好 例如 http localhost 8000 accommodations accommodationType id 1 但我不知道如何通过多个 id
  • 在 WooCommerce 中选择变体销售价格后显示折扣百分比

    我下面的代码显示了用户选择变体后选择的变体价格 add filter woocommerce show variation price filter show variation price 10 3 function filter sho
  • 我收到此消息“错误:未找到 FFmpeg/avconv!”

    我正在尝试创建一个不和谐的机器人 但是每次我尝试运行 YouTube 链接时都会收到此错误 Error FFmpeg avconv not found at Function getInfo C Users discord bot node
  • PowerShell 如何获取函数或 cmdlet 的引用?

    我想获得对函数或 cmdlet 的引用 例如 我想引用 Get ChildItem cmdlet 我不想调用它 我想要对该函数的引用 然后我可以将其传递给另一个函数 有语法可以做到这一点吗 我知道我可以使用字符串 Get ChildItem
  • TableView 中的滚动委托

    我想制作一个像这样的链接的动画 这是我的简单截图 就我而言 我希望当我向上滑动时 蓝色标题视图将消失 导航栏将更改为蓝色 这是我的代码 import UIKit class ViewController UIViewController U
  • 读取/解析文本文件输入C++

    一点背景知识 我正在为一个学校项目开发一个滑块拼图 这是我们第一次使用 C 而不是 Java 这是我第一次必须实现从文件中读取数据的功能 我有一个关于从文本文件读取输入的简单问题 我了解如何逐行读取文件并将每一行保存在字符串中 我想知道在读
  • 为什么不能将供应商特定的伪元素/类组合到一个规则集中?

    在 CSS 中可以设置样式placeholder使用特定于供应商的伪类和伪元素的组合来输入输入中的文本 以获得最佳的跨浏览器覆盖率 这些都共享相同的基本属性 即 文本样式和颜色声明 然而 虽然我不可避免地想要应用相同的样式 而不管浏览器供应