2011-07-15 28 views
15

yüzden ateş Şimdi öylesineIE ekran satır içi blok

<div style='width: 200px; border: 1px solid black;'> 
    <div style='display: inline-block; width: 70px; border: 1px solid green;'> 
    asdfasdf<br />asdf 
    </div> 
    <div style='display: inline-block; width: 70px; border: 1px solid green;'> 
    asdfasdf<br />were 
    </div> 
</div> 

gibi yapıyor ve gayet güzel görüntüler ancak internet explorer 8'de öyle değil krom ediyorum. Düzenleri var, bu yüzden sorun değil ve genişlikler yeterince küçük olduğundan, bir satıra sığar.

Ben kullanırsanız yayılma Onun yerine öyle iş, ancak ben gerçekten div en inline-block öğelerine varsayılan olarak block olan unsurları geçemezsiniz IE

+1

belgede çalışır. Belgenizin bir doktrin bildirimi var mı? – BoltClock

+0

Ne demek "işe yaramıyor?" İstediğiniz etki nedir? – Kyle

+0

Ahhh tamam iyi XHTML veya HTML5 – csteifel

cevap

28

deneyin.

inline-block'un satır içi öğeler için çalışmasının nedeni, hasLayout'u tetiklemesidir. Ve satır içi öğeleri için düzen var tam olarak bir inline-block gibi çalışır.

Yani, inline bunları yapmak, blok düzeyi öğelerde inline-block çalışması için ve bir şekilde, gibi zoom: 1hasLayout kullanarak tetikleyebilir.

Kodunuz için iki yol vardır: div s değerini span s ile değiştirin veya satır içi şifreler ekleyin (veya kodu harici stil sayfalarına taşıyın ve koşullu yorumları kullanın). inline kesmek ile versiyon şu şekilde görünecektir:

<div style='width: 200px; border: 1px solid black;'> 
    <div style='display: inline-block; width: 70px; border: 1px solid green;*display:inline;zoom:1;'> 
    asdfasdf<br />asdf 
    </div> 
    <div style='display: inline-block; width: 70px; border: 1px solid green;*display:inline;zoom:1;'> 
    asdfasdf<br />were 
    </div> 
</div> 
+0

CSS hacks, Win XP'de IE8 üzerinde çalışmadı. – Piero

1

IE < 8 'dont iş neden konw istiyoruz. Ne kadar zor olursa olsun, float IIRC'yi kullanmazsanız her zaman block kalır.

Örneğinizde, bir <div> kullanmanız gerekmiyor gibi görünüyor. Bu durumda, neden bir <span> veya varsayılan olarak inline olan bir öğe kullanmayın. Aksi halde, floating cevabıdır.

+0

Bu doğru değil. IE8 _inline-block_ ekran modunu gayet iyi anlar. Ancak IE7 bu modun tamamen farkında değil. _inline_ ekranına görüntüyü ayarlayarak ve bu öğe için düzenini zorlayarak _inline-block_ davranışını öykünebilirsiniz (örneğin, _zoom_ özelliği ile). – oddy

+0

Yani öyle. IE8 'inline-block' ile düzgün çalışıyor gibi görünüyor, cevabımı güncelleyeceğim. – Mig

+2

IE8, satır içi bloğunun üst kaplamasının büyümesine veya küçülmesine neden olacak öğeleri gizlemeye/göstermeye başlayana kadar satır içi bloğu ile iyi çalışır. – ScubaSteve

0

IE eski sürümleri blok seviyesinden elemanlar için inline-block anlamıyorum bu

<style type="text/css"> 
.one { 
    width: 200px; 
    border: 1px solid black; 
} 
.two { 
    display: -moz-inline-box; 
    display: inline-block; 
    width: 70px; 
    border: 1px solid green; 
} 
* html .two { 
    display: inline; 
} 
* + html .two { 
    display: inline; 
} 
</style> 
<div class="one"> 
    <div class="two"> 
    asdfasdf<br />asdf 
    </div> 
    <div class="two"> 
    asdfasdf<br />were 
    </div> 
</div> 
2

doktor tipi diğer tarayıcı için inline-block ekleyebilirsiniz ancak IE için şunları yapabilirsiniz IE

için
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
3

display: inline-block; *zoom: 1; *display: inline;

çalıştı değiştirme * ile stil ekleyin. yalnızca

İlgili konular