2016-03-19 5 views
0

Wenn Sie im folgenden Beispiel den Mauszeiger über die Navigationsleiste bewegen, wird sie erweitert. Während es sich ausdehnt, sieht der Text, Text-Schatten, um genauer zu sein, komisch aus.text-shadow sieht im Übergang seltsam aus

body { 
 
    background-color: gainsboro; 
 
    margin: 0; 
 
} 
 
#box { 
 
    position: fixed; 
 
    width: 200px; 
 
    height: 100vh; 
 
    background-color: rgb(100,150,165); 
 
    box-sizing: border-box; 
 
    transition: width .5s; 
 
    overflow: hidden; 
 
    border-right: 1px solid rgba(0,0,0,.1); 
 
    box-shadow: 1px 0 2px rgba(0,0,0,.25), inset -1px -1px 0 rgba(255,255,255,.075); 
 
    white-space: nowrap; 
 
} 
 
span { 
 
    font-family: arial; 
 
    color: rgba(255,255,255,.65); 
 
    text-shadow: 0 1px 1px rgba(0,0,0,.4); 
 
    display: inline-block; 
 
    margin: 20px; 
 
} 
 
.line { 
 
    border-bottom: 1px solid rgba(255,255,255,.2); 
 
    opacity: 0; 
 
    transition: opacity .2s; 
 
} 
 
#box.narrow { 
 
    width: 15px; 
 
} 
 
#box.narrow:hover { 
 
    width: 200px; 
 
} 
 
#box.narrow:hover .line { 
 
    opacity: 1; 
 
}
<div id="box" class="narrow"> 
 
\t <span>Homepage</span> 
 
\t <div class="line"></div> 
 
\t <span>Nav item 1</span> 
 
\t <div class="line"></div> 
 
\t <span>Nav item 2</span> 
 
\t <div class="line"></div> 
 
</div>

Ich habe einige Experimente und position: fixed auf den #box behebt das Problem zu deaktivieren. Auch die Deaktivierung der box-shadow behebt das Problem, aber ich muss beide Stile beibehalten.

enter image description here

Mit Chrome 49 (x86) auf Win 8.1 Pro (x64)

+2

Kein Problem mit meinem Browser. Google Chrome 49 hat einige seltsame Dinge, wie alle css/html Probleme, die ich in den letzten 3 Tagen gesehen habe, sind damit verbunden. –

+0

Chrome v50.0.2661.18 (dev-m) und sehen auch nichts falsch (unter Windows 10). – Harry

Antwort

0

Das Flackern ist sehr subtil, aber ich war in der Lage es in Chrome, 49. Es wird durch den Übergang von der verursacht opacity der .line.

Durch Ersetzen der opacity Übergang auf .line mit einer border-color Übergang das Flimmern ist behoben.

.line { 
    border-bottom: 1px solid rgba(255,255,255,0); 
    transition: border-color .2s; 
} 
#box.narrow:hover .line { 
border-color:rgba(255,255,255,.2)} 
+1

Ich habe Ihre Lösung auf die Demo angewendet und es hat funktioniert, aber nicht meine eigentliche Navigationsleiste. Das liegt daran, dass ich in jedem Gegenstand zwei weitere Elemente hatte; Navigationssymbol und ein Symbol für die Auswahl des Untermenüs. Dies sind Schriftsymbole, daher wird auch Text-Schatten auf sie angewendet. Ich ändere auch die Opazität des Symbols für das Untermenüsymbol bei Hover, so dass das Flimmern nicht nur auf das Element '.line' zurückzuführen ist. Ich habe etwas mehr experimentiert. Inspiriert von Ihrer Antwort habe ich herausgefunden, dass das Problem auf den Übergang der Undurchsichtigkeit zurückzuführen ist. Wenn ich statt der Deckkraft Farbe und Text-Schatten übertrage, sehe ich kein Flimmern. – akinuri

Verwandte Themen