2014-04-23 15 views
7

Co usiłuję zrobićKątowe: Dlaczego uzasadnienie CSS nie działa z powtórzeniem ng?

Staram się równomiernie Space li w ul (uzasadnić). CSS działa, gdy koduję kod li, ale kiedy używam ng-repeat, CSS nie jest już stosowany.

HTML

<div ng-app="SampleApp"> 
    <div ng-controller="ListCtrl"> 
     <ul class="two-column"> 
      <li></li> 
      <li></li> 
      <li></li> 
      <li></li> 
     </ul> 

     <ul class="two-column"> 
      <li ng-repeat="item in items"></li> 
     </ul> 
    </div> 
</div> 

CSS

.two-column { 
    text-align: justify; 
} 

.two-column:after { 
    content: ''; 
    display: inline-block; 
    width: 100%; 
} 

skrzypcach

http://jsfiddle.net/RyanWalters/M8228/

Oczekiwany wynik

Obie listy powinny zawierać odstępy między poszczególnymi li.

Rzeczywisty wynik

Lista generowana z ng-repeat ma przestrzeń pomiędzy każdym li.

Dlaczego tak się dzieje?

Odpowiedz

13

Biała spacja pomiędzy elementami li (niezbędna do uzasadnienia) nie jest emitowana z powtórzeniem Angulara. Musisz również zawinąć białe spacje, aby się powtórzyły. Można zrobić coś takiego:

<span ng-repeat-start="item in items"></span> 
    <li></li> 
<span ng-repeat-end></span> 

http://jsfiddle.net/M8228/1/

+0

@Populus I raczej się zgadza. Najlepiej byłoby, gdyby wersja komentarza do dyrektywy powtarzania, taka jak Knockout, umożliwiła, ale nie jest tak w przypadku Angulara –

+1

lub trzeba przemyśleć, dlaczego w ogóle trzeba usprawiedliwić wiązkę 'inline-block' . Jeśli masz określoną liczbę przedmiotów, elementy powinny być ustalone na szerokość; jeśli liczba może się różnić, użycie opcji justowania daje niespójne wyniki, które są złe dla UX. – Populus

+0

@Populus: Masz rację, że to źle dla UX. Miałem dokładnie ten sam problem i kiedy w końcu udało mi się go uruchomić, wyglądało to dziwnie. – awe

-1

próbowałeś

<ul class="two-column" ng-repeat="item in items"> 
      <li></li> 
     </ul> 

i float li elementy?

css:

.two-column { 
    list-style: none; 
    padding: 0; 
} 



.two-column li { 
    background-color: #f00; 
    border: 1px solid #000; 
    display: inline-block; 
    height: 50px; 
    width: 100px; 
    margin-left:10px; 
margin-top:10px; 
    float:left; 
} 
+0

Oczywiście nie wiesz, co usprawiedliwia. Jest przeznaczony do równomiernego rozrzucania przedmiotów na całej szerokości kontenera. Oryginalnie jest przeznaczony do posiadania tekstu, który jest usprawiedliwiony wewnątrz akapitu, tak że słowa po lewej idealnie się wyrównują, a słowa są rozłożone z prawidłową przestrzenią pomiędzy, więc słowa również idealnie wyrównują się po prawej stronie.Można to również wykorzystać w skrzynkach za pomocą 'display: inline-block', które zasadniczo mówią, że pudełko zachowuje się jak" element tekstowy ", dzięki czemu można używać technik przepływu tekstu do obsługi układu. – awe

Powiązane problemy