6.3.1 面包屑导航
面包屑导航(Bread Crumbs Navigation)是一种辅助和补充的导航方式,非常适合展示站点的层级关系,能帮助用户明确当前所处的位置,并方便地提供返回的路径。
面包屑的概念来自童话故事“汉赛尔和格莱特”,当汉赛尔和格莱特穿过森林时,为了不在森林里迷路,他们就在沿途走过的地方都撒下面包屑,让这些面包屑帮助他们找到回家的路。
由此可知,面包屑导航可以让用户清楚了解当前所处位置,以及当前页面在整个网站中的位置,并帮助用户快速学习和了解网站内容和组织方式,从而形成很好的位置感,还能提供返回各个层级的快速入口,方便用户操作,提高用户体验,从而降低网站的跳出率。
更重要的是,面包屑导航对网站的SEO非常有利,因为它增强了网站的内链建设,搜索引擎蜘蛛只需沿着这个链实施抓取就可以了,非常方便。
最常见的面包屑导航是横向的文字链接,并用大于号“>”分开,这个符号也暗示了链接之间的层级关系。当然,也可以使用其他符号,如 “»”、“/”、“→”等,选择什么符号主要取决于网站的美学设计。
面包屑导航的制作方法非常简单,只需创建一个容器,并在容器中创建面包屑导航的链接即可。为了方便应用样式,可以把大于号放在 span 元素中。
<div class="breadcrumbs">
<a href="#">买房无忧</a><span>></span>
<a href="#">上海二手房</a><span>></span>
<a href="#">发布出售房源</a>
</div>
由于导航中的所有链接都在一行内水平显示,为了美观,将容器的高度和行高设置为相同的值,以便容器中的内容能够垂直居中。
.breadcrumbs {
height: 36px;
line-height: 36px;
}
由于面包屑是一种辅助导航,在页面中,它不应该起支配作用。因此,链接文本不应该太突出,也相对较小。可以将整个导航中文本的颜色设置为浅黑色,字体大小设置为 12px,字体设置为宋体。
.breadcrumbs {
color: #666;
font-size: 12px;
font-family: simsun;
}
并将链接的颜色也设置为浅黑色,并去掉链接的默认下划线。当用户鼠标悬停在链接上时,通过改变链接的颜色,来提醒用户。
.breadcrumbs a {
color: #666;
text-decoration: none;
}
.breadcrumbs a:hover {
color: #f60;
}
此时预览,发现链接文本和大于号挤在一起,影响美观。可以通过 span 元素的外边距,让链接文本和大于号之间保持适当的距离。
.breadcrumbs span {
margin: 0 10px;
}
至此,面包屑导航基本制作完成。运行结果如图 6‑7 所示:
从上图可以看出,整个导航中只包含文本,略显单调。可以在整个导航的开头添加一幅表示主页的图像,来丰富链接的内容,使它不至于那么单调。可以通过一个 img 元素来直接插入图像,也可以通过容器的背景图像来间接插入图像。
两种方法的效果完全相同,只是方法不同而已,这里使用背景图像。要为容器添加背景图像,还要为容器设置左内边距,来为背景图像腾出空间,以防背景图像和文本发生重叠。
.breadcrumbs {
…
padding-left: 20px;
background: url(img/home.jpg) left 10px no-repeat;
}
插入图像后,整个导航就不那么单调了。运行结果如图 6‑8 所示:
事实上,在实际应用中,网站的风格千变万化,面包屑导航的外观也是千变万化,但万变不离其宗,制作方法都是大同小异。比如,苹果商店的面包屑导航如图 6‑9 所示:
要制作这样的面包屑导航也很简单,它只是将 span 元素中的大括号用类似大括号的图像进行替换而已。这个导航实现思路也很简单:
首先,创建导航中的链接。如果一个元素中没有任何内容,其宽度就会收缩为 0,背景图像就无法显示出来。因此,要将 span 元素中的大括号用空格代替。
<div class="breadcrumbs">
<span> </span><a href="#">Shop iPod</a>
<span> </span><a href="#">iPod Accessories</a>
<span> </span><a href="#">Power</a>
</div>
其次,为容器添加边框,并设置合适的圆角。
.breadcrumbs {
…
border-radius: 6px;
border: 1px solid #e5e5e5;
}
最后,将 span 元素的 display属性设置为 inline-block,并设置宽度,再应用模拟大括号的背景图像。
.breadcrumbs span {
margin: 0 6px;
width: 20px;
display: inline-block;
background: url(img/crumbs_bg.png) left top no-repeat;
}