Ich möchte einen Rahmen zu meiner Schaltfläche im Hover-Ereignis hinzufügen, ohne die Schaltfläche oder irgendetwas zu verschieben [duplizieren]

8

Ich möchte jetzt einen Rahmen bei Hover auf einer Schaltfläche implementieren.

Diese Taste befindet sich in einem Div zusammen mit 3 anderen Tasten. Sobald ich jedoch darüber schwebe, wird der Rahmen angezeigt, aber gleichzeitig vergrößert der Button auch die Größe des hinzugefügten Rahmens, was ich nicht im Sinn habe.

Ich machte eine Fiedel, um das Problem zu demonstrieren: Klick mich

Ich habe hier etwas über dieses Thema gelesen und tatsächlich eine Lösung gefunden, indem ich margin-top: 3px; hinzugefügt habe. zu den Hover-Klassen aber, die den Button "quetschen", was ich nicht will.

Stattdessen möchte ich, dass die Schaltfläche nicht komprimiert oder so aussieht, sondern einfach mit einem 4px-Rahmen, der die oberen 4 px der Schaltfläche überlagert.

Irgendwelche Ratschläge?

Vielen Dank im Voraus

    
Sossenbinder 14.04.2015, 13:30
quelle

7 Antworten

6

Sie könnten stattdessen einen Box-Schatten verwenden, da dies die Positionierung nicht beeinflusst:

%Vor% %Vor%
    
jbutler483 14.04.2015, 13:35
quelle
3

Ich habe ein schnelles Beispiel erstellt: Ссылка Und eines mit nur oben oder unten Ссылка

Verwenden Sie den Rand, um die Rahmenbreite zu ersetzen, wenn sie nicht sichtbar ist.

%Vor%     
Alex 14.04.2015 13:35
quelle
3

Sie können:

%Vor%     
Roko C. Buljan 14.04.2015 13:33
quelle
2

Style deine Taste, um vertical-align zu top zu haben. Fügen Sie am Ende Ihres CSS den folgenden Stil hinzu:

%Vor%

Aktualisierte jsFiddle

Lesen Sie: vertical-align | MDN     
Rahul Desai 14.04.2015 13:34
quelle
2

Versuchen Sie zu verstehen, was passiert.

Sie möchten, dass Schaltflächen nicht gedrückt werden, sondern dass ein Rahmen oben hinzugefügt wird.

Anfangs war Ihre Schaltfläche height 25px und border war 1px .

Beim Schweben bleibt Ihre height gleich, aber die border wird um 3px erhöht, wodurch Ihre Schaltfläche gedrückt wird.

Lösung :

Hover : height muss erhöht werden, um erhöhte border ( 4px-1px = 3px ) aufzunehmen ( um die Schaltfläche nicht zu drücken) .

Wenn Sie dies nur tun, werden Sie feststellen, dass der Knopf nach unten schaltet.

Um dies zu vermeiden, fügen Sie margin of 4-1 = 3px zu Ihrer functionButton class hinzu, um die erhöhte height zu kompensieren.

Fügen Sie in margin eine 3px von - hover class hinzu, da height bereits um 3px erhöht ist.

%Vor%

%Vor% %Vor%
    
Ankit 14.04.2015 13:41
quelle
0

Sie brauchen dazu wahrscheinlich kein Javascript.

Sie können Box-Sizing verwenden, um sicherzustellen, dass Rahmen in Ihren Dimensionen und vertikale Ausrichtung enthalten sind, um die Position beizubehalten.

%Vor%

%Vor% %Vor%
    
Paulie_D 14.04.2015 13:35
quelle
0

Verwenden Sie folgende CSS, die ich einige Änderungen in Ihrem CSS vorgenommen habe und wie es nach Ihren Anforderungen funktioniert, versuchen Sie Folgendes:

%Vor%     
anand kulkarni 14.04.2015 13:48
quelle

Tags und Links