html - 如何根据父项的右边缘打开超出的子菜单区域?

标签 html css css-float css-position pseudo-element

我正在构建一个带有一些子菜单的简单水平菜单。

但我一直在尝试让子项遵守父项的宽度。

这里有一些图片我在说什么:

这是我得到的:

enter image description here

enter image description here

Fiddle

检查一下:

* {
  margin: 0;
  padding: 0;
}
body {
  font-family: arial, helvetica, sans-serif;
  font-size: 12px;
}
.menu {
  list-style: none;
  border: 1px solid #c0c0c0;
  float: left;
}
.menu li {
  position: relative;
  float: left;
  border-right: 1px solid #c0c0c0;
}
.menu li a {
  color: #333;
  text-decoration: none;
  padding: 5px 10px;
  display: block;
}
.menu li a:hover {
  background: #333;
  color: #fff;
  -moz-box-shadow: 0 3px 10px 0 #CCC;
  -webkit-box-shadow: 0 3px 10px 0 #ccc;
  text-shadow: 0px 0px 5px #fff;
}
.menu li ul {
  position: absolute;
  top: 25px;
  left: 0;
  background-color: #fff;
  display: none;
}
.menu li:hover ul,
.menu li.over ul {
  display: block;
}
.menu li ul li {
  border: 1px solid #c0c0c0;
  display: block;
  width: 150px;
}
<nav>

  <ul class="menu">

    <li><a href="#">Home</a>
    </li>

    <li><a href="#">About</a>
    </li>

    <li><a href="#">What we do?</a>

      <ul>

        <li><a href="#">What we do? 01</a>
        </li>
        <li><a href="#">What we do? 02</a>
        </li>
        <li><a href="#">What we do? 03</a>
        </li>
      </ul>

    </li>

    <li><a href="#">Links</a>

      <ul>

        <li><a href="#">Myotherwebsiteiscool</a>
        </li>

      </ul>

    </li>

    <li><a href="#">Contact</a>

      <ul>

        <li><a href="#">Form Contact</a>
        </li>
        <li><a href="#">Find us</a>
        </li>

      </ul>

    </li>

  </ul>

</nav>

最佳答案

在此处更改 css - 请注意,我已将 left: 0 更改为 right: 0

.menu li ul {
    position: absolute;
    top: 25px;
    right: 0;
    background-color: #fff;
    display: none;
}

检查一下:

* {
  margin: 0;
  padding: 0;
}
body {
  font-family: arial, helvetica, sans-serif;
  font-size: 12px;
}
.menu {
  list-style: none;
  border: 1px solid #c0c0c0;
  float: left;
}
.menu li {
  position: relative;
  float: left;
  border-right: 1px solid #c0c0c0;
}
.menu li a {
  color: #333;
  text-decoration: none;
  padding: 5px 10px;
  display: block;
}
.menu li a:hover {
  background: #333;
  color: #fff;
  -moz-box-shadow: 0 3px 10px 0 #CCC;
  -webkit-box-shadow: 0 3px 10px 0 #ccc;
  text-shadow: 0px 0px 5px #fff;
}
.menu li ul {
  position: absolute;
  top: 25px;
  right: 0;
  background-color: #fff;
  display: none;
}
.menu li:hover ul,
.menu li.over ul {
  display: block;
}
.menu li ul li {
  border: 1px solid #c0c0c0;
  display: block;
  width: 150px;
}
<nav>

  <ul class="menu">

    <li><a href="#">Home</a>
    </li>

    <li><a href="#">About</a>
    </li>

    <li><a href="#">What we do?</a>

      <ul>

        <li><a href="#">What we do? 01</a>
        </li>
        <li><a href="#">What we do? 02</a>
        </li>
        <li><a href="#">What we do? 03</a>
        </li>
      </ul>

    </li>

    <li><a href="#">Links</a>

      <ul>

        <li><a href="#">Myotherwebsiteiscool</a>
        </li>

      </ul>

    </li>

    <li><a href="#">Contact</a>

      <ul>

        <li><a href="#">Form Contact</a>
        </li>
        <li><a href="#">Find us</a>
        </li>

      </ul>

    </li>

  </ul>

</nav>

关于html - 如何根据父项的右边缘打开超出的子菜单区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39329676/

相关文章:

javascript - -webkit-transform CSS 属性在 IronPdf 中不起作用

php - css 路径不起作用 (php)

静态位置之外的 CSS 元素?

html - 更改 Bootstrap 容器的宽度

css - 列源排序 [ Zurb Foundation 5 ]

html - 溢出 :hidden includes float in container - why?

javascript - 使用地理定位在 div 中显示城市名称

html - 如何在 HTML 电子邮件中创建可扩展的列?

html - 强制元素在溢出 :hidden 之外显示

css - 使用负边距时 float 重叠