CSS drop-down menus that drop page content down

This is probably a pretty simple question, but I can't get it to work, so I will turn to the experts here. I use a fairly simple CSS drop-down menu, with a little jQuery involvement. The problem is that when I hover over the drop-down list and it opens, it clicks everything on the page below and then opens it. I tried messing around with z-index, but that doesn't seem to be the problem. Any advice would be fantastic, thanks in advance.

Here is the HTML; it’s a pity that this is not super-cute, I had to tear out a bunch of things to make it simple and universal.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML style="zoom: 100%; "> <HEAD> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> </HEAD> <BODY class="bodyclass" style="background:#BCE2F1; height: 100%;"> <DIV id="maincontainer" style="min-height: 100%;"> <STYLE type="text/css"> #cssdropdown, #cssdropdown ul { font-size: 9pt; background-color: black; list-style: none; } #cssdropdown, #cssdropdown * { padding: 0; margin: 0; } #cssdropdown li.headlink { width: 140px; float: left; margin-left: -1px; border: 1px black solid; background-color: white; text-align: center; } #cssdropdown li.headlink a { display: block; color: #339804; padding: 3px; text-decoration: none; } #cssdropdown li.headlink a:hover { background-color: #F8E0AC; font-weight: bold; } #cssdropdown li.headlink ul { display: none; border-top: 1px black solid; text-align: left; } #cssdropdown li.headlink:hover ul { display: block; text-decoration: none; } #cssdropdown li.headlink ul li a { padding: 5px; height: 15px; } #cssdropdown li.headlink ul li a:hover { background-color: #CCE9F5; text-decoration: none; font-weight: normal; } /* #cssdropdown a { color: #CCE9F5; } */ #cssdropdown ul li a:hover { text-decoration: none; } #cssdropdown li.headlink { background-color: white; } #cssdropdown li.headlink ul { background-color: white; background-position: bottom; padding-bottom: 2px; } </STYLE> <SCRIPT language="JavaScript"> $(document).ready(function(){ $('#cssdropdown li.headlink').hover( function() { $('ul', this).css('display', 'block'); }, function() { $('ul', this).css('display', 'none'); }); }); </SCRIPT> <DIV class="navigation_box" style="border: none;"> <DIV class="innercontent"> <DIV style="background: white; float: left; padding: 5px; border: solid 1px black;"> LOGO </DIV> <DIV class="navmenu" style="float: right; bottom: 0; font-size: 9pt; text-align: right;"> <SPAN>Logged in as user@example.com </SPAN><BR> <UL id="cssdropdown"> <LI class="headlink"> <A href="http://localhost:3000/one">One</A> <UL style="display: none; "> <LI><A href="http://localhost:3000/one">Option One</A></LI> <LI><A href="http://localhost:3000/one">Option Two</A></LI> <LI><A href="http://localhost:3000/one">Option Three</A></LI> <LI><A href="http://localhost:3000/one">Option Four</A></LI> </UL> </LI> <LI class="headlink"> <A href="http://localhost:3000/two">Two</A> <UL style="display: none; "> <LI><A href="http://localhost:3000/two">Option Two-One</A></LI> <LI><A href="http://localhost:3000/two">Option Two-Two</A></LI> <LI><A href="http://localhost:3000/two">Option Two-Three</A></LI> </UL> </LI> <LI class="headlink" style="width: 80px;"> <A href="http://localhost:3000/three">Three</A> </LI> <LI class="headlink" style="width: 300px; padding-top: 2px; height: 19px;"> <FORM action="http://localhost:3000/search" method="post"> <P> Search: <INPUT id="searchwords" name="searchwords" size="20" type="text" value=""> <INPUT name="commit" type="submit" value="Find"> </P> </FORM> </LI> <LI class="headlink" style="width: 60px;"> <A href="http://localhost:3000/four">Four</A> </LI> <LI class="headlink" style="width: 60px;"> <A href="http://localhost:3000/logout">Logout</A> </LI> </UL> </DIV> </DIV> </DIV> <DIV id="contentwrapper" style="clear:both"> <DIV class="innercontent" style="margin: 0px 20px 20px 20px;"> <H1>Some test content here to fill things out a little bit.</H1> </DIV> </DIV> </DIV> <DIV id="footer" style="clear: both; float: bottom;"> <DIV class="innercontent" style="font-size: 10px;"> Copyright 2008-2010 </DIV> </DIV> </BODY> 
+4
source share
1 answer

This is a pretty bad case of unnecessary Javascript to do what can be done using CSS itself. All you have to do is change:

 #cssdropdown li.headlink ul { display: none; border-top: 1px black solid; text-align: left;} 

in

 #cssdropdown li.headlink ul { display: none; border-top: 1px black solid; text-align: left;position:absolute;} 

Here is an example of an extremely simple and clean drop down menu. Hope this helps you. I added a lot of comments to help you understand what CSS does with HTML.

  <style type="text/css"> /* Get ride of default margin and padding */ ul, li { margin: 0; padding: 0; } /* Display parent unordered list items horizontally */ ul li { float: left; list-style: none; /* Get rid of default Browser styling */ margin-right: 10px; /* Add some space between items */ } /* Hide inset unordered Lists */ ul li ul { display: none; } /* Un-Hide inset unordered Lists when parent <li> is hovered over */ ul li:hover ul { display: block; position: absolute; } /* Clear the any element that may be "float: left;" (Essentially moves the item to the next line */ ul li:hover ul li { clear: left; } </style> <ul> <li> <a href="#" title="">Link 1</a> <ul> <li><a href="#" title="">Link 1.1</a></li> <li><a href="#" title="">Link 1.2</a></li> <li><a href="#" title="">Link 1.3</a></li> <li><a href="#" title="">Link 1.4</a></li> <li><a href="#" title="">Link 1.5</a></li> <li><a href="#" title="">Link 1.6</a></li> </ul> </li> <li> <a href="#" title="">Link 2</a> <ul> <li><a href="#" title="">Link 2.1</a></li> <li><a href="#" title="">Link 2.2</a></li> <li><a href="#" title="">Link 2.3</a></li> <li><a href="#" title="">Link 2.4</a></li> <li><a href="#" title="">Link 2.5</a></li> <li><a href="#" title="">Link 2.6</a></li> </ul> </li> <li> <a href="#" title="">Link 3</a> <ul> <li><a href="#" title="">Link 3.1</a></li> <li><a href="#" title="">Link 3.2</a></li> <li><a href="#" title="">Link 3.3</a></li> <li><a href="#" title="">Link 3.4</a></li> <li><a href="#" title="">Link 3.5</a></li> <li><a href="#" title="">Link 3.6</a></li> </ul> </li> </ul> 
+9
source

Source: https://habr.com/ru/post/1307494/


All Articles