2015-01-04 76 views
4

仅当后面还有其他元素时,我才想要元素。 这里是我到目前为止的代码:制作:仅在元素后面有其他元素时

<table id='table_1'> 
    <tr> 
    <td>A</td> 
    <td>B</td> 
    <td>C</td> 
</tr> 
</table> 

是否有可能有:后后,A和B,但不是C?

我的CSS

#table_1 td:after{ 
content: ""; 
background: black; 
border: 1px solid black; 
position: relative; 
margin-left: 10px; 
} 

回答

3

最简单的办法做到这一点是使用不(:最后一子):

#table_1 td:not(:last-child):after{ 
    content: ""; 
    background: black; 
    border: 1px solid black; 
    position: relative; 
    margin-left: 10px; 
} 

Working exmaple

你有这样,只有一个选择和你不需要重写你的代码。

2

您可以使用td:last-child选择任何td元素是它的父元素的最后一个孩子,然后隐藏其:after伪元素:

#table_1 td:last-child:after { 
    display:none; 
} 

演示:

#table_1 td:after { 
 
    content:""; 
 
    background: black; 
 
    border: 1px solid black; 
 
    position: relative; 
 
    margin-left: 10px; 
 
} 
 
#table_1 td:last-child:after { 
 
    display:none; 
 
}
<table id='table_1'> 
 
    <tr> 
 
     <td>A</td> 
 
     <td>B</td> 
 
     <td>C</td> 
 
    </tr> 
 
</table>

3

可以使用:before+旧的浏览器支持

Adjacent sibling selector

#table_1 td { 
 
    position: relative; 
 
} 
 
#table_1 td + td:before { 
 
    content: ""; 
 
    position: absolute; 
 
    background: black; 
 
    border: 1px solid black; 
 
    position: relative; 
 
    margin-left: 10px; 
 
    margin-right: 10px; 
 
}
<table id='table_1'> 
 
    <tr> 
 
    <td>A</td> 
 
    <td>B</td> 
 
    <td>C</td> 
 
    </tr> 
 
</table>

+0

把一些元素是不一样的东西放在“才”下一个“后”元素,因为伪元素出现在真实元素的内部(在其真实内容之前或之前)。所以这可能是一个有趣的不同方法,但这不是对问题的回答。 – 2015-01-04 12:17:21