如何设置css宽度等于最长文本的长度

时间:2012-12-16 17:52:09

标签: css width

我的任务非常艰巨。

我这里有这个菜单...... http://jsfiddle.net/K2Zzh/6/

如果将鼠标悬停在'处理'上,则下拉菜单的宽度设置为150px,这很好,但是,如果将鼠标悬停在'aftercare'上,则可以看到此宽度太宽。我已经尝试过min-width,auto,inline-block,但到目前为止还没有运气。

有没有一种巧妙的方法可以将宽度设置为与每个菜单中最长的文本一样大,而不是为每个下拉列表创建单独的类?

我用于下拉的css代码...

.dropdown ul {
  position: absolute;
  top: 43px;
  z-index: 100;
  border-left: 1px solid #f6634c;
  border-bottom: 1px solid #f6634c;
  border-right: 1px solid #f6634c;
}
.dropdown ul li a {
  background-color: #fff;
  width: 150px;
  text-align: left;
}​

提前致谢。

我的HTML代码......

<ul class="mainNav">
  <li><a href="">Home</a></li>
  <li class="dropdown">
    <a href="">Treatments</a>
    <ul>
      <li><a href="">Body Treatments</a></li>
      <li><a href="">Make Up</a></li>
      <li><a href="">Skincare</a></li>
      <li><a href="">Hand & Feet Treats</a></li>
      <li><a href="">Hair Removal</a></li>
      <li><a href="">Alternative Therapies</a></li>
      <li><a href="">Eye Enhancements</a></li>
    </ul>
  </li>
  <li><a href="">Gallery</a></li>
  <li class="dropdown">
    <a href="">Aftercare</a>
    <ul>
      <li><a href="">Body</a></li>
      <li><a href="">Make up</a></li>
      <li><a href="">Skin</a></li>
      <li><a href="">Hand</a></li>
    </ul>
  </li>
  <li><a href="">Contact</a></li>
</ul>

3 个答案:

答案 0 :(得分:28)

第一步:.dropdown ul li a

中删除固定宽度

第二步:添加css li li {width:100%;}

第三步:添加.mainNav li a {white-space:nowrap;}

已准备就绪: http://jsfiddle.net/K2Zzh/10/

答案 1 :(得分:5)

white-space: nowrap班级

中尝试width: auto.dropdown ul li a

http://jsfiddle.net/K2Zzh/8/

答案 2 :(得分:0)

将宽度设为“li”而不是“a”,您也可以使用填充

.dropdown ul li {
    width: auto;
    padding:5px;
    display:block;
}​

我认为它应该有效