我正在考虑创建一个固定的导航栏,它将位于我的应用程序的视图中。该栏将包含3个元素,后退按钮,导航下拉列表和可选按钮部分。这三个元素在左侧,中间和右侧与导航栏对齐。
这个想法是"返回"按钮实际上会列出上一节的内容,例如"摘要"或"个人详细信息"。因此,本文将根据前一部分进行扩展。导航按钮还将列出您所在的部分,与后退按钮的原理相同。但是这篇文章并没有真正关注导航或可选的按钮元素。
我已经链接了一个基本的plunker,它可以让您大致了解我在做什么。这个想法是当视口变得足够小(宽度低于215px)和"返回"和"导航"元素碰撞,后面按钮中包含的文本将被隐藏,只给你一个雪佛龙。目前你可以看到这种工作在CSS中,但是按钮仍然包含宽度,因为按钮的文字被推到了雪佛龙下面。如果根本没有文字,那么想法就是拥有人字形的宽度。没有特定的断点,因为文本将根据应用程序的每个部分而有所不同。
我想知道是否可以用CSS做到这一点?我知道使用JavaScript是可能的,但如果有CSS解决方案可用,我宁愿选择这条路线。如果没有CSS解决方案,那么JS必须成为前进的方向。
HTML
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<div class="container">
<div class="back-container">
<button class="back">
<span class="chevron"></span>
<span class="text">Back</span>
</button>
</div>
<div class="navigation-container">
<div class="navigation-container-inner">
<button class="navigation">Navigation</button>
</div>
</div>
<div class="plus-container">
<ul class="plus">+</ul>
</div>
</div>
</body>
</html>
CSS
.container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-content: stretch;
align-items: flex-start;
}
.back-container {
order: 0;
flex: 1 1 auto;
align-self: auto;
}
.navigation-container {
order: 0;
flex: 1 1 auto;
align-self: auto;
display: flex;
justify-content: center;
text-align: center;
}
.plus-container {
order: 0;
flex: 1 1 auto;
align-self: auto;
text-align: right;
}
button.back {
height: 32px;
}
button.back .chevron,
.chevron {
float: left;
display: inline-block;
height: 30px;
width: 18px;
background: url(http://games.thediamondjubilee.org/game_images/timeline/black-chevron-left.png);
background-repeat: no-repeat;
}
button.back .text {
display:inline-block;
margin-left: 6px;
}
ul.plus {
display:inline-block;
}
编辑:在提及媒体查询的人员中,这是一个可能在元素内的潜在文本的plunker。当现在将浏览器的大小调整为宽度为335px时,您可以看到后部元素和导航元素发生冲突。当文本消失时,后退按钮仍包含基于其中包含的文本的宽度。我希望后退按钮缩小到只有雪佛龙。请记住,这些元素中的文本是动态的,具体取决于用户从当前所处的位置和当前位置。
Plunker with real variable values within back and navigation button
编辑2:该解决方案需要在IE10和11,Chrome,FF和Safari中使用。因此,不要担心在IE方面支持任何较低的东西。