2013-07-19 14 views
15

Na przykładCzy w CSS można wybrać ostatni element przed zawinięciem?

Mam kilka stronie div obok siebie, a każda strefa ma border-right: 1px

Elementem dominującym jest pewna szerokość więc w pewnym momencie, dodatkowych div zawijany do następnej linii.

W gruncie rzeczy NIE chcę obramowania prawej strony dla ostatniego elementu div przed zawijaniem.

Jeśli to nie ma sensu, mogę utworzyć skrzypce. Po prostu chcę wiedzieć, czy mogę skierować ostatni div przed wrapem. (ostatnie dziecko będzie celować w ostatni element div, który jest w następnym wierszu, który nie jest potrzebny).

+0

To ma sens, ale utwórz fiddl i tak. Chcę wiedzieć, jak wyświetlasz elementy div obok siebie; z floatem, display: inline-block, etc? –

+2

W każdym razie, moje przeczucie mówi, że łatwiej będzie dać divom lewą krawędź, a następnie ukryć tę granicę po lewej stronie kontenera. –

+1

@MrLister Czy nie spowodowałoby to tego samego problemu poza tym, że teraz próbujemy znaleźć pierwsze dziecko każdego dynamicznie uformowanego rzędu? O ile nie planujesz ukryć tej granicy w kontenerze, pozostawiając margines ujemny? Ale możliwe jest, że granica musi znajdować się po prawej stronie, w którym to przypadku brzeg pozostawiony nie działałby na ostatnim elemencie przed owijką – Huangism

Odpowiedz

3

Sprawdź, ile kolumn otrzymujesz z bieżącą szerokością, na stałe lub z JS, a następnie użyj nth-child selektor.

Na przykład, jeśli masz 3 kolumny w rzędzie z każdej div posiadającego klasę col byłoby

div.col:nth-child(3n){border-right:none;} 

Selektor nth-child może być modyfikowana w zależności jednak wiele kolumn w każdym wierszu div s.

+3

Jeśli elementy mają nieregularne szerokości, to nie będzie działać. – cimmanon

+0

Jeśli mają nieregularne szerokości, mógłby po prostu dołączyć klasę css z tym samym pomysłem.Mając trochę JS, może on celować w każdy div z zakrętką i umieścić na nim klasę – Jnatalzia

2

Nie ma możliwości wybrania ostatniego elementu z wielu linii, a jedynie :last-child.

Jeśli twoje elementy są ustawione w kolumnach, moduł wielokolumnowy może Cię zainteresować. Ma właściwość kolumny, która jest podobna do obramowania, ale pojawia się tylko w pionie między kolumnami, nigdy na zewnętrznych krawędziach.

http://cssdeck.com/labs/febtiiet

.container { 
    columns: 20em; 
    column-rule: 1px solid; 
} 

Prefiksy mogą być wymagane: http://caniuse.com/#feat=multicolumn

W przeciwnym razie trzeba będzie przełączyć się na umieszczenie granicę na lewym jak MrLister proponuje:

http://cssdeck.com/labs/f8qjngd4

.container { 
    overflow: hidden; 
    padding: 0; 
    border-style: none; 
} 

.child { 
    border-left: 1px solid; 
    position: relative; 
    left: -1px; 
    display: inline-block; 
    width: 20em; 
}