2016-11-25 2 views
2

Ich entwerfe eine einfache Liste mit wenig CSS. Wenn der Benutzer in diesem Design über ein Listenelement schwebt, wird der obere und untere Rand hervorgehoben. Aber außer dem letzten Hover ist nur ein Rahmen markiert. Wenn ich margin-bottom: -1px; entferne, wird 2px angezeigt.Mein Rand-Effekt funktioniert nicht korrekt, wenn ich den Mauszeiger schwebe

.list { 
 
    list-style-type: none; 
 
    color: #333; 
 
    padding: 0; 
 
    background-color: #fff; 
 
} 
 

 
.list-item { 
 
    padding-top: 10px; 
 
    padding-bottom: 10px; 
 
    border-top: 1px solid #eeeeef; 
 
    border-bottom: 1px solid #eeeeef; 
 
    margin-bottom: -1px; 
 
} 
 
.list-item:hover { 
 
    color: #0275d8; 
 
    border-top: 1px solid #0275d8; 
 
    border-bottom: 1px solid #0275d8; 
 
    
 
}
<ul class='list'> 
 
    <li class='list-item'>Sample List 1</li> 
 
    <li class='list-item'>Sample List 2</li> 
 
    <li class='list-item'>Sample List 3</li> 
 
</ul>

Fiddle

+0

Aber zwischen der Faust und der zweiten Li haben Sie auch eine 2px Grenze. Willst du das ? – theoretisch

+0

Ich kann Ihr Problem nicht neu erstellen, wenn Sie 'margin-bottom: -1px;' entfernen. Welchen Browser benutzen Sie? – Roberrrt

+0

@theoretisch: nein. Ich möchte nicht 2px Grenze zeigen. nur 1px zum anzeigen. – Kiran

Antwort

2

Dies liegt daran, die .list-item unten noch eine #eeeeef border-top hat. Eine einfache Möglichkeit, dies zu beheben, ist zu sagen, die nächste .list-item sollte einen Rand oben auf geändert haben.

Das können wir tun, wie folgt:

.list { 
 
    list-style-type: none; 
 
    color: #333; 
 
    padding: 0; 
 
    background-color: #fff; 
 
} 
 
.list-item { 
 
    padding: 10px 0; 
 
    border: solid #eeeeef; 
 
    border-width: 1px 0; 
 
    margin-bottom: -1px; 
 
} 
 
.list-item:hover { 
 
    color: #0275d8; 
 
    border-color: #0275d8; 
 
} 
 

 
/* next .list-item */ 
 
.list-item:hover + .list-item { 
 
    border-top-color: #0275d8; 
 
}
<ul class='list'> 
 
    <li class='list-item'>Sample List 1</li> 
 
    <li class='list-item'>Sample List 2</li> 
 
    <li class='list-item'>Sample List 3</li> 
 
</ul>

Hoffnung, das hilft.

+0

Ja es funktioniert so, wie ich will. Vielen Dank! – Kiran

+0

ahh ok gut, ich dachte die Linie zwischen dem ersten und zweiten li sollte auch 1px sein. – theoretisch

+1

@Kiran Ich habe jetzt ein wenig Optimierung für das CSS gemacht. –

0

Dies soll Ihnen helfen. Es ist keine schöne Lösung, aber es funktioniert, denke ich.

.list { 
 
    list-style-type: none; 
 
    color: #333; 
 
    padding: 0; 
 
} 
 
.list-item { 
 
    padding-top: 10px; 
 
    padding-bottom: 10px; 
 
    border-top: 1px solid grey; 
 
} 
 
.list-item:hover{ 
 
    color: #0275d8; 
 
    border-color: #0275d8; 
 
} 
 
li:hover + li { 
 
    border-top-color: #0275d8; 
 
} 
 
li:last-child{ 
 
    border-bottom: 1px solid grey; 
 
}
<ul class='list'> 
 
    <li class='list-item'>Sample List 1</li> 
 
    <li class='list-item'>Sample List 2</li> 
 
    <li class='list-item'>Sample List 3</li> 
 
</ul>

+0

Seine Arbeit zeigt aber immer noch den grauen unteren Rand, wenn man schwebt. – Kiran

+0

@Kiran Ich reparierte es versuchen es – theoretisch

+0

Ja, aber @ Andrew's ist sauberer. Als dein Li-Stil mein anderes 'li' ausbeutet! – Kiran

-1

diese Klasse Bitte bewerben. ändern die margin bottom:-1px zu 0px

.list { 
 
    list-style-type: none; 
 
    color: #333; 
 
    padding: 0; 
 
    background-color: #fff; 
 
} 
 

 
.list-item { 
 
    padding-top: 10px; 
 
    padding-bottom: 10px; 
 
    border-top: 1px solid #eeeeef; 
 
    border-bottom: 1px solid #eeeeef; 
 
    margin-bottom: 0px; 
 
} 
 
.list-item:hover { 
 
    color: #0275d8; 
 
    border-top: 1px solid #0275d8; 
 
    border-bottom: 1px solid #0275d8; 
 
    
 
}
<ul class='list'> 
 
    <li class='list-item'>Sample List 1</li> 
 
    <li class='list-item'>Sample List 2</li> 
 
    <li class='list-item'>Sample List 3</li> 
 
</ul>

+0

Bitte überprüfen Sie diese –

+0

https://jsfiddle.net/sonymathew/ojky4zhj/ –

+0

Haben Sie überprüft, dass es 2px zeigt Grenze normalerweise? – Kiran

Verwandte Themen