2014-08-29 31 views
1

我们假设我有一个div包装,里面有几个元素,放置为inline。当div的宽度减小时,元素将自动分解成新行......迄今为止都很好。CSS - 选择第一个换行后的孩子

现在我想的CSS :before内容添加到子元素,除非是先上线的那些...

有没有一种方法来检测,CSS只,如果元素是换行后的第一个元素吗?

编辑

跟进的例子... http://jsfiddle.net/kagfqt9j/

div的宽度造成儿童在三条线被打破。有一个“|”用:before设置分频器。但我不希望:before应用于线路的开始。

那么,我可以检测休息后的第一个元素?

注意:将其更改为:after不是一个解决方案,因为它会颠倒这个问题......然后我会得到“|”在行尾......我也无法拥有它。

+0

有可能是一个解决方案,如果你能provid e [在线编辑器]上的简化示例(http://jsfiddle.net/)。 – 2014-08-29 21:04:09

回答

2

如果你的小提琴是你的真实情况,容器overflow:hiddentext-align left:那么,你可以使用这个在容器外面的伪与阴性切缘设置:http://jsfiddle.net/kagfqt9j/1/

a { 
    display: inline-block; 
    margin-right:0.25em; 
    text-decoration:none;/* demo purpose */ 
} 

a:before { 
    content: "| ";/* extra white-space aside the pipe */ 
    margin-left:-0.25em; 
    color:black;/* demo purpose */ 
    pointer-events:none;/* demo purpose */ 
} 
+0

谢谢..我想出了一个类似的解决方案,但是我添加了一个内部div,将它放在左侧以隐藏“管道”,并向“:first-child”添加了一个页边距。认为没有办法用选择器来做......无论如何,你的解决方案更清洁,而这种“黑客”对我来说是可以接受的。我正在标记你是正确的答案。 – LcSalazar 2014-08-29 21:58:45

+0

太棒了!欢迎您,我没有想到这种情况是真正的,似乎太简单了,不真实:) – 2014-08-29 22:06:40

1

这是不可能使用CSS。

使用Javascript/JQuery,您可以找到每个元素的偏移量/位置,然后确定哪一个位于父div的最左边。

1

JS解决方案

var lastOffsetTop = -1; 
 
var elements = document.querySelector('.something'); 
 

 
for (var i = 0; i < elemenrs.length; i++) 
 
{ 
 
    if (elements[i].offsetTop != lastOffsetTop) 
 
    Sys.UI.DomElement.addCssClass(elements[i], 'firstInLine'); 
 
    else 
 
    Sys.UI.DomElement.removeCssClass(elements[i], 'firstInLine'); 
 

 
    lastOffsetTop = elemens.offsetTop; 
 

 
}