导航栏 - 最后一个元素向右浮动但不换行
Nav bar - last element float right but not wrap
就在我想我开始理解的时候css...
我的导航栏中的最后一项是当前用户。我希望它向右浮动,但如果用户将屏幕缩小,则隐藏起来而不换行。我已经能够让它正确浮动或不包裹但从来没有同时。我想吃蛋糕。
这是一个演示问题的简单示例。非常感谢! - 乔恩
.nav-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
}
ul {
position: relative;
list-style-type: none;
white-space: nowrap;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
display: inline-block;
}
li a {
display: block;
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
color: wheat;
}
.current-user {
color: lightblue;
margin-top: 10px;
margin-right: 10px;
float: right;
}
<navbar class="nav-bar">
<ul>
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
<li><a href="#">link4</a></li>
<li><a href="#">link5</a></li>
<li><a href="#">link6</a></li>
<li><a href="#">link7</a></li>
<li><a href="#">link8</a></li>
<!-- Joe float right but be hidden if overflow -->
<li class="current-user">Joe Doe</li>
</ul>
</navbar>
方法一:
我建议使用媒体查询并以这种方式隐藏它。例如:
@media screen and (max-width: 620px) {
.current-user {
display: none;
}
}
以上CSS仅在屏幕宽度小于620像素时应用。当然,您可以根据需要进行调整。
这里是你的全部代码:
.nav-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
}
ul {
position: relative;
list-style-type: none;
white-space: nowrap;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
display: inline-block;
}
li a {
display: block;
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
color: wheat;
}
.current-user {
color: lightblue;
margin-top: 10px;
margin-right: 10px;
float: right;
}
@media screen and (max-width: 620px) {
.current-user {
display: none;
}
}
<navbar class="nav-bar">
<ul>
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
<li><a href="#">link4</a></li>
<li><a href="#">link5</a></li>
<li><a href="#">link6</a></li>
<li><a href="#">link7</a></li>
<li><a href="#">link8</a></li>
<!-- Joe float right but be hidden if overflow -->
<li class="current-user">Joe Doe</li>
</ul>
</navbar>
有关媒体查询的更多信息,请参阅:these docs
方法二:
您也可以绝对定位元素而不是浮动它。例如:
.current-user {
position: absolute;
right: 0;
}
这里是一个片段:
.nav-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
}
ul {
position: relative;
list-style-type: none;
white-space: nowrap;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
display: inline-block;
}
li a {
display: block;
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
color: wheat;
}
.current-user {
color: lightblue;
margin-top: 10px;
margin-right: 10px;
position: absolute;
right: 0;
}
<navbar class="nav-bar">
<ul>
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
<li><a href="#">link4</a></li>
<li><a href="#">link5</a></li>
<li><a href="#">link6</a></li>
<li><a href="#">link7</a></li>
<li><a href="#">link8</a></li>
<!-- Joe float right but be hidden if overflow -->
<li class="current-user">Joe Doe</li>
</ul>
</navbar>
这样元素就不会换行了。但是,您必须修复重叠。您可以通过为导航项目分配背景颜色并通过调整 z-index 确保它们滑过用户元素来实现。
我相信方法 1 会是更清洁的解决方案。
就在我想我开始理解的时候css...
我的导航栏中的最后一项是当前用户。我希望它向右浮动,但如果用户将屏幕缩小,则隐藏起来而不换行。我已经能够让它正确浮动或不包裹但从来没有同时。我想吃蛋糕。
这是一个演示问题的简单示例。非常感谢! - 乔恩
.nav-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
}
ul {
position: relative;
list-style-type: none;
white-space: nowrap;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
display: inline-block;
}
li a {
display: block;
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
color: wheat;
}
.current-user {
color: lightblue;
margin-top: 10px;
margin-right: 10px;
float: right;
}
<navbar class="nav-bar">
<ul>
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
<li><a href="#">link4</a></li>
<li><a href="#">link5</a></li>
<li><a href="#">link6</a></li>
<li><a href="#">link7</a></li>
<li><a href="#">link8</a></li>
<!-- Joe float right but be hidden if overflow -->
<li class="current-user">Joe Doe</li>
</ul>
</navbar>
方法一:
我建议使用媒体查询并以这种方式隐藏它。例如:
@media screen and (max-width: 620px) {
.current-user {
display: none;
}
}
以上CSS仅在屏幕宽度小于620像素时应用。当然,您可以根据需要进行调整。
这里是你的全部代码:
.nav-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
}
ul {
position: relative;
list-style-type: none;
white-space: nowrap;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
display: inline-block;
}
li a {
display: block;
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
color: wheat;
}
.current-user {
color: lightblue;
margin-top: 10px;
margin-right: 10px;
float: right;
}
@media screen and (max-width: 620px) {
.current-user {
display: none;
}
}
<navbar class="nav-bar">
<ul>
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
<li><a href="#">link4</a></li>
<li><a href="#">link5</a></li>
<li><a href="#">link6</a></li>
<li><a href="#">link7</a></li>
<li><a href="#">link8</a></li>
<!-- Joe float right but be hidden if overflow -->
<li class="current-user">Joe Doe</li>
</ul>
</navbar>
有关媒体查询的更多信息,请参阅:these docs
方法二:
您也可以绝对定位元素而不是浮动它。例如:
.current-user {
position: absolute;
right: 0;
}
这里是一个片段:
.nav-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
}
ul {
position: relative;
list-style-type: none;
white-space: nowrap;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
display: inline-block;
}
li a {
display: block;
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
color: wheat;
}
.current-user {
color: lightblue;
margin-top: 10px;
margin-right: 10px;
position: absolute;
right: 0;
}
<navbar class="nav-bar">
<ul>
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
<li><a href="#">link4</a></li>
<li><a href="#">link5</a></li>
<li><a href="#">link6</a></li>
<li><a href="#">link7</a></li>
<li><a href="#">link8</a></li>
<!-- Joe float right but be hidden if overflow -->
<li class="current-user">Joe Doe</li>
</ul>
</navbar>
这样元素就不会换行了。但是,您必须修复重叠。您可以通过为导航项目分配背景颜色并通过调整 z-index 确保它们滑过用户元素来实现。
我相信方法 1 会是更清洁的解决方案。