2017-06-19 3 views
0

Ich möchte eine Zeile nach einigem Text einfügen, aber sobald es maximale Breite (170px) erreicht, möchte ich Ellipsen zeigen.Ellipsis funktioniert nicht korrekt in Firefox für Pseudo-Element

aber in firefox jedes Mal zeigt es Ellipsen, die ich nicht will.

Ich möchte gleich in Firefox die Art arbeiten, wie es in Chrom und IE arbeitet.

div { 
 
    max-width: 170px; 
 
    background-color: #c7bdbd; 
 
} 
 

 
h1 { 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
    white-space: nowrap; 
 
} 
 

 
h1:after { 
 
    content: ''; 
 
    display: inline-block; 
 
    width: 100%; 
 
    height: 100%; 
 
    margin-right: -100%; 
 
    border-bottom: 1px solid #000; 
 
}
<div> 
 
    <h1>Title</h1> 
 
    <h1>Longer Title</h1> 
 
</div>

+0

Firefox ist nicht in der Lage, die Breite als 100% richtig zu interpretieren und somit zeigt Ellipse immer. Um dies zu überprüfen, geben Sie der Pseudoklasse –

+0

eine explizite Breite. Der :: after ist einfach zu groß, um ihn aufgrund seiner Breite in die h1 einzufügen. Der negative rechte Rand ungeachtet. Können Sie ein Beispiel geben, das zeigt, warum das :: after überhaupt benötigt wird? Wenn Sie es entfernen (oder einige Eigenschaften davon wie "Anzeige" oder "Breite"), funktioniert das Snippet wie erwartet. –

+0

@MrLister Das After-Pseudo-Element wurde benötigt, um Zeile nach Text anzuzeigen. – Mahi

Antwort

1

Sie können die Pseudo-Element absolute Position. Ich denke, das Problem ist, dass der Ellipsen-Stil ist Firefox behandelt das Inline-Pseudo-Element als Text und Auslösen der Ellipse, aber es wird dann die Auslassungspunkte an den eigentlichen Text angehängt. Durch Anwenden der absoluten Position auf das Pseudoelement wird dieses Verhalten gestoppt.

UPDATE: Nach dem Lesen darüber ist es eigentlich ein Fehler in Chrom. Firefox interpretiert die Spezifikation für overflow:ellipsis; korrekt.

https://bugzilla.mozilla.org/show_bug.cgi?id=1346436

div { 
 
    max-width: 170px; 
 
    background-color: #c7bdbd; 
 
} 
 

 
h1 { 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
    white-space: nowrap; 
 
    position:relative; 
 
} 
 

 
h1:after { 
 
    content: ''; 
 
    width: 100%; 
 
    height: 100%; 
 
    border-bottom: 1px solid #000; 
 
    position:absolute; 
 
    bottom:8px; 
 
}
<div> 
 
    <h1>Title</h1> 
 
    <h1>Longer Title</h1> 
 
</div>

+0

du bist mein Held. Danke :) – Mahi

+0

bdw ich dachte seinen Fehler in Firefox: P – Mahi

+0

So habe ich, aber alle Inline-Elemente einschließlich Pseudo-Elemente mit 'overflow: Ellipse;' sollte die Auslassungszeichen auslösen, wenn es das übergeordnete überläuft. Das Problem besteht darin, dass das Pseudo-Element keinen Inhalt hat, also gibt es nichts, an das die Ellipse angehängt werden kann. – WizardCoder

Verwandte Themen