Kullanma: sonra yüzen öğeleri temizlemek için


106

Bir listem var ve li'lerin bir float:left;. Sonrasındaki içerikler <ul>doğru şekilde hizalanmalıdır. Bu nedenle aşağıdakileri oluşturabilirim:

http://jsfiddle.net/8unU8/

Şöyle <div class="clear">sözde seçicileri kullanarak kaldırabileceğimi düşündüm : after.

Ancak örnek işe yaramıyor:

http://jsfiddle.net/EyNnk/

Kayan öğeleri temizlemek için her zaman ayrı bir div oluşturmam gerekir mi?

Yanıtlar:


261

Şöyle yazın:

.wrapper:after {
    content: '';
    display: block;
    clear: both;
}

Bunu kontrol edin http://jsfiddle.net/EyNnk/1/


Böyle yapılır. ama lütfen anlambilimle ilgili cevabımdaki noktaya dikkat edin.
Alex

2
Sadece küçük bir bilgi: ::afterçift ​​kolon kullanmak, sözde öğeleri hedeflemenin önerilen yoludur.
Dennis98

11
Çift iki nokta üst üste (: :) CSS3 sözdizimini destekleyen her tarayıcı da yalnızca (:) sözdizimini destekler, ancak IE 8 yalnızca tek iki nokta üst üste işaretini destekler, bu nedenle şimdilik, en iyi tarayıcı desteği için yalnızca tek iki nokta üst üste kullanılması önerilir. :: sözde içeriği sözde seçicilerden ayırmak için girintilenen yeni formattır. IE 8 desteğine ihtiyacınız yoksa, çift iki nokta üst üste kullanmaktan çekinmeyin. css-tricks.com/almanac/selectors/a/after-and-before
retroriff

neden şunu koymalıyız: "content: ''; display: block;" ? ve ya satır içi bir sarmalayıcı istiyorsanız?
Lucke

6

Hayır, bunun gibi bir şey yapmak yeterli değil:

<ul class="clearfix">
  <li>one</li>
  <li>two></li>
</ul>

Ve aşağıdaki CSS:

ul li {float: left;}


.clearfix:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0;
}

.clearfix {
  display: inline-block;
}

html[xmlns] .clearfix {
   display: block;
}

* html .clearfix {
   height: 1%;
}

5

Bu da işe yarayacak:

.clearfix:before,
.clearfix:after {
    content: "";
    display: table;
} 

.clearfix:after {
    clear: both;
}

/* IE 6 & 7 */
.clearfix {
    zoom: 1;
}

Sınıf ver clearfixiçin ana örneğin eleman senin ulelemanı.

Kaynaklar burada ve burada .


1
display: table fazladan boşluk ekleyebilir; Bunun yerine display: block kullanıyorum
The Cog

0

'Dasda' metni asla bir etiketin içinde olmayacak, değil mi? Anlamsal olarak ve geçerli HTML olması için, buna açık sınıfı eklemeniz yeterlidir:

http://jsfiddle.net/EyNnk/2/


1
Hiç anlambilim değil. 1) Çocuğunun üzerinde yüzmesi durumunda ana öğeyi her zaman açıklıyoruz, örneğin UL'ye arka plan vermek istiyorsam, UL'nin arka planını vermek istiyorsam, UL net değil ve 2) Bir sorum var Neden net veriyorsun P.'den önce ayrı bir DIV'de sınıf sadece P'ye verirseniz bu da işe yarar
sandeep

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.