Ich habe eine Dropdown-Box auf W3CSchools, die ich in weniger Klassen-orientierte CSS konvertieren möchte (anstatt eine Reihe von Klassen, ich wähle es nur über die primäre Eltern).Drop-Down-Funktion Abhängig von der Ausrichtung
Hier ist der HTML:
<nav>
<div class="dropdown">
<button class="dropbtn">Dropdown</button>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
</nav>
(effektiv, sollte ich keine Klassen hier haben müssen)
Hier ist die CSS:
/* Style The Dropdown Button */
.dropbtn {
background-color: #4CAF50;
color: white;
padding: 16px;
font-size: 16px;
border: none;
cursor: pointer;
}
/* The container <div> - needed to position the dropdown content */
.dropdown {
position: relative;
display: inline-block;
}
/* Dropdown Content (Hidden by Default) */
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}
/* Links inside the dropdown */
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
/* Change color of dropdown links on hover */
.dropdown-content a:hover {background-color: #f1f1f1}
/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
display: block;
}
/* Change the background color of the dropdown button when the dropdown content is shown */
.dropdown:hover .dropbtn {
background-color: #3e8e41;
}
Alles hier gut funktioniert, wenn umgewandelt bis hin zu Ziel nur durch die nav
Element, abgesehen von den funktionalen Sachen:
.dropdown:hover .dropdown-content {
display: block;
}
.dropdown:hover .dropbtn {
background-color: #3e8e41;
}
ich versuchen kann, diese in konvertieren
nav > div:hover nav > div > div {
display: block;
}
nav > div:hover mav > div > button {
background-color: #3e8e41;
}
Aber nichts passiert. Ich habe sogar versucht, die primäre Elternklasse von .dropdown
und den Anfang von nav > div
zu entfernen, obwohl es auch nichts zurückgibt.
Was macht den Unterschied? Ich ziele genau auf die gleichen Elemente.
, die tatsächlich ein ungewollter Tippfehler war; Seufzer. Weißt du, warum mein Code (wenn wir den Tippfehler korrigieren) nicht funktioniert hat? – Crowes
Ich glaube, dein Problem ist, dass du nach dem Schweben zum 'nav' gegangen bist. Ich würde weiter den HTML-Baum hinunter gehen. In der Regel, wenn Sie Elemente auswählen, die Sie vom übergeordneten Element ableiten, und Sie die einzelnen untergeordneten Elemente isolieren. Sie müssen den HTML-Dokumentfluss fortsetzen, wenn Sie Elemente auswählen, um sie zu isolieren. Geh nicht zurück. Du bist zurück zum Elternteil ('nav') gegangen, als du nicht von mir denken solltest. wie nach 'nav> div: hover' solltest du mit dem nächsten 'div' fortfahren und nicht zurück zum' nav' gehen –
Ich habe immer angenommen, wenn ein Element von einem Pseudo eines anderen beeinflusst wird (zB das ': hover'ing von es) würden Sie immer das Zielen eines Ziels mit dem primären Elternteil beginnen; in diesem Fall das 'nav', wie ich es mit dem Rest des Stylings mache. http://pastebin.com/eAcGVdJu (Dies beinhaltet nicht ästhetisches Styling, aber dient meinem Standpunkt). – Crowes