【问题标题】:CSS Horizontal menu centreCSS 水平菜单中心
【发布时间】:2014-08-30 05:12:13
【问题描述】:

我的导航菜单有这个 CSS 代码:

#cssmenu ul { margin: 0; padding: 0;}
#cssmenu li { margin: 0; padding: 0;}
#cssmenu a { margin: 0; padding: 0;}
#cssmenu ul {list-style: none;}
#cssmenu a {text-decoration: none;}
#cssmenu {height: 50px; background-color: #f36f25; box-shadow: 0px 2px 3px rgba(0,0,0,.4);}
#cssmenu > ul > li {
    float: left;
    margin-left: 15px;
    position: relative;
}
#cssmenu > ul > li > a {
    color: #ffffff;
    font-size: 15px;
    line-height: 50px;
    padding: 5px 20px;
-webkit-transition: color .15s;
   -moz-transition: color .15s;
     -o-transition: color .15s;
        transition: color .15s;
}
#cssmenu > ul > li > a:hover {color: #666666; }
#cssmenu > ul > li > ul {
    opacity: 0;
    visibility: hidden;
    padding: 16px 0 20px 0;
    background-color: #eeeeee;
    text-align: left;
    position: absolute;
    top: 30px;
    left: 50%;
    margin-left: -90px;
    width: 180px;
-webkit-transition: all .3s .1s;
   -moz-transition: all .3s .1s;
     -o-transition: all .3s .1s;
        transition: all .3s .1s;
-webkit-border-radius: 5px;
   -moz-border-radius: 5px;
        border-radius: 5px;
-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
   -moz-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
        box-shadow: 0px 1px 3px rgba(0,0,0,.4);
}
#cssmenu > ul > li:hover > ul {
    opacity: 1;
    top: 65px;
    visibility: visible;
}
#cssmenu > ul > li > ul:before{
    content: '';
    display: block;
    border-color: transparent transparent rgb(250,250,250) transparent;
    border-style: solid;
    border-width: 10px;
    position: absolute;
    top: -20px;
    left: 50%;
    margin-left: -10px;
}
#cssmenu > ul ul > li { position: relative;}
#cssmenu ul ul a{
    color: #000000;
    font-size: 13px;
    background-color: #eeeeee;
    padding: 5px 8px 7px 16px;
    display: block;
-webkit-transition: background-color .1s;
   -moz-transition: background-color .1s;
     -o-transition: background-color .1s;
        transition: background-color .1s;
}
#cssmenu ul ul a:hover {background-color: #f36f25;}
#cssmenu ul ul ul {
    visibility: hidden;
    opacity: 0;
    position: absolute;
    top: -16px;
    left: 206px;
    padding: 16px 0 20px 0;
    background-color: #eeeeee;
    text-align: left;
    width: 160px;
-webkit-transition: all .3s;
   -moz-transition: all .3s;
     -o-transition: all .3s;
        transition: all .3s;
-webkit-border-radius: 5px;
   -moz-border-radius: 5px;
        border-radius: 5px;
-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
   -moz-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
        box-shadow: 0px 1px 3px rgba(0,0,0,.4);
}
#cssmenu ul ul > li:hover > ul { opacity: 1; left: 196px; visibility: visible;}
#cssmenu ul ul a:hover{
    background-color: #f36f25;
    color: rgb(240,240,240);
}

我需要使子菜单框向上移动一点,这样您就可以在菜单的橙色部分(主要位)上看到顶部的小箭头,并使其原样全页宽,但制作链接/以页面为中心的文本

这是一个小提琴:http://jsfiddle.net/dQnjt/

有什么想法吗?

【问题讨论】:

    标签: html css


    【解决方案1】:

    使用display: inline-block 代替float 并将text-align: center 添加到父ul

    #cssmenu ul { margin: 0; padding: 0; text-align: center; }
    
    #cssmenu > ul > li {
        display: inline-block;
        margin-left: 15px;
        position: relative;
    }
    

    只需减少悬停时的顶部值:

    #cssmenu > ul > li:hover > ul {
        opacity: 1;
        top: 55px;
        visibility: visible;
    }
    

    http://jsfiddle.net/dQnjt/1/

    【讨论】:

    • 太棒了-谢谢,用这个小提琴怎么样,我可以让它背景颜色适合橙色位的整个高度吗? :jsfiddle.net/dQnjt/6
    • 您可以通过添加更多填充来做到这一点,以便链接的总高度(带有填充)与li -> jsfiddle.net/dQnjt/7 之一匹配
    • 啊哈是的——完美。当子菜单打开时,是否可以让它在主栏上保持悬停颜色?
    【解决方案2】:

    您可以添加ul:display:table; margin:0 auto;,这将使浮动元素居中。

    【讨论】:

      【解决方案3】:

      我添加了一个 Position: 相对于以下内容:

      #cssmenu > ul > li > ul {
          opacity: 0;
          visibility: hidden;
          padding: 16px 0 20px 0;
          background-color: #eeeeee;
          text-align: left;
          position: relative;
          left: 50%;
          margin-left: -90px;
          width: 180px;
      -webkit-transition: all .3s .1s;
         -moz-transition: all .3s .1s;
           -o-transition: all .3s .1s;
              transition: all .3s .1s;
      -webkit-border-radius: 5px;
         -moz-border-radius: 5px;
              border-radius: 5px;
      -webkit-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
         -moz-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
              box-shadow: 0px 1px 3px rgba(0,0,0,.4);
      }
      #cssmenu > ul > li:hover > ul {
          opacity: 1;
          top: 0px;
          visibility: visible;
          position:relative;
      }
      

      http://jsfiddle.net/dQnjt/5/

      【讨论】:

      • 你已经杀死了过渡效果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      相关资源
      最近更新 更多