HTML link mit Polsterung und CSS-active funktioniert nicht
HTML-link mit Polsterung und CSS-active funktioniert nicht in Google Chrome, Apple Safari, Opera, Mozilla Firefox. Aber es funktioniert in Internet Explorer 8.
Hier ist ein Beispiel code. Versuchen Sie, klicken Sie auf Stapel - link nicht funktioniert, klicken Sie auf die Überlauf - link funktioniert. Durch die Werke, die ich meine - navigieren Sie zu StackOverflow-Seite.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>css active padding href problem</title>
<style type="text/css">
a{
display: inline-block;
background:#CCC;
border:1px solid #666;
padding:0 35px 0 0;
}
a:active{
padding:0 0 0 35px;
}
</style>
</head>
<body>
<div>
<p>Click on <i>Stack</i> - href does not work.
Click on <i>Overflow</i> - href works.
All browsers are affected.
Except IE.</p>
<a href="http://stackoverflow.com/">StackOverflow</a>
</div>
</body>
</html>
Warum es nicht funktioniert in den meisten Browsern?
Edit 2: Wenn Sie ändern :aktiv :hover, dann alles wie erwartet funktioniert in allen Browsern auf passiert und der Browser navigiert zu stackoverflow.com
Edit 3: Zu beweisen, dass es möglich ist, klicken Sie auf Polsterung Bereich, den Sie ändern können, Stil:
<style type="text/css">
a{
padding:0 0 0 35px;
}
</style>
Wenn link "bewegt", als jemand erwähnte, dann warum ist es möglich, klicken Sie auf bereits "verschoben" - link?
- Aktualisiert code - Hinzugefügt, hintergrund und Rahmen zu klären, das Objekt nicht zu bewegen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit Polsterung, der text bewegt sich Weg von, wo Sie geklickt haben. Dies ist dein code:
http://jsfiddle.net/ctrlfrk/3KsRx/
halten Sie die Maus-Taste auf den Stapel, und Sie werden sehen, dass der text bewegt sich Weg von der unter der Maus.
Was wollen Sie erreichen? Dies ist so zu arbeiten, wie es sollte. Wenn internet explorer folgt dem link, dann ist es falsch.
[Bearbeiten]
Klärung:
Das eigentliche problem ist hier, dass ein "click" - Ereignis scheint nur ausgelöst wird, wenn das mousedown-Ereignis Ziel entspricht, das mouseup-Ereignis-Ziel.
Wenn Sie klicken Sie auf den text in deinem Beispiel, wird das mousedown-Ziel ist ein
text node
was ist ein Kind deranchor
tag.Diese
text node
dann Weg bewegt, so dass das mouseup-Ereignis-Ziel ist einfach dieanchor
tag selbst.Mit :hover text-node bewegt sich Weg, bevor Sie klicken, so dass das mousedown-Ereignis Ziel ist die
anchor
tag, und das mouseup-Ereignis ist auch dieanchor
tag, also dem link gefolgt wird.[/Edit]
Ich habe eine Lösung gefunden!
http://jsfiddle.net/rydl/Yu6vp/3/
David hat Recht, das problem wird verursacht durch das verschieben von text-Knoten. Also die Lösung muss verhindert werden, dass der text-Knoten wird geklickt überhaupt. Ich benutzte die Anker und die :after-pseudo-element auf die gesamte Schaltfläche, während Sie unsichtbar:
Versuchen Sie, die Polsterung mit Rand, Wie die Polsterung wird geändert element position verändern.
Browser(firefox,chrome etc) Eine gültige Mausklick ist eine, die gedrückt und losgelassen werden auf dasselbe element.
EDIT: ich kann nicht ändern das Verhalten der browser (keine Lösung in reinem css), aber Sie können javascript verwenden, um dies getan
EDIT: :hover Werken statt :active, weil der Grund als element nicht ändern position zwischen Zeit gedrückt und die Zeit veröffentlicht