2010-08-13 8 views
7

Gibt es eine Möglichkeit, die Grenze auf <hr> Element in IE6 loszuwerden, ohne es in ein anderes Element zu wickeln? Eine weitere Voraussetzung sind leider keine Hacks.make <hr> Tag unsichtbar in IE6?

Ich habe es geschafft, es für alle Browser zu tun, indem die Grenze als solche Styling:

hr.clear { 
    clear: both; 
    border: 1px solid transparent; 
    height: 0px; 
} 

Doch IE6 macht immer noch eine weiße Linie 1 Pixel.

+2

Warum nicht 'Grenze: keine'? Ich denke, es funktioniert sogar auf IE6. – zneak

+0

Beide Lösungen oben lassen eine 1-px-Zeile in ALLEN IE-Browsern. Ich teste mit IETester und IE8 unter Windows. – montrealist

Antwort

10

display: none funktioniert nicht, weil Sie die <hr> vollständig aus dem Elementfluss entfernen. Das verursacht, dass es aufhört, deine Hin- und Herbewegungen zu löschen.

Wenn Sie OK haben und es vollständig ausblenden, verwenden Sie stattdessen visibility: hidden. Es wird immer noch schwimmt, und dies funktioniert auf allen IEs:

hr { 
    clear: both; 
    visibility: hidden; 
} 
+0

Bang an. Vielen Dank! – montrealist

+0

klar: beide war ein MUSS für mich, Sichtbarkeit: nur versteckt hat nicht funktioniert .. –

1
+0

Ja, ich habe das gesehen. Aber ich brauche kein Bild, ich brauche es nur, um überhaupt unsichtbar zu sein. – montrealist

+0

.. 'display: none;' würde es einfach verstecken und die 1px vertikalen Raum, die das Plakat will, wird weg sein. – Hristo

+0

Ich muss es nicht verstecken, sondern nur seine Grenze loswerden. Ich brauche es als Clearing-Element. Daher ist 'display: none' keine Option. – montrealist

1

Das Problem ist also, dass der IE nicht <hr> Grenzen als "Grenzen" nicht berücksichtigt. Wenn Sie

border: 1px #f0f solid; 

... festlegen, wird ein fuchsiafarbener Rahmen um den vorhandenen abgeschrägten Rahmen hinzugefügt. Glücklicherweise machen Firefox und IE8 dies gleich und erkennen, dass border: 0; bedeutet, dass ich keine Grenze möchte. Leider machen IE 7 und niedrigere Versionen dies nicht.

So Ihre Frage zu beantworten ... keine ... gibt es keine Möglichkeit der Grenze in IE6 ohne Verpackung in einem anderen Elemente oder Hacking es (I haven auf <hr> Element, um loszuwerden, Ich habe aus meiner Erfahrung einen Weg gefunden, dies zu tun.

Ihre Optionen wickeln sind entweder die <hr> in einem <div>, wenn Sie eine solide Hintergrundfarbe haben, der von der Hintergrundfarbe der color Eigenschaft oder Bilder für den Hintergrund verwenden.

Option 1:

<div style="height:1px; background: transparent;"> 
    <hr style="display:none;" /> 
</div> 

Option 2:

hr.clear { 
    border: 0 none; 
    height: 1px; 
    color: #ffffff; /* if your bg is white, otherwise choose the right color */ 
} 

Option 3 ... check this out: http://blog.neatlysliced.com/2008/03/hr-image-replacement/

Sorry, dass IE (ältere Versionen) spielt nicht durch die Regeln. Ich hoffe das hilft.