我想在CSS之前选择一个元素,在给定类之后选择一个元素。我想知道这是否可能......这是我的清单:
<ul>
<li>one</li>
<li>two</li>
<li class='active'>three</li>
<li>four</li>
<li>five</li>
<li>six</li>
</ul>
我想将一些样式应用于.active
之前和之后的一个元素。我可以用javascript做 - 没问题,但我想知道这样的事情是否可能:
/* before .active */
ul li.active-element(.active - 1) {
background:red;
}
/* after .active */
ul li.active-element(.active + 1) {
background:blue;
}
答案 0 :(得分:1)
您无法选择以前的兄弟姐妹。 但是,您可以通过
选择下一个兄弟姐妹ul li.active+ li{
background:blue;
}
您可以通过Javascript选择以前的兄弟。
答案 1 :(得分:1)
使用Pure CSS,您无法使用css选择以前的兄弟。
但您可以选择下一个兄弟var images = new Dictionary<char, Image>()
{
{'#', Properties.Resources.Image1},
{'.', Properties.Resources.Image2},
{'$', Properties.Resources.Image3},
{'@', Properties.Resources.Image4},
};
char[][] data = new char[][]{
new char[] {'#','.','#'},
new char[] {'#','$','#'},
new char[] {'#','@','#'},
new char[] {'#','#','#'},
};
var dt = new DataTable();
for (int i = 0; i < data.Max(x => x.Count()); i++)
dt.Columns.Add(string.Format("C{0}", i), typeof(Image));
data.ToList().ForEach(a => dt.Rows.Add(a.Select(x=>images[x]).ToArray()));
this.dataGridView1.DataSource = dt;
选择器的下一个兄弟,即
+
但是在某些情况下,你可以让以前的兄弟姐妹看起来像选中(但它有其局限性)。
对于之前的兄弟姐妹,如果您只想在前一个项目上应用li.active + li {
background: blue;
}
,则可以使用伪类(即background-color
或:before
的活动元素来选择先前的项目。< / p>
:after
.list {
list-style: none;
overflow: hidden;
padding: 0;
margin: 0;
}
.list li {
position: relative;
padding: 3px 10px;
}
.list li.active {
background: green;
}
.list li.active:before {
position: absolute;
background:red;
height: 100%;
bottom: 100%;
content: '';
z-index: -1;
right: 0;
left: 0;
}
.list li.active + li {
background:blue;
}
使用JavaScript(jQuery Framework),您可以选择之前选择的上一个兄弟。
您可以使用jQuery的.prev()
方法选择以前的兄弟,即
<ul class="list">
<li>one</li>
<li>two</li>
<li class='active'>three</li>
<li>four</li>
<li>five</li>
<li>six</li>
</ul>
$('.list li.active').prev().addClass('prev');
$(function() {
$('.list li.active').prev().addClass('prev');
});
.list {
list-style: none;
padding: 0;
margin: 0;
}
.list li {
padding: 3px 10px;
}
.prev {
background: red;
}
.active {
background: green;
}
.active + li {
background: blue;
}
答案 2 :(得分:0)
答案 3 :(得分:-1)
正如其他人所说,不,你不能选择以前的兄弟姐妹。有一些与SASS / SCSS和LESS的组合,但这在实践中并不是很好。
但是,我们可以期待:past in CSS4,但需要一些时间才能获得浏览器支持。