css Problem - drop-down funktioniert nicht richtig auf iphone/ipad
Ich habe ein css powered drop-down-Menü, das nicht richtig funktioniert auf dem iphone oder ipad.
Es funktioniert wie ich es will auch auf allen anderen Browsern und Geräten, die ich überprüft haben.
Habe ich verengt Sie sich auf die Tatsache, dass ich nicht den Menü-text (z.B. das Wort 'Gesicht') verpackt in href-tags, wie es in der ursprünglichen version des Codes. Das ist es, was den Unterschied macht. Wrap-href-tags um das Wort Gesicht und das Dropdown funktioniert auf ipad/iphone
Natürlich könnte ich einfach das href und getan werden, aber ich weiß wirklich nicht haben wollen, da sonst jeder mit einem touch-screen, die normalerweise haben, Tippen Sie auf das Menü text, um die dropdown-Liste angezeigt werden, ergriffen werden, wohin der link verweist. Die verderben, die ganze Punkt, der in der dropdown-Liste den ersten Platz!
Hier der code:
<div id="dropMenuWrapper">
<div id="dropMenu">
<ul class="level1">
<li class="submenu">Face
<ul class="level2">
<li class="subCatodd"><a href="">powder</a></li>
<li class="subCateven"><a href="">cream</a></li>
</ul>
</li>
</ul>
</div>
</div>
Den css:
body { behavior: url(includes/csshover.htc);}
div#dropMenu li a:hover, div#dropMenu li.submenu li.submenu:hover {color: #4f4f4f!important;background:#D5E88F;}
#dropMenuWrapper {
width:100%;
height:25px;
margin:0;
font-size:11px;
}
div#dropMenu {
width:750px;
margin:0 auto;
text-align:center;
z-index:1000;
position:relative;
}
div#dropMenu ul {
margin: 0;
padding: 0;
}
div#dropMenu li {
position: relative;
list-style: none;
margin: 0;
float: left;
line-height: 1em;
}
div#dropMenu ul.level1 {
width:750px;
margin:0 auto;
text-align:center;
background:#4F4F4F;
height:25px;
z-index:1000;
}
div#dropMenu li:hover {}
div#dropMenu li.submenu {}
div#dropMenu li.submenu:hover {}
div#dropMenu li a {display: block;text-decoration: none;}
div#dropMenu>ul a {width: auto;}
div#dropMenu ul ul {position: absolute; width: 13em;display: none;}
div#dropMenu ul ul li {border-bottom: 1px solid #CCC; width:13em;}
div#dropMenu li.submenu li.submenu {}
div#dropMenu ul.level1 li.submenu:hover ul.level2,
div#dropMenu ul.level2 li.submenu:hover ul.level3,
div#dropMenu ul.level3 li.submenu:hover ul.level4,
div#dropMenu ul.level4 li.submenu:hover ul.level5 {display:block;z-index:1000;}
div#dropMenu ul.level2 {top: 2.17em; background:#4f4f4f;z-index:1000;}
div#dropMenu ul.level3, div#dropMenu ul.level4, div#dropMenu ul.level5 {top: 0; left: 13em; background:#4f4f4f}
div#dropMenu ul.level2 a {padding: 0.5em 0.25em;color: white; text-transform:none;} /* this is text color on drop-down submenu */
div#dropMenu ul.level2 a:hover {color:#4f4f4f;}
Und für die Leichtigkeit, ein jsfiddle: http://jsfiddle.net/VvT6Y/1/
Kann mir jemand zeigen, wie Sie die dropdown funktioniert auch auf iphone/ipad die zimmerreserviereung, ohne das der text ein link?
Vielen Dank im Voraus 🙂
Hallo, danke für die Antwort. Ich möchte wirklich nicht, javascript zu verwenden, wenn ich nicht zu. Ich habe schon zu viel und meine Seiten sind ziemlich langsam (arbeiten). Können Sie erklären, die touch-events, ich habe noch nie gehört, dass das möglich war.
InformationsquelleAutor crazy sarah | 2012-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht, indem die
:active
- und/oder:focus
pseudo-Klasse, jede Instanz, die verwendet:hover
?So, zum Beispiel,
li.submenu:hover
wirdli.submenu:hover, li.submenu:active
.Den
:active
pseudo-Klasse wird normalerweise verwendet, wenn ein element "durch den Benutzer aktiviert." Das häufigste Beispiel ist der Punkt, auf einen link, wenn der Benutzer begonnen hat, die auf Aktion klicken von einem link ("mousedown" - Ereignis), aber noch nicht fertig die Aktion ("mouseup" - Ereignis).Den
:focus
pseudo-Klasse wird benutzt, wenn ein element den Fokus hat (kann Eingaben akzeptieren). Am deutlichsten wird dies mit Formular-Steuerelemente, aber es ist eigentlich viel mehr genutzt (immer sehen, die kleinen, gepunkteten Rahmen um links, vor allem, wenn Sie mit der Tabulatortaste durch das Formular? Das ist:focus
).(W3C-info auf beide.)
Ich erwähne beide, weil ich bin mir nicht 100% sicher sind, welche ein iOS-Safari nutzen würde in solch einem Fall. Ich würde davon ausgehen
:focus
, aber ich habe gesehen, seltsamer Dinge von Browsern.(Auf einer seitlichen Anmerkung, die Sie nicht benötigen, sollten
div#dropMenu
. Die IDs sollen eindeutig sein, so einfach#dropMenu
ist viel. Wenn Sie Ihre ID ist nicht eindeutig auf Ihrer Seite, bist du mit IDs falsch.Bearbeiten Wenn die pseudo-Klassen nicht funktionieren, dann ist der einzige Weg, du wirst in der Lage sein, es zu handhaben, derzeit mit JavaScript, leider. Zum Glück, es ist so einfach wie:
zur Erkennung der Funktion, die Sie dann verwenden können, um die Auslösung bestimmter Verhaltensweisen (add-Klassen, etc) zu emulieren, die Wirkung. Wenn Sie zufällig bereits mit Modernizr, dann können Sie es verwenden, ist
Modernizr.touch
Funktion zu erkennen, die touchscreens.Siehe mein edit.
Hmm... hatte gehofft, nicht zu haben, javascript zu verwenden - vor allem, weil ich weiß sehr wenig, aber wenn es der einzige Weg ist, dann ich denke, ich werde den sauren Apfel beißen und noch ein bisschen lernen. Es ist alles ein bisschen verwirrend! Nicht mit modernizr ist also wahrscheinlich nicht Wert verwenden, nur für das? selbst wenn es das täte, machen es einfacher?
Wenn Sie auch nur im entferntesten ernst meint und in front-end-web-Entwicklung (HTML/CSS), dann lernen JavaScript ist so ziemlich eine Notwendigkeit, da, als Sie finden, werden Sie fast zwangsläufig für etwas zu nutzen. Diese Frage, an die Programmierer.SE hat eine Tonne von Ressourcen für Sie zu lernen, und Sie sollten gut für Sie begann: programmers.stackexchange.com/questions/38566/...
Und um deine Frage zu beantworten über Modernizr - Wenn Sie nicht bereits verwenden, dann ja, ist es wahrscheinlich overkill, zumal du scheinbar nur mit diesem Thema in iOS, und die raw-JS Lösung ist ganz einfach. Vielleicht möchten Sie sich in der JS-Bibliotheken, die Sie haben, obwohl, um zu sehen, wenn Sie ein touch-detection-Methode. Bibliotheken wie jQuery werden oft handle cross-browser-Probleme für Sie, die reduzieren Sie Ihre Kopfschmerzen.
InformationsquelleAutor Shauna
", Um eine drop-down-Menü angezeigt, wenn jemand tippt auf den Menü-button, ist alles was Sie tun müssen, ist fügen
"Ein tag", die innerhalb jedes Listenelement (wie
<LI>
), löst ein Menü, um pop-up. Dies funktioniert für cascading-Menüs."aus - http://blog.travelvictoria.com.au/2012/03/31/make-sure-your-websites-drop-down-menus-work-on-an-ipad/
InformationsquelleAutor Julian