【问题标题】: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】:
当您使用fixed 或absolute 位置时,它会从文档流中取出一个元素,因此当您将这些位置应用于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;
他们都会去同一个地方。