【问题标题】:Titles in css menu change width while hoveringcss菜单中的标题在悬停时改变宽度
【发布时间】:2013-05-28 11:19:23
【问题描述】:

我正在实现一个非常简单的 CSS 菜单。但是,如果我在菜单栏中选择一个菜单标题(并因此打开与之关联的菜单),则标题的宽度会扩展到菜单的宽度,这是不需要的(即标题的宽度不应改变) .查看JSFiddle,或查看标记:

<div id="menu">
  <ul>
    <li><a href="javascript: showLogin()">you</a>
      <ul>
        <li><a href="javascript: showLogin()">register...</a></li>
        <li><a href="javascript: showLogin()">login...</a></li>
        <li><a href="javascript: showLogin()">forgot password...</a></li>
      </ul>
    </li>
    <li>.</li>
    <li><a href="javascript: selectMenu()">qan</a></li>
    <li>.</li>
    <li style="width: 20px"><a class="site">be</a>
      <ul>
        <li><a href="javascript: false">be</a></li>
        <li><a href="javascript: false">do</a></li>
      </ul>
    </li>
  </ul>
</div>

以及css定义:

#menu {
  font-family: Arial, Helvetica, sans-serif;
  padding: 0px 5px;
  font-size: 12px;
  line-height: 18px;
  color: darkgrey;
  position: absolute;
  top: 0px;
  left: 0px;
  height: 20px;
  background-color: black;
  z-index: 3;
  /*opacity: 0;*/
  white-space: nowrap;
}
#menu ul {
  margin: 0px;
  padding: 0px;
  list-style-type: none;
  list-style-image: none;
}
#menu>ul>li {
  font-weight: bold;
  display: inline-block;
  float: left;
  padding: 2px 1px 0px 1px;
  width: auto;
  /*width: 10px;*/
}
#menu a { color: inherit; text-decoration: none;}
#menu>ul>li>a:hover { background-color: grey;}
#menu>ul ul {
  display: none;
  background-color: lightgrey;
  padding: 2px 5px;
  line-height: 14px;
  min-width: 100px;
}
#menu>ul ul>li {
  color: black;
  padding: 2px 8px 2px 5px;
  margin: 0px -3px;
}
#menu>ul ul>li:hover { color: lightgrey; background-color: grey;}
#menu>ul>li:hover ul { display: block;}

由于菜单是动态生成的,并且内容是动态更改的,并且使用的字体是成比例的,所以我不能只将标题的宽度设置为抑制调整大小的常量值。标题的宽度应仅由文本的宽度决定。
当我实现 yuimenus 时它曾经工作过,但它对我的 CSS 做了各种各样的事情,我发现它的后果很难控制,所以现在我自己制作了菜单并且对它非常满意,除了宽度变化,我还没弄清楚 yui 的哪个部分抑制了这一点。有什么建议么?

【问题讨论】:

    标签: css menu width title


    【解决方案1】:

    我不同意 max-width.. 这将使链接的宽度与内容无关 子菜单使用position:absolute;jsFiddle

    【讨论】:

    • 是的,是的,还有更多是的!我知道我错过了一些小东西。这正是诀窍!非常感谢!现在,我怎样才能对你的答案投票 10 倍? ;-)
    【解决方案2】:

    li中设置宽度

    您更新的示例:- http://jsfiddle.net/8U5An/8/

    CSS:-

       #menu ul li {
           width: 25px;
       }
    

    还可以查看一些有用的示例,它们如何仅使用width 处理相同的情况:-

    http://www.diy.com/diy/jsp/index.jsp?noCookies=false

    http://www.puregrips.com/

    【讨论】:

    • 嗯,是的,但是我在原始帖子中已经说过我需要动态更改标题的文本,因此我不能在标题附近的任何地方使用设置的宽度。此外,我本可以提到我希望文本保持连续,但我认为这符合我之前所说的逻辑,感谢您的回答,但这次没有 cookie;-) Omer Yotam 的解决方案是正确的,不过。
    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多