Home > Article > Web Front-end > Pure CSS implements drop-down menus and drop-down containers (pure CSS implements navigation bars and navigation drop-down containers)_html/css_WEB-ITnose
Although there are many similar or even identical cases on the Internet, I still wrote them down to take notes and for your reference
I hope you can guide and criticize~~
First we start with the list ul li to make our menu or navigation bar:
In the page we first build the following XHTML structure:
<body> <ul id="navWrapper"> <li> <a href="#">Menu A</a> <ul> <li><a href="#">Menu A, Item 1</a></li> <li><a href="#">Menu A, Item 2</a></li> <li><a href="#">Menu A, Item 3</a></li> <li><a href="#">Menu A, Item 4</a></li> <li><a href="#">Menu A, Item 5</a></li> <li><a href="#">Menu A, Item 6</a></li> </ul> </li> <li> <a href="#">Menu B</a> <div id="test"><a href="#">Menu B, Item 1</a></div> </li> </ul> <div id="banner"></div> <div id="content"> <p>Page content here.</p> </div></body>View Code
Effect:
Next, let’s design the style and function step by step (first add a border to each element to distinguish the subsequent style design):
Style code:
<style> ul{ border:1px solid red; } li{ border:1px solid lightgreen; } div{ border:1px solid black; }</style>View Code
Effect:
In this way we It’s easy to distinguish and design~~
The following removes the underline of the link and the "." "." of the list, and arranges the parent list horizontally and the child list vertically, so that it looks like Drop-down menu~~ (This is a two-level nested list, one parent and one child)
Style code:
<style> ul{ border:1px solid red; } li{ border:1px solid lightgreen; } div{ border:1px solid black; } a{ text-decoration:none; } ul#navWrapper li{ float:left; list-style:none; } ul#navWrapper li ul li{ float:none; } div#banner{ clear:both; }</style>View Code
Effect:
Let’s hide the child list and child container (here the child container refers to the div container with the id test). When the mouse moves to the parent list, the corresponding child The hierarchical list is displayed through ":hover", and the hidden display is realized through "none" and "block" of display. Note that the "hidden" and "visible" of visibility are not used here. As for the difference, you can put the corresponding attributes Change to visibility to see the effect, which is not implemented here
Style code:
<style> ul{ border:1px solid red; } li{ border:1px solid lightgreen; } div{ border:1px solid black; } a{ text-decoration:none; } ul#navWrapper li{ float:left; list-style:none; } ul#navWrapper li ul li{ float:none; } div#banner{ clear:both; } ul#navWrapper ul,ul#navWrapper div#test{ display:none; position:absolute; } ul#navWrapper li:hover ul,ul#navWrapper li:hover div#test{ display:block; }</style>View Code
Effect:
One thing to note here is that when the position of the child is not set to "absolute" and the mouse moves to the parent, the child that appears will occupy a certain position on the page, then "Page content here" will It will cause movement, which is very bad. So we set the children "position:absolute;" so that they can be separated from the normal process without affecting the position of the subsequent content!
Then offset the parent position slightly and offset the own list under the first parent to the left to align with the parent border, and give the div container under the second parent a certain " Volume"
Style code:
<style> ul{ border:1px solid red; } li{ border:1px solid lightgreen; } div{ border:1px solid black; } a{ text-decoration:none; } ul#navWrapper li{ float:left; list-style:none; } ul#navWrapper li ul li{ float:none; margin-left:-41px; } div#banner{ clear:both; height:50px; margin-top:30px; } ul#navWrapper ul,ul#navWrapper div#test{ display:none; position:absolute; } ul#navWrapper li:hover ul,ul#navWrapper li:hover div#test{ display:block; } ul#navWrapper{ margin-left:-41px; } ul#navWrapper div#test{ height:200px; width:600px; background:lightgray; }</style>View Code
Effect:
After removing all borders The most basic structure here has been designed, and other styles can be adjusted at will~~
For example:
After removing all the borders, proceed to the overall Design
Style code:
<style> body,div,ul,li{ padding:0; margin:0; } a{ text-decoration:none; } ul#navWrapper li{ float:left; list-style:none; height:45px; line-height:45px; } ul#navWrapper li ul li{ float:none; } div#banner{ clear:both; height:50px; margin-top:50px; margin-left:50px; } div#content{ margin-left:50px; } ul#navWrapper ul{ display:none; position:absolute; background:#CCC; } ul#navWrapper div#test{ display:none; position:absolute; height:200px; width:600px; background:#cde6c7; } ul#navWrapper li:hover ul,ul#navWrapper li:hover div#test{ display:block; } ul#navWrapper{ background:#CCC; height:45px; width:960px; margin:0 auto; margin-top:30px; } li a{ font-size:24px; color:#333; display:block; height:45px; padding:0 20px; } li a:hover{ color:#fff; background:#000; }</style>View Code
Effect:
Figure 1:
Picture 2:
OK! This is an example designed based on the above basic structure. If you still need to design, you only need to design on the most basic structure above~~
Reference: Microsoft official document "How to create a CSS drop-down menu"