- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一段这样的 HTML 代码:
<div id="a">
<p>A piece of HTML</p>
<div>
根据某些情况,它会以不同的方式放置在页面中,因此我需要给它不同的样式。
可以这样放置
案例一
<div id="container">
<div id="b">
<div id="a"></div>
</div>
<div>
或
案例二
<div id="container">
<div id="b"></div>
<div id="a"></div>
<div>
我想知道什么是识别这两种不同情况并使用 CSS 规则以不同方式设置 #a
div 样式的更好方法(如果存在并同时考虑最佳实践和性能) .
我是否应该为每种情况分配两个不同的类,然后检测添加一些这样的 CSS 规则:
#a.class-for-case-1{
/* Rules here */
}
#a.class-for-case-2{
/* Rules here */
}
或者使用像 + 选择器这样的特异性选择器:
#b #a{
/* Rules here */
}
#b + #a{
/* Rules here */
}
或者甚至为应该从 + 选择器覆盖的 #a
div 使用默认样式?
#a{
/* Default rules here */
}
#b + #a{
/* Specific rules here */
}
如有类似问题没注意到,先谢谢大家了。
最佳答案
我还没有测试过,这只是基于我对工作原理的理解。假设只有这两种情况,您应该这样做:
#a {
/* Default rules here */
}
#b #a {
/* Override rules here */
}
唯一的默认 #a
id 选择器大约是目前最快的选择器,因为该元素在页面上应该是唯一的,并且应用规则只需要一次检查。所以用它设置一个默认样式。
覆盖规则将几乎一样快,因为浏览器将遇到 #b
的唯一 ID,从 #a
再次检查 DOM 树,并且应用这些规则(如果它显然是 #b
的 child )。当然,we are talking minor differences in efficiency here .
请注意,通过这些选择器应用于 #a
的任何样式都将具有相当高的特异性(尤其是嵌套版本),因此不能被任何 .someClass 覆盖
css 你或者javacript 可以尝试申请。但这可能完全没问题,具体取决于您的情况。正是这种高度特异性使得稍后在这些元素上更改 css 导致一些人完全避免使用 id 来应用 css 属性,但我觉得这完全取决于网站的上下文,无论是好事还是坏事为此使用 id。
关于CSS 特异性最佳实践 : + selector vs class vs rule overwriting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18655424/
抱歉这个菜鸟问题,但请有人向我解释一下这个嵌套 for 循环的内部工作原理。 v,w = 2,4 for v in range(v): for w in range(w): pr
我正在用 C++ 制作 OpenGL 游戏。与其他语言相比,我在 C++ 方面相当缺乏经验。无论如何,我为一些图像创建了一个带有“基本”目录的字符串流。然后,我将此字符串流作为函数参数传递给构造函数。
我正在用 Java 进行基本的文件处理。我想要的是,一旦我运行我的代码,就会在指定位置创建 .txt 文件,并在那里写入一些文本,现在下次当我写东西时,它不应该 OVERWRITE 它,但应该在它之前
我正在用 C++ 制作 OpenGL 游戏。与其他语言相比,我在 C++ 方面相当缺乏经验。无论如何,我为一些图像创建了一个带有“基本”目录的字符串流。然后,我将此字符串流作为函数参数传递给构造函数。
通常当我们setState时,我们想要将一些新状态与旧状态合并。我有一个用例,我想覆盖旧状态。有什么干净的方法可以做到这一点吗? 例如,假设我当前的状态有 561 个不同的属性。我希望新状态具有 3
我正在使用 Flutter-FFmpeg package 在我的 Flutter App 上实现视频编辑功能, [在视频上添加水印] 具体来说,在执行代码时出现此错误: E/mobile-ffmpeg
我的主要需求是使用INSERT OVERWRITE uery从HIVE加载HDFS中的文件。在此查询中,我尝试连接3个配置单元表。下面是查询: select * FROM AGG_CUSTOM
我无法让 symfony2 配置正确覆盖其他配置文件中的值。问题是这样的: 我有一个新的环境“staging”,我想在其中使用 config_prod.yml 中的大部分内容,但有另一个日志记录级别(
背景: 我使用的是 python 2.7.4 我正在类里面逐行阅读文档 我想在一个类中有两个变量 一个变量(我将其设置为一个名为lines的数组)我想要拥有文档的所有原始格式 另一个变量(我也做成了一
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
前提:作业中所需的功能之一是对链接列表进行排序。我的做法可能效率很低,但这是我知道的唯一方法。 问题:如果我有一个信息链接列表,我将如何(在函数内)“覆盖”传入链接列表的信息。 代码: void so
希望这是我今天的最后一个问题... O.o 所以我用用户的输入填充了一个表: var textField = Ti.UI.createTextField({ hintText:"Zoeken over
我尝试使用以下 MySQL 查询来“覆盖”/替换表中的空/错误条目,但它不起作用。我收到错误: Error Code: 1054. Unknown column 'T2.Produktbezeichn
我在替换字符串的一部分时遇到问题。现在这段代码。我的目标是针对包含此字典中的键的每个字符串。 mapping = { "St": "Street", "St.": "Stree
find /home/csuser/testfiles . -type f -name "*.c" -exec mv '{}' /home/csuser/src/ \; 上面的命令将简单地覆盖具有相同
我有一个分支,里面有一些未跟踪的文件。我想将另一个分支 merge 到它上面。 第二个分支包含一个跟踪文件,第一个分支未跟踪该文件。出现以下错误: error: The following untra
如何通过cloudformation模板在codedeploy中添加“覆盖内容” 我的模板很好并且正在运行,但是当我尝试部署新版本时,它给了我不同的错误。 如下图 部署失败,因为此位置已存在指定文件。
我想覆盖ProductController来自EnrichBundle . 在开发模式下一切正常,但是当我想使用 php app/console pim:install --env=prod --fo
嘿伙计们,我不是一个铁杆编码员,所以我在这里不了解这些基础知识。 假设我的页面上有多个 '(包含通过 swfobject 的 Youtube 视频)。所有这些对象都有一个唯一的 ID,如 ytplay
我在 PHPStorm 的设置中创建了一个新的 Deployment,可以自动上传。工作得很好,我只是想知道在哪里可以让 PHPStorm 检查服务器上的文件是否更新,以及何时两个人正在处理同一个文件
我是一名优秀的程序员,十分优秀!