MozillaPL.org - polskie centrum Mozilli

Główne menu:

Jak ostylować div-y za pomocą :nth-child?

Jak tworzyć strony WWW zgodnie ze standardami

Moderator: Pomocy?!

Jak ostylować div-y za pomocą :nth-child?

Postautor: Grzegorz » 16 grudnia 2010, 12:50

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13

Mam następujący kod:

Kod: Zaznacz cały
<div id="container">
      <div id="content">

         <div id="post (jakiś numer id)" class="p (jakiś numer id) post">
         </div><!-- .post -->
         <div id="post (kolejny numer id)" class="p (kolejny numer id) post">
         </div><!-- .post -->
         <div id="post (kolejny numer id)" class="p (kolejny numer id) post">
         </div><!-- .post -->
         <div id="post (kolejny numer id)" class="p (kolejny numer id) post">
         </div><!-- .post -->
         <div id="post (kolejny numer id)" class="p (kolejny numer id) post">
         </div><!-- .post -->
         <div id="post (kolejny numer id)" class="p (kolejny numer id) post">
         </div><!-- .post -->
</div>


Gdzie -(jakiś numer id) jest generowany przez platformę, np. 'e12345', zatem id div-a jest w tym przykładzie następujące 'post e12345'. Jednocześnie następny może być już taki 'post e32745', a następny taki 'post e36685' itd.

Założenie jest taki, aby co 3 'post' był wyświetlany w pojedynczym wierszu w 100% szerokości, zaś pozostałe po dwa w jednej linii po 50% szerokości. Coś takiego:

Obrazek

Chciałem do tego wykorzystać :nth-* z CSS3, co zapisałem tak:
Kod: Zaznacz cały
#container #content:nth-child(3n+1):not(:last-child) .post {
   float: left;
   padding: 0;
   width: 920px;
   margin-right: 20px;
   margin-left: 20px;
   clear: both; }
.post {
   float: left;
   padding-top: 0;
   padding-right: 20px;
   padding-bottom: 0;
   padding-left: 20px;
   width: 440px; }


Roboczy kod całości można podejrzeć tu.

Posiłkowałem się przy tym polskim tłumaczeniami tekstów z Mozilla Hacks, ale najwyraźniej stosuję te właściwości wobec elementów, do których nie działają albo je źle oscylowałem.

Mógłby ktoś wskazać, gdzie popełniam błąd i czy da się ostylować div-y z powyższego przykładu.
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33

Odp: Jak ostylować div-y za pomocą :nth-child?

Postautor: dexter » 16 grudnia 2010, 13:07

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4

Zamieniłbym te deklaracje miejscami, bo teraz bardziej ogólna deklaracja klasy post nadpisuje ci szczegółową deklarację.
dexter
Moderator
 
Posty: 8326
Z nami od: 02 października 2004, 21:30

Odp: Jak ostylować div-y za pomocą :nth-child?

Postautor: Grzegorz » 16 grudnia 2010, 13:17

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13

Nie bardzo rozumiem... Chodzi o zmianę kolejności w strukturze dokumentu czy o wadliwą kolejność w arkuszu stylu? Mógłbyś pokazać, gdzie konkretnie w kodzie jest błąd lub wkleić poprawny? Czyżby chodziło o to, że w arkuszu stylu zwykłe div-y o klasie '.post' są nadpisywane formowaniem z '#container #content:nth-child(3n+1):not(:last-child) .post'? To powinno wystarczyć dodanie '!important', a to nie przynosi oczekiwanych rezultatów.
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33

Odp: Jak ostylować div-y za pomocą :nth-child?

Postautor: dexter » 16 grudnia 2010, 13:22

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4

W arkuszu stylu. W tej kolejności:
.post
#container #content:nth-child(3n+1):not(:last-child) .post

Bo przecież teraz powtarzające się własności będą nadpisywane (post wykona się zawsze i nadpisze własności z #container, a ty chcesz zrobić coś odwrotnego).
dexter
Moderator
 
Posty: 8326
Z nami od: 02 października 2004, 21:30

Odp: Jak ostylować div-y za pomocą :nth-child?

Postautor: Grzegorz » 16 grudnia 2010, 16:55

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13

Dzięki za pomoc. Udało mi się rozwiązać problem. Gdyby ktoś borykał się z podobnym problemem, poniżej załączam działający kod:

HTML:
Kod: Zaznacz cały
<div id="container">
   <div id="content">
      <div id="&ENTRY_ID;" class="post"></div>
      <div id="&ENTRY_ID;" class="post"></div>
      <div id="&ENTRY_ID;" class="post"></div>
      ...
   </div>
</div>


CSS:
Kod: Zaznacz cały
#content div.post:nth-child(3n+1) {
   float: left;
   padding: 0;
   width: 920px;
   margin-right: 20px;
   margin-left: 20px;
   clear: both;
}

#content div.post:nth-child(3n+2) {
   float: left;
   padding-top: 0;
   padding-right: 20px;
   padding-bottom: 0;
   padding-left: 20px;
   width: 440px;
   clear: left;
   display: block-inline;
}

#content div.post:nth-child(3n+3) {
   float: left;
   padding-top: 0;
   padding-right: 20px;
   padding-bottom: 0;
   padding-left: 20px;
   width: 440px;
   clear: right;
   display: block-inline;
}
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33


Wróć do Tworzenie stron WWW

Kto jest online

Zarejestrowani użytkownicy: Bing [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: