2011-07-17 9 views
7

HTML jest:Tło CSS obraz nie pokazując w IE7 tylko

<div class="choose-os"> 
<p> 
    <a href="someLink" class="windows">Microsoft Windows</a> 
    <a href="someOtherLink" class="macos">Apple Mac OS</a> 
</p> 
</div> 

CSS jest:

.choose-os { 
    margin: 20px 0; 
    padding: 20px; 
    background: #e7eefa; 
} 
.choose-os p { 
    margin: 0; 
} 
.choose-os p a { 
    display: inline-block; 
    text-indent: -100000px; 
    height: 56px; 
    width: 308px; 
} 
.choose-os p a.windows { 
    background: url(../images/button-windows-bg.png) 0 0; 
} 
.choose-os p a.macos { 
    background: url(../images/button-macos-bg.png) 0 0; 
} 
.choose-os p a:hover { 
    background-position: 0 -56px; 
} 

Wszelkie sugestie będą bardzo mile widziane, aby mieć obraz w tle pojawiają się również na IE7.

+0

na żywo strona jest: http://www.landlordmax.com/downloads –

Odpowiedz

11

text-indent: -100000px; w połączeniu z inline-block powoduje, że oba elementy nie są widoczne w IE7 z powodu błędu.

Musisz znaleźć inny sposób na ukrycie tekstu dla IE7 (lub nie używać w ogóle inline-block, patrz poniżej dla tej bardziej odpowiedniej poprawki).

Opcje obejmują metodę w komentarzu lub poprzez @Sotiris:

.choose-os p a { 
    display: inline-block; 
    height: 56px; 
    width: 308px; 

    text-indent: -100000px; 

    /* for ie7 */ 
    *text-indent: 0; 
    *font-size: 0; 
    *line-height: 0 
} 

który wykorzystuje *property: value włamać się kilka razy, aby ukryć tekst w IE7.


Problem wydaje się być związany z użyciem display: inline-block.

Więc kolejny obejście (które Wolę mój poprzedni) wynosi:

.choose-os { 
    margin: 20px 0; 
    padding: 20px; 
    background: #e7eefa; 
    overflow: hidden 
} 
.choose-os p a { 
    float: left; 
    margin-right: 4px; 
    text-indent: -100000px; 
    height: 56px; 
    width: 308px; 
} 
+0

Bah, pokonaj mnie, +1 :) – andyb

+0

+1 prawdopodobnie chce ukryć tekst, zawijając go span 'a następnie' .choose-os span {display: none} 'zrobi lewy, ale ja don 't wiem, czy 'display: none' wpływa na SEO – Sotiris

+0

Właśnie wypróbowałem oba obejścia i żaden nie zdawał się działać ... –

-1

IE7 ma pewne poważne ograniczenia w CSS. Zalecałbym unikanie notacji skróconej i jawne deklarowanie każdej właściwości, a następnie sprawdzanie arkusza CSS here.

0

Aby wyświetlić inline-block prawidłowo w IE7, należy dodać następujące style .choose-os p a

zoom:1 
*display:inline 

(Gwiazda jest ważna! To ignorowane przez współczesnych przeglądarek, ale nie IE6/7)

IE7 nie robi szanuj blok inline, więc musisz zrobić trochę magii, aby to zadziałało. Jest to świetny opis tutaj: http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/

[edit] Jeśli text-indent jest również częścią sprawcy, może być lepiej trzyma się display:block i ustawienie float:left na swoich elementów. Prawdopodobnie wiele ważnych ścieżek do zrobienia :)

+0

'prace inline-block' w IE7, pod warunkiem, że element ma domyślny styl 'inline' (oczywiście' a'). Ten hack jest wymagany tylko wtedy, gdy stylizowany element ma domyślny styl 'block'. – Spudley

+0

Wystarczająco fair. Przesuwanie elementów wciąż jest lepszym rozwiązaniem; 'inline-block' właśnie wyskoczył na mnie. – Dominic