2016-08-26 3 views
1

Ich versuche, eine Unterstreichung zu machen, die 50% der Länge des Wortes und zentriert unter dem Wort schwebt.Benutzerdefinierte Unterstreichung, um die Breite des Inhalts anzupassen

Die Breite im Pseudo-Selektor nimmt die Breite des nav eher als die Breite des a wird schwebend, trotz der Auswahl der a.

Bei der Einstellung der left-Eigenschaft ist es die linke Seite der nav statt links von der a. Ich brauche es relativ zu dem Gegenstand, der schwebt.

Hier ist der relevante Code:

nav a:hover::before{ 
    position: absolute; 
    left: calc(50% - 10%); 
    bottom: 0; 
    width: 20%; 
    height: 1px; 
    background: #7b0700; 
    content: ""; 
} 

und ein CodePen

http://codepen.io/WallyNally/pen/dXxrgj

Irgendwelche Vorschläge? Danke.

+0

Was genau haben Sie unterstrichen? Ich sehe den ersten Buchstaben jedes Links unterstrichen, wenn er überlagert ist. – zer00ne

Antwort

4

Sie waren fast da!

Fehlende Teil:

nav a { 
    position: relative; 
} 

ohne dass der Linienpositionen zu einem Element in DOM (mit Position absolute, relative, fixiert, oder, wenn der Körper fehlt).

Wie bei 50% Breite, würde ich das tun:

nav a:hover::before { 
    position: absolute; 
    bottom: 0; 
    height: 1px; 
    background: #7b0700; 
    content: ""; 

    /* instead of width: */ 
    left: 25%; 
    right: 25%; 

}

Gabel aus dem Code: http://codepen.io/anon/pen/BzXKrB

+0

Ich mag Ihre Lösung für 50% Breite ohne die Verwendung der 'Breite' Attribut. Eine andere Möglichkeit wäre, das Attribut CSS3 ['transform'] (http://www.w3schools.com/cssref/css3_pr_transform.asp) zu verwenden. I.E. 'Breite: 50%; transform: translate (50%, 50%); ' –

+0

Ich benutze immer links, wenn möglich, denn mit 'width: 100%' verhält es sich manchmal trickreich, wenn die Bildlaufleiste erscheint. Es ist also eine allgemeine Regel für mich, da es in mehr Situationen sicherer ist. Aber es gibt mehr als eine Möglichkeit, dorthin zu gelangen, und alles hängt vom Einzelfall ab. – Seb

+0

Definitiv, obwohl Ihre Lösung für mehrere Webbrowser mehr Cross-Version-kompatibel scheint. Wenn Sie etwas ohne CSS3-spezifische Attribute tun können, wird es wahrscheinlich die bessere Option sein. Schöne Lösung! –

Verwandte Themen