我想了解__CODE__选择器如何处理属性冲突,如何选择属性而不是另一个属性?
div {
background-color: red;
}
div.my_class {
background-color: black;
}
div#my_id {
background-color: blue;
}
body div {
background-color: green;
}
body>div {
background-color: orange;
}
body>div#my_id {
background-color: pink;
}Run Code Online (Sandbox Code Playgroud)
对于某人来说,这可能是显而易见的,但不适合我!
是否存在一些指南或链接,我可以最终了解选择器优先级如何工作?
请考虑以下分配给事件的lambda表达式.
foo.BarEvent += (s, e) => if (e.Value == true) DoSomething();
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,只包含一行代码.那么为什么我从调试器中得到以下2个错误?
无效的表达式术语'if'
只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句
要解决此问题,您所要做的就是用if括号括起您的语句.
foo.BarEvent += (s, e) => { if (e.Value == true) DoSomething(); };
//Errors now disappear!
Run Code Online (Sandbox Code Playgroud)
我理解这些错误消息的含义.我不明白的是为什么单条件if语句会成为编译器的问题,以及为什么第一个lambda赋值被认为是破坏的.
有人可以解释一下这个问题吗?
标题基本上都说明了一切.
假设我有,我想改变颜色的元素:hover,但在点击后,我希望它切换回原来的颜色.所以,我试过这个:
a:link, a:visited, a:active {
background: red;
}
a:hover {
background: green;
}
Run Code Online (Sandbox Code Playgroud)
事实证明,这不起作用.在经历了许多:hover令人头疼的事后,我意识到国家正在压倒:active国家.这很容易解决:
a:link, a:visited {
background: green;
}
a:hover {
background: red;
}
a:active {
background: green;
}
Run Code Online (Sandbox Code Playgroud)
(我可以将第一条规则与第三条规则结合起来).
这是小提琴:http://jsfiddle.net/V5FUy/
我的问题:这是预期的行为吗?据我所知,:active国家应该总是覆盖:hover国家,因为:active国家几乎总是伴随着:hover国家.
根据W3 Schools,声明锚元素上的伪类的顺序非常重要.
为什么是这样?还有其他人吗?
任何人都可以告诉我是否有任何理由在我的样式表中使用a {}而不是(或相邻)a:link, a:visited {}?我在浏览器,网站等方面测试结果不一致,所以我从来没有得到满意的答案.我也无法在Google上找到答案.
这当然是假设没有理由使用<a>没有href值的标签.也许这是一个错误的假设.
**编辑**
我知道这些选择器做了什么.我正在寻找为什么我会使用a而不是a:link或a:visited因为a总是有一个href属性的原因.但正如Chris Blake和Ryan P在答案中所说,还有<a name="top">javascript用法,这两者都不需要这个href属性.
我在"w3schools"中研究CSS,在"链接"一章中,他们说:
"为多个链接状态设置样式时,有一些订单规则:
a:悬停必须在a:link和a之后:访问a:主动必须在a:hover之后来
我想知道为什么正确的顺序是LVHA,而不是LHVA或其他.
为什么w3schools说我们在CSS中编写锚点伪类时应该a:link先写然后a:visited再写a:hover最后a:active才是有效的?
来自:https://www.w3schools.com/css/tryit.asp?filename=trycss_link
伪类的顺序如何影响有效性?