请检查这个小提琴 - http://jsfiddle.net/vfMsS/。我需要编写选择器,选择“active”元素之后的元素和它之前的元素。 “之前”部分似乎不起作用。如何在a.active
之前选择元素?
答案 0 :(得分:6)
就像BoltClock所说,在当今的浏览器中没有办法实现这一点。 但是,我相信它可以在CSS中使用。
CSS Selectors level 4语法(具体见this),语法为E! + F
,表示“元素F前面的元素E”。
因此,在您的情况下,语法将是a! + a.active
,意思是“带有标记的元素,前面的元素具有标记a和类活动”。截至今天,这是not yet implemented in any layout engine
答案 1 :(得分:3)
相邻的兄弟选择器只向前看,而不向后看。以前的相邻兄弟姐妹没有-
组合。
如果您只需要在同一个父级中选择不是.active
的任何内容,并且您不介意略微减少浏览器支持,则可以使用:not()
代替。如果您需要为.active
之后的样式指定不同的样式,则需要覆盖:
a:not(.active) { background:red }
a.active + a { background:yellow }
同样,这假设他们总是共享同一个父母。
答案 2 :(得分:1)
Why don't you try using a sibling combinator?
a.active ~ a { background:red }
答案 3 :(得分:0)
我不得不说,这是我暂时遇到的一个问题,其中一件我没有做过的事情最终解决了这个问题...... float: right
。
在我的情况下,它是input[type='radio'] + label
元素,并且由于CSS向前流动而不是向后流动,~ input[type='radio'] + label
将选择被检查元素之后的所有兄弟元素。
因为,float: right
负责采取" A,B,C"并将它们定位为" C,B,A" - 我在HTML中将无线电元素的顺序从1-6更改为6-1,并使用CSS将它们float: right
。
这样做的目的是在渲染到浏览器时将它们反转为1-6的顺序。
现在,当我使用~ input[type='radio'] + label
时,它仍然以相同的方式定义样式(在我的情况下,是标签的颜色),然而,现在被称为样式的兄弟 - 在视觉上 - 前面的那些
这个帖子已经有一年多了,但是如果有人需要一个例子,如果被问到,我会创建并发布一支笔。
答案 4 :(得分:0)
我一直在寻找针对 public void Shuffle_b(Deck deck)
{
Deck temp_deck = deck;
Deck x = new Deck();
x.Cards.Clear();
Deck y = x;
Deck z = y;
while (temp_deck.Cards.Count !=0)
{
if (temp_deck.Cards.Count != 0)
{
x.Cards.Add(temp_deck.Cards[0]);
temp_deck.Cards.Remove(temp_deck.Cards[0]);
if (temp_deck.Cards.Count != 0)
{
y.Cards.Add(temp_deck.Cards[0]);
temp_deck.Cards.Remove(temp_deck.Cards[0]);
if (temp_deck.Cards.Count != 0)
{
z.Cards.Add(temp_deck.Cards[0]);
temp_deck.Cards.Remove(temp_deck.Cards[0]);
}
}
}
}
}
链接
我为.active
之前的任何元素设置了默认样式,然后使用同级选择器选择了该元素之后的所有样式。
.active
演示:https://codepen.io/ramiro-ruiz/pen/gBOPQL
对我有用,希望对您有所帮助。