【问题标题】:Position element relative to parent element相对于父元素定位元素
【发布时间】:2018-08-04 07:23:10
【问题描述】:

例如我有固定的导航,有没有办法将列表项锚定到导航的底部?我也试图给列表项一个固定的位置,但这会弄乱它们的布局,正如您在 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>

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

【问题讨论】:

    标签: css css-position fixed


    【解决方案1】:

    当您使用fixedabsolute 位置时,它会从文档流中取出一个元素,因此当您将这些位置应用于li 元素时,它们会相互堆叠。

    相反,您应该将ul 块绝对定位到#nav 的底部:

    #nav > ul {
        list-style: none;
        margin: 0;
        position: absolute;
        bottom: 0;
    }
    #nav > ul>li {
        display: inline;
    }
    

    【讨论】:

      【解决方案2】:

      据我了解您的问题,您希望将列表元素放在标题的底部。只需将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>

      【讨论】:

        【解决方案3】:

        如果您想将某些内容锚定到元素的底部,但仍保留在页面流中,请尝试使用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>

        这似乎工作得很好,如果没有,请告诉我。

        你遇到的问题是固定的定位把它们都弄得一团糟。固定定位所有项目相对于视口的位置,所以如果你有所有的lis

        position: fixed;
        top: 45px;
        

        他们都会去同一个地方。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-21
          • 1970-01-01
          • 1970-01-01
          • 2011-07-09
          • 2012-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多