相对于父元素的位置元素

时间:2018-08-04 07:23:11

标签: css css-position fixed

例如,我有固定的导航,是否可以将列表项固定在导航的底部?我也尝试将列表项设置为固定位置,但这会弄乱它们的布局,如您在fiddle

中所见

这是我的代码:

#nav {
  height: 75px;
  width: 100%;
  position: fixed;
  top: 0;
  z-index: 1;
  border-bottom: 1px solid white;
  background-color: #157FFB;
  border-bottom: 2px solid #eeeeee;
}

#nav>ul {
  list-style: none;
  margin: 0;
}

#nav>ul>li {
  display: inline;
  /*these two lines were my attempt at anchoring the list items to the bottom f the #nav, but it throws everything out of wack*/
  position: fixed;
  top: 45px;
}
<div id="nav">
  <ul>
    <li class="align_left"><a href="#">LOGO</a></li>
    <li class="align_right"><a href="#">Repairs/Upgrades</a></li>
    <li class="align_right"><a href="#">Networking</a></li>
    <li class="align_right"><a href="#">Remote Backups</a></li>
    <li class="align_right"><a href="#">Data Recovery</a></li>
  </ul>
</div>

关于如何做到这一点的任何建议?

3 个答案:

答案 0 :(得分:0)

使用fixedabsolute位置时,它会从文档流中删除一个元素,因此当您将这些位置应用于{{1 }}元素。

相反,您应该将li块绝对定位在ul的底部:

#nav

答案 1 :(得分:0)

据我所知,您希望列表元素位于标题的底部。只需将position: fixed;更改为position: relative;。这样可以使元素和页面保持一致。

这是您的解决方案:

#nav{
    height: 75px;
    width: 100%;
    position: fixed;
    top: 0;
    z-index: 1;
    border-bottom: 1px solid white;
    background-color: #157FFB;
    border-bottom: 2px solid #eeeeee;
}



#nav > ul{
    list-style: none;
    margin: 0;
}
#nav > ul>li{
    display:inline;
    
    /*these two lines were my attempt at anchoring the list items to the bottom f the #nav, but it throws everything out of wack*/
    position: relative; 
    top:50px;
}
    <div id="nav">
        <ul>
            <li class="align_left"><a href="#">LOGO</a></li>
            <li class="align_right"><a href="#">Repairs/Upgrades</a></li>
            <li class="align_right"><a href="#">Networking</a></li>
            <li class="align_right"><a href="#">Remote Backups</a></li>
            <li class="align_right"><a href="#">Data Recovery</a></li>
        </ul>
    </div>

答案 2 :(得分:0)

如果您希望将某些内容锚定到元素的底部,但仍保留在页面流中,请尝试使用relative positioning。从本质上讲,这意味着您为#nav元素赋予了相对位置,同时也为li元素赋予了相对位置:

#nav {
  height: 75px;
  width: 100%;
  position: relative;
  top: 0;
  z-index: 1;
  border-bottom: 1px solid white;
  background-color: #157FFB;
  border-bottom: 2px solid #eeeeee;
}

#nav>ul {
  list-style: none;
  margin: 0;
}

#nav ul li {
  display: inline;
  position: relative;
  top: 45px;
}
<div id="nav">
  <ul>
    <li class="align_left"><a href="#">LOGO</a></li>
    <li class="align_right"><a href="#">Repairs/Upgrades</a></li>
    <li class="align_right"><a href="#">Networking</a></li>
    <li class="align_right"><a href="#">Remote Backups</a></li>
    <li class="align_right"><a href="#">Data Recovery</a></li>
  </ul>
</div>

这似乎效果很好,请告诉我是否无效。

您遇到的问题是固定的位置使它们一团糟。固定定位所有项目相对于视口的位置,因此如果所有li都带有

position: fixed;
top: 45px;

他们全都在同一地点。