css - 百分比填充不适用于 float 列表项

标签 css

我创建了一个标准菜单 - html 如下所示:

                  <div>
                        <ul id="main-nav" class="clearfix">
                            <li><a id="Content_HyperLinkNav1">Compare</a></li>
                            <li><a id="Content_HyperLinkNav2" class="best-buy">Best Buys</a></li>
                            <li><a id="Content_HyperLinkNav3">Filter</a></li>
                        </ul>
                    </div>

菜单从左到右呈现,因此 LI 设置为 float ,并将clearfix 应用于父 UL。

我可以向链接元素添加固定填充,但我想让它取决于 LI(包含 A)的整体宽度。

在许多变体中,我在 A 元素上尝试了以下操作:

padding:0 5%;

但这并不适用父宽度的 5% - 有什么想法吗?

这是我正在尝试使用的CSS:

 #main-nav
 {
     float:left;
     height:4.6rem;
     width:100%;
 }

 #main-nav li
 {
    float:left;
 }

 #main-nav li a
 {
    display:block;
    line-height:4.6rem;
    padding:0 2rem; /* this needs to be a percentage */
 }

最佳答案

上/下/右/左的百分比值 padding相对于包含 block 的宽度。

当你说5%时,你应该问自己5%什么?作为 <a> 的包含 block 元素 - 在本例中为列表项 - 没有明确的 width , 5%auto将是auto这没有任何意义。

这并不理想,但在这个特定的例子中 <li>元素有widthauto ,假设#main-nav与屏幕(视口(viewport))一样宽,您可以使用 viewport percentage unit vw 指定下降 <a> 的填充s 相对于视口(viewport)的宽度。

<强> Example Here

#main-nav li a {
  display: inline-block;
  padding: 0 5vw; /* 1vw equals to  1/100 of the width of the viewport */
}

否则,您可能需要将填充应用于 <li>元素代替。

<强> Updated Example

#main-nav li {
  float:left;
  padding: 0 5%;
}

关于css - 百分比填充不适用于 float 列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26339670/

相关文章:

jquery - 在同一元素上使用 jQuery 和 CSS 悬停状态

php - 如何仅在使用php动态生成的tr的最后一行设置背景颜色

javascript - 当我将 JavaScript 元素添加到我的 SVG 文件时,它消失了

html - AngularJS 关闭一个显示在 ng-click 上的 div

jquery - 奇怪的 CSS/图像问题

html - 改变 parent 与 child ?

css - Vuetify.js:将两个 <v-flex> 元素放在 <v-layout> 的中央

jquery - 如何悬停固定元素直到它到达某个点

javascript - Chrome 开发工具运行缓慢,因为我使用的是数据 :image in background image

html - 使用 ng-if 操作表格单元格