【问题标题】:Aligning drop-down css navigation bar to the right将下拉 css 导航栏向右对齐
【发布时间】:2012-08-19 03:42:58
【问题描述】:

基本上,我页面上的导航栏与页面右侧对齐,徽标位于左侧。因此,当出现最右侧项目的下拉菜单时,它会从页面的右侧漂移并且看起来很乱。特别是因为它使用 aplha 背景。

无论如何,这是我目前的代码..

HTML:

    <ul class="Nav2">
        <li>
        <a href="">Category 1</a>
          <ul>
            <li><a href="">Item 1</a></li>
            <li><a href="">Item 2</a></li>
          </ul>
      </li>
        <li>
        <a href="">Category 2</a>
          <ul>
            <li><a href="">Item 1</a></li>
            <li><a href="">Item 2</a></li>
          </ul>
      </li>
        <li>
        <a href="">Category 3</a>
          <ul>
            <li><a href="">Item 1</a></li>
            <li><a href="">Item 2</a></li>
          </ul>
      </li>
        <li>
        <a href="">Category 4</a>
          <ul>
            <li><a href="">Item 1</a></li>
            <li><a href="">Item 2</a></li>
          </ul>
      </li>
        <li>
        <a href="">Category 5</a>
          <ul>
            <li><a href="">Item 1</a></li>
            <li><a href="">Item 2</a></li>
          </ul>
      </li>
    </ul>

CSS:

ul.Nav2 {
  list-style-type:none;
  margin:0 auto;
  padding:0;
  overflow:hidden;
  width:auto;
}

ul.Nav2 li {
  float:right;
}

ul.Nav2 li a {
  font-family:"Orator Std";
  font-size:16px;
  color:#000;
  display:block;
  width:auto;
  height:20px;
  line-height:20px;
  border-left:1px Solid rgba(0,0,0,255);
  background-color:#CCC;
  text-align:center;
  text-decoration:none;
  opacity:0.6;
  padding:0px 10px;
  -webkit-transition:all 0.2s ease-in-out;
  -moz-transition:all 0.2s ease-in-out;
  -ms-transition:all 0.2s ease-in-out;
  -o-transition:all 0.2s ease-in-out;
  transition:all 0.2s ease-in-out;
}

ul.Nav2 li a:hover {
  opacity:1;
}

ul.Nav2 ul {
  list-style:none;
  position:absolute;
  left:-9999px;
  text-align:right;
}

ul.Nav2 ul li {
  padding-top:1px;
  float:none;
}

ul.Nav2 ul a {
  white-space:nowrap;
}

ul.Nav2 li:hover ul {
  left:inherit;
}

ul.Nav2 li:hover a {
  background:#FFF;
  text-decoration:none;
}

ul.Nav2 li:hover ul a { 
  text-decoration:none;
}

ul.Nav2 li:hover ul li a:hover {
  background:#FFF;
}

基本上这就是我想要的样子......

Category 1  Category 2  Category 3  Category 4  Category 5
    Item 1      Item 1      Item 1      Item 1      Item 1
    Item 2      Item 2      Item 2      Item 2      Item 2

而不是……

Category 1  Category 2  Category 3  Category 4  Category 5
  Item 1      Item 1      Item 1      Item 1      Item 1
  Item 2      Item 2      Item 2      Item 2      Item 2

(实际上是稍微向右推,但没有居中于父&lt;ul&gt; &lt;li&gt;

必须将宽度设置为自动,因为要存储在导航栏中的文本之间的宽度范围很大。有些大约100px,有些接近300px

【问题讨论】:

    标签: drop-down-menu html-lists navigationbar right-align


    【解决方案1】:

    这是固定的 CSS。已删除和添加的样式已注释。

    ul.Nav2 {
      list-style-type:none;
      margin:0 auto;
      padding:0;
      overflow:hidden;
      width:auto;
    }
    
    ul.Nav2>li {
      float:right;
    }
    
    ul.Nav2 li a {
      font-family:"Orator Std";
      font-size:16px;
      color:#000;
      display:block;
      width:auto;
      height:20px;
      line-height:20px;
      border-left:1px Solid rgba(0,0,0,255);
      background-color:#CCC;
    /*removed
      text-align:center;
    */
      text-decoration:none;
      opacity:0.6;
      padding:0px 10px;
      ;
      ;
      ;
      -o-transition:all 0.2s ease-in-out;
      transition:all 0.2s ease-in-out;
    }
    
    ul.Nav2 li a:hover {
      opacity:1;
    }
    
    ul.Nav2 ul {
      list-style:none;
      position:absolute;
      left:-9999px;
      text-align:right;
      float:right
      /*added*/
      display:block;
      padding:0;
      min-width:9.3ex;
    }
    
    ul.Nav2 ul li {
      padding-top:1px;
      float:none;
    }
    
    ul.Nav2 ul a {
      white-space:nowrap;
    }
    
    ul.Nav2 li:hover ul {
      left:inherit;
    }
    
    ul.Nav2 li:hover a {
      background:#FFF;
      text-decoration:none;
    }
    
    ul.Nav2 li:hover ul a { 
      text-decoration:none;
    }
    
    ul.Nav2 li:hover ul li a:hover {
      background:#FFF;
    }
    

    编辑:根据新限制更新 CSS。

    【讨论】:

    • 这会很好用.. 但是这些宽度值需要设置为自动.. 我知道这会导致很大的问题。编辑了第一篇文章来说明这一点并解释原因。
    • 我已经更新了 CSS。您可能需要根据自己的喜好调整 min-width 样式或将其完全删除。
    • 这几乎是完美的!现在看起来很棒。不过,还有一件小事。下拉菜单当前通过其左上角锚定到父导航栏。是否可以用右上角锚定它们。例如,如果它是背景图像,那么您将使用代码background-position:top right;。为所有帮助干杯
    • 单独使用 CSS 是不可能的,因为弹出窗口使用绝对定位。您需要使用脚本根据其宽度及其父 LI 元素重新定位弹出窗口。
    • 我认为可能是这样 :) 我很确定我自己可以做到这一点。感谢所有的帮助!
    猜你喜欢
    • 2019-07-28
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多