【问题标题】:Drop-down menu that opens up/upward with pure css使用纯 css 打开/向上打开的下拉菜单
【发布时间】:2011-12-10 11:32:36
【问题描述】:

我用纯 CSS 创建了一个下拉菜单,并将它放到我喜欢的位置,但我希望它是“下拉”而不是“下拉”,因为菜单栏位于布局的底部。我需要添加或更改什么以使其“下拉”?

#menu * { 
  padding:0; 
  margin: 0; 
  font: 12px georgia; 
  list-style-type:none;
}
#menu { 
  margin-top: 100px;
  float: left;
  line-height: 10px; 
  left: 200px;
}
#menu a { 
  display: block; 
  text-decoration: none; 
  color: #3B5330;
}
#menu a:hover { background: #B0BD97;}
#menu ul li ul li a:hover { 
  background: #ECF1E7; 
  padding-left:9px;
  border-left: solid 1px #000;
}
#menu ul li ul li {
  width: 140px; 
  border: none; 
  color: #B0BD97;  
  padding-top: 3px; 
  padding-bottom:3px; 
  padding-left: 3px; 
  padding-right: 3px; 
  background: #B0BD97;
}
#menu ul li ul li a { 
  font: 11px arial; 
  font-weight:normal; 
  font-variant: small-caps; 
  padding-top:3px; 
  padding-bottom:3px;
}
#menu ul li {
  float: left; 
  width: 146px; 
  font-weight: bold; 
  border-top: solid 1px #283923; 
  border-bottom: solid 1px #283923; 
  background: #979E71;
}
#menu ul li a { 
  font-weight: bold;
  padding: 15px 10px;
}
#menu li {
  position:relative; 
  float:left;
}
#menu ul li ul, #menu:hover ul li ul, #menu:hover ul li:hover ul li ul {
  display:none;
  list-style-type:none;
  width: 140px;
}
#menu:hover ul, #menu:hover ul li:hover ul, #menu:hover ul li:hover ul li:hover ul {
  display:block;
}
#menu:hover ul li:hover ul li:hover ul {
  position: absolute;
  margin-left: 145px;
  margin-top: -22px;
  font: 10px;
}
#menu:hover ul li:hover ul {
  position: absolute;
  margin-top: 1px;
  font: 10px;
}
<div id="menu">
  <ul>
    <li><center><a href="X">Home</a></center>
      <ul>
        <li><a href="#">About Us</a></li>
        <li><a href="#">Disclaimer</a></li>
      </ul>
    </li>	
    <li>
      <center><a href="#">Practice Areas</a></center>
      <ul>
        <li><a href="#">Civil Law</a></li>
        <li><a href="#">Criminal Law &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &rsaquo;</a>
          <ul>
            <li><a href="#">Joomla</a></li>
            <li><a href="#">Drupal</a></li>
            <li><a href="#">Wordpress</a></li>
          </ul>
        <li><a href="#">Family Law &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &rsaquo;</a>
          <ul>
            <li><a href="#">Joomla</a></li>
            <li><a href="#">Drupal</a></li>
            <li><a href="#">Wordpress</a></li>
          </ul>
        <li><a href="#">Personal Injury &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&rsaquo;</a>
          <ul>
            <li><a href="#">Joomla</a></li>
            <li><a href="#">Drupal</a></li>
            <li><a href="#">Wordpress</a></li>
          </ul>
        <li><a href="#">Traffic Offenses &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&rsaquo;</a>
          <ul>
            <li><a href="#">Joomla</a></li>
            <li><a href="#">Drupal</a></li>
            <li><a href="#">Wordpress</a></li>
          </ul>
        <li><a href="#">FAQ</a>	</li>
      </ul>
    </li>

    <li><center><a href="#">Attorney</a></center>
      <ul>
        <li><a href="#">X</a></li>
        <li><a href="#">X</a></li>
        <li><a href="#">X</a></li>
        <li><a href="#">X</a></li>
      </ul>
    </li>

    <li><center><a href="#">Contact Us</a></center>
      <ul>
        <li><a href="#">Locations &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&rsaquo;</a>
          <ul>
            <li><a href="#">Rockville Office</a></li>
            <li><a href="#">Frederick Office</a></li>
            <li><a href="#">Greenbelt Office</a></li>
          </ul>
        <li><a href="#">Phone Directory</a></li>
        <li><a href="#">Mailing Address</a></li>
      </ul>

    </li>

    <li><center><a href="#">Resources</a></center>
      <ul>
        <li><a href="#">Helpful Links</a></li>
        <li><a href="#">Affiliates &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&rsaquo;</a>
          <ul>
            <li><a href="#">Healthcare Providers</a></li>
            <li><a href="#">Insurance Companies</a></li>
          </ul>
        </li></ul>
    <li><center><a href="#">News &amp; Events</a></center>
      <ul>
        <li><a href="#">Press Articles</a></li>
        <li><a href="#">Newsletter</a></li>
        <li><a href="#">Events</a></li>
        <li><a href="#">Blog</a></li>
      </ul>
    <li><center><a href="#">Espanol</a></center>
      <ul>
        <li><a href="#">X</a></li>
      </ul>

  </ul>
</div>

【问题讨论】:

  • 能否提供 HTML 标记或演示站点?
  • 感谢您提出这个问题!我自己也只有一个。需要的下拉菜单。并且在 youtube 上没有找到好的教程。

标签: html css drop-down-menu menu


【解决方案1】:

如果我们使用选择的下拉列表,那么我们可以使用下面的 css(不需要 JS/JQuery)

<select chosen="{width: '100%'}" ng- 
   model="modelName" class="form-control input- 
   sm"
   ng- 
   options="persons.persons as 
   persons.persons for persons in 
   jsonData"
   ng- 
   change="anyFunction(anyParam)" 
   required>
   <option value=""> </option>
</select>
<style>   
.chosen-container .chosen-drop {
    border-bottom: 0;
    border-top: 1px solid #aaa;
    top: auto;
    bottom: 40px;
}

.chosen-container.chosen-with-drop .chosen-single {
    border-top-left-radius: 0px;
    border-top-right-radius: 0px;

    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;

    background-image: none;
}

.chosen-container.chosen-with-drop .chosen-drop {
    border-bottom-left-radius: 0px;
    border-bottom-right-radius: 0px;

    border-top-left-radius: 5px;
    border-top-right-radius: 5px;

    box-shadow: none;

    margin-bottom: -16px;
}
</style>

【讨论】:

    【解决方案2】:

    bottom:100% 添加到您的#menu:hover ul li:hover ul 规则中

    Demo 1

    #menu:hover ul li:hover ul {
        position: absolute;
        margin-top: 1px;
        font: 10px;
        bottom: 100%; /* added this attribute */
    }
    

    或者更好的是为了防止子菜单产生同样的效果,只需添加这条规则

    Demo 2

    #menu>ul>li:hover>ul { 
        bottom:100%;
    }
    

    Demo 3

    来源:http://jsfiddle.net/W5FWW/4/

    要取回边框,您可以添加以下属性

    #menu>ul>li:hover>ul { 
        bottom:100%;
        border-bottom: 1px solid transparent
    }
    

    【讨论】:

    • 哦,你太棒了,谢谢!但是我有一个额外的挑剔,当菜单向上翻转时,主菜单栏的顶部边框消失(即使您开始滚动子菜单),这不会发生然后菜单向下翻转,有什么想法吗?
    • @Jenna 添加了另一个演示和规则。这应该可以解决边界问题。
    • 再次感谢,完美运行!我会给你的答案 ^1 但我没有足够的分数。
    • @user1574041 当然!只需将适当的过渡属性应用于您需要动画的任何内容(例如#menu a {transition:background-color 0.2s;})。 see here
    • @user1574041 是的,这确实是可能的,但需要一些工作才能实现。这是一个示例:jsfiddle.net/W5FWW/583。我的动画使用 css bottom 属性。然而,它的一个主要问题是它将子菜单隐藏在主导航后面。
    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多