CSS 下拉导航

Posted

技术标签:

【中文标题】CSS 下拉导航【英文标题】:CSS drop down navigation 【发布时间】:2015-09-08 04:51:53 【问题描述】:

我确定这是我缺少的一些简单的东西...我的下拉菜单正在主导航中打开,并扩大了它。这是我正在处理的页面的链接。问题在于应用按钮下方的导航。

http://membershq.incentiveusa.com/AwardPages/GoalUp_Test2/index_test3.html#

这是我的 HTML:

 <div class="container-fluid">
         <div class="section-title2 text-center">        
                <div class="navigation">
                    <label for="show-menu" class="show-menu">Show Menu</label>
<input type="checkbox" id="show-menu" role="button">
<ul >
    <li><a href="#">About Us</a>
    <ul>
    <li><a href="about.html">Who We Are</a></li>
    <li><a href="news.html">News</a></li>
    </ul></li>
    <li><a href="HowItWorks.html">How It Works</a></li>
    <li><a href="FactsStats.html">Facts</a></li>
    <li><a href="ParentingTools.html">Tools</a></li>
    <li><a href="testimonials.html">Testimonials</a></li>
    <li><a href="news.html">News</a></li>
    <li><a href="awards.html">Brand Name Awards</a></li>
    <li><a href="contact.html">Contact</a></li>
</ul>

这是 CSS:

.navigation
margin-right: auto;
margin-left: auto;
width: 100%;
background-color: #0f9cde;
position: absolute;
display: block;
margin-bottom: 15px;
z-index: 1000;
top: 735px;
margin-left: -15px;

/*Strip the ul of padding and list styling*/
.navigation ul
list-style-type: none;
margin: 0 auto;
padding: 0;
position: relative;
z-index: 10000;
text-align:center;


/*Create a horizontal list with spacing*/
.navigation li
display:inline-block;
margin-right: 0px;
background-color:#0f9bde;



/*Style for menu links*/
.navigation li a 

min-width: 189px;
height: 50px;
text-align: center;
line-height: 50px;
font-family: 'Maven Pro', sans-serif;
font-size:18px;
color: #fff;
width:100%;
background-color: #0f9cde;
text-decoration: none;
display:block;



/*Hover state for top level links*/
.navigation li:hover a 
color: #f7a800;
text-decoration: underline;


/*Style for dropdown links*/
.navigation li:hover ul a 
background: #f7a800;
color: #ffffff;
height: 40px;
line-height: 40px;
z-index: 10001;


/*Hover state for dropdown links*/
.navigation li:hover ul a:hover 
background: #fff;
color: #f7a800;


/*Hide dropdown links until they are needed*/
.navigation li ul
display: none;
z-index: 10001;


/*Make dropdown links vertical*/
.navigation li ul li 
display: block;
float: none;


/*Prevent text wrapping*/
.navigation li ul li a 
width: auto;
min-width: 100px;
padding: 0 20px;


.navigation ul li:hover ul
display:block;


/*Display the dropdown on hover*/
navigation ul li a:hover  
display: block;


【问题讨论】:

【参考方案1】:

你必须添加一个 position:absolute 到选择器.navigation li ul

.navigation
margin-right: auto;
margin-left: auto;
width: 100%;
background-color: #0f9cde;
position: absolute;
display: block;
margin-bottom: 15px;
z-index: 1000;
margin-left: -15px;

/*Strip the ul of padding and list styling*/
.navigation ul
list-style-type: none;
margin: 0 auto;
padding: 0;
position: relative;
z-index: 10000;
text-align:center;


/*Create a horizontal list with spacing*/
.navigation li
display:inline-block;
margin-right: 0px;
background-color:#0f9bde;



/*Style for menu links*/
.navigation li a 

min-width: 189px;
height: 50px;
text-align: center;
line-height: 50px;
font-family: 'Maven Pro', sans-serif;
font-size:18px;
color: #fff;
width:100%;
background-color: #0f9cde;
text-decoration: none;
display:block;



/*Hover state for top level links*/
.navigation li:hover a 
color: #f7a800;
text-decoration: underline;


/*Style for dropdown links*/
.navigation li:hover ul a 
background: #f7a800;
color: #ffffff;
height: 40px;  
line-height: 40px;
z-index: 10001;


/*Hover state for dropdown links*/
.navigation li:hover ul a:hover 
background: #fff;
color: #f7a800;


/*Hide dropdown links until they are needed*/
.navigation li ul
display: none;
z-index: 10001;
  
  position: absolute;


/*Make dropdown links vertical*/
.navigation li ul li 
display: block;
float: none;


/*Prevent text wrapping*/
.navigation li ul li a 
width: auto;
min-width: 100px;
padding: 0 20px;


.navigation ul li:hover ul
display:block;


/*Display the dropdown on hover*/
navigation ul li a:hover  
display: block;

<div class="container-fluid">
         <div class="section-title2 text-center">        
                <div class="navigation">
<ul >
    <li><a href="#">About Us</a>
    <ul>
    <li><a href="about.html">Who We Are</a></li>
    <li><a href="news.html">News</a></li>
    </ul></li>
    <li><a href="HowItWorks.html">How It Works</a></li>
    <li><a href="FactsStats.html">Facts</a></li>
    <li><a href="ParentingTools.html">Tools</a></li>
    <li><a href="testimonials.html">Testimonials</a></li>
    <li><a href="news.html">News</a></li>
    <li><a href="awards.html">Brand Name Awards</a></li>
    <li><a href="contact.html">Contact</a></li>
</ul>
                  </div></div></div>

【讨论】:

请注意,为了正确显示 sn-p,我删除了一些代码,但它在原始代码上也应该可以正常工作。 不客气。请不要忘记接受答案。 我对子导航的位置也有疑问。它不是在桌面版的顶层正下方排队,在移动版中它是浮动到左侧。有什么想法吗? #menu ul min-width: 100%; 添加到您的移动样式,将#menu ul min-width: 189px; /*matches parent link min-width*/ 添加到您的桌面样式。 也仅将.navigation li ul position: absolute; 应用于您的桌面样式。如果您这样做,您可以忽略我之前关于将min-width:100%; 应用于您的移动样式的评论。

以上是关于CSS 下拉导航的主要内容,如果未能解决你的问题,请参考以下文章

我用css定位了导航,怎么当网页下拉到一定高度的时候变成悬浮的?

CSS 下拉导航

HTML+CSS实现网页的导航栏和下拉菜单

CSS CSS下拉导航

CSS 跨浏览器纯CSS下拉导航

用原生JS实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css)