整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

《小白H5成长之路23》网页漂浮层与浮动导航是怎么实现的

小白,你最近看CSS的时候碰到position属性了么?"

“碰到了,通过position可以改变容器的定位,我记得官方描述是这样的:这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。”

“恩,不错,今天咱说一下position里面的fixed类型吧,这个属性值是让容器基于浏览器窗口的绝对定位,在我们平时的制作中经常会碰到。”

老朱接着说:“给一个容器设定position为fixed以后,可以通过left、right、bottom、top进行四个方向的距离定位。现在我们在页面中写一个fixed容器,看一下代码片段。”

“你看,这里我在body里面加了一个标识为foot的div,然后他的css里面把position设置成了fixed,并且bottom(距离底部)为0,这里的bottom是基于浏览器窗口的距离进行计算的,foot的宽和高也进行了设定。现在我们看一下效果!”

“你可以看到,拖动滚动条往下滚动网页的时候,foot的位置并不会随着滚动条的滚动发生改变,它就像是漂浮在那里一样。这里的foot是一个div容器,所以它的内部我们还可以放任何你希望布局的内容,比如放一个图片,或者其他的容器。”

“这里插入的图片要想跟foot容器宽度一致,根据我们之前说过的对图片css的操作,把图片的宽度(width)设定为100%,图片就会自动与父容器宽度一致了。”

小白突然想到了很多手机HTML5页面下方都有导航条,问道:“很多手机的HTML5页面里面下方的导航条不会随着页面的滚动而滚动,这种导航条是不是也通过fixed来设定的。”

“是的,跟这里的foot一样,我们只需要把导航条的父容器设定为fixed就可以了。有个需要注意的地方是导航条会根据手机屏幕的分辨率自动占用屏幕宽度,所以我们在给foot设定css样式的时候就不能设定宽度了。”

小白问道:“那应该怎么设定呢?”

老朱说:“你忘了我们刚说了fiex可以通过top、right、bottom、left设定四个方向的距离么?如果要让一个fixed容器左右靠边,我们只需要left为0,right为0,它就会自动匹配窗口的宽度。现在我们把之前的foot容器改一下。”

“通过设定bottom、left、right可以让foot靠近底部并且保持与窗口宽度一致。然后我们在foot里面放了一个ul-li容器,让li容器向左浮动并且宽度为父容器的25%,布局就会变成这样。”

“网页上的底部导航通常都会放入透明的png图片,现在我们插入png图,再进行一下css的调整。”

“网页底部导航条,上面还会牵扯到鼠标事件,焦点样式变化,这些知识我们随后也会一一展开讨论,今天先这样吧!你先练习练习今天说的这些内容,然后试着做一个居中漂浮的层,看看能不能做出来!”


想学H5的朋友可以关注老炉,您的关注是我持续更新《小白HTML5成长之路》的动力!

篇文章,小海老师带领大家一同做一个利用CSS技术实现的导航栏。通过这个导航栏的制作,希望大家能够对前几篇文章中学习到的CSS属性能有一个整体的认识,并能够达到灵活运用的程度。

承接文章:灵活控制块级元素在一行内显示,CSS浮动属性,知道原理就很简单

技术等级:初级 | 适合前端开发的初学者阅读学习。

希望收藏了这篇文章的你同时也可以关注一下“小海前端”的头条号,因为这些文章都是连载的,并且是经过系统的归纳和总结的。塌下心来认真阅读,你一定会学到对你有用的知识。

如果你是初学前端开发,强烈建议跟着文章中讲的步骤自己做一做。步骤不多,思路简单,占用不了大家太多的时间,自己做一遍,一定会收获不少。

一、导航栏效果图展示:

今天我们要做的导航栏效果如下图所示。

导航栏效果图展示

这个效果主要使用的是<ul></ul>标记对和<a></a>标记对共同实现的。

整个实例涉及到的CSS属性如下所示:

  • width

  • height

  • background-color

  • list-style-type

  • display

  • float

  • margin

  • line-height

二、实现页面效果:

首先为导航栏设置一个<div>容器,并设置其id属性的取值设置为nav。该容器用来控制导航栏的通栏位置。通栏的容器宽度应该设置为100%,这里高度设置为40px,颜色为#a72f2e。实现代码如下所示:

<div id=”nav”></div>

#nav{

width:100%; height:40px;

background-color:#a72f2e;

}

由于要在通栏的容器中显示固定宽度为1000px的导航栏主体,因此在该容器内部再制作一个<div>容器,用来盛放真正的导航栏代码。我们将它的class属性取值为navContent。这个容器的宽度设置为1000px,高度与#nav的高度等高,并且在#nav容器内部水平居中。实现代码如下所示:

<div class=”navContent”></div>

#nav .navContent{

width:1000px; height:40px;

margin:0 auto;

}

接下来在.navContent容器内部书写导航栏的各个条目。导航栏是使用<ul></ul>标记对实现的,而它的导航栏条目是利用<li></li>标记对书写的。因为导航栏需要单击后跳转页面,所以在<li></li>内部使用了<a></a>标记对。

这里要说明一点,因为<li></li>标记对是块级元素,<a></a>标记对是内联元素,因此要让<li></li>标记对包裹<a></a>标记对,不要用<a></a>标记对包裹<li></li>标记对。

这里以导航栏条目“首页”和“网站介绍”为例,下列HTML代码展示了导航栏的条目内容。

<ul>

<li><a href="index.html">首页</a></li>

<li><a href="#">网站简介</a></li>

</ul>

需要更多的导航栏条目,可以在<ul>标记对内部重复书写<li></li>和<a></a>的代码格式。

三、编写整个导航栏的CSS样式:

整个导航栏是使用<ul></ul>标记对实现的,所以需要对<ul></ul>标记对编写CSS样式。

由于无序列表的列表项左侧带有小圆点的项目符号,因此需要将该项目符号去掉。所以<ul></ul>标记对的CSS代码如下所示:

#nav .navContent ul{

list-style-type:none;

}

四、编写导航栏条目的CSS样式:

导航栏条目是使用<li></li>标记对实现的,所以需要对<li></li>标记对编写CSS样式。

由于<li></li>标记对是块级元素,因此即使去掉了左侧的项目符号,所有的条目依然都各自独占一行显示,所以需要让它们在一行内显示,这就需要让所有的<li></li>标记对左浮动。CSS代码如下所示:

#nav .navContent ul li{

float:left;

}

五、编写导航栏条目中链接的CSS样式:

导航栏条目中的链接是使用<a></a>标记对实现的,所以需要对<a></a>标记对编写CSS样式。

由于<a></a>标记对是内联元素,因此无法设置宽度和高度,也就无法为每一个导航栏条目设置尺寸。因此需要将<a></a>标记对转换为块级元素(display属性),然后设置宽度和高度(width属性和height属性)。

有了宽度和高度,就需要让链接的文本在容器中水平居中(text-align属性)和垂直居中(line-height属性)了。

最后去掉链接的下划线(text-decoration属性),并设置链接的文本颜色(color属性)。

导航栏条目中链接的CSS代码如下所示:

#nav .navContent ul li a{

display:block;

width:100px; height:40px;

text-align:center;

line-height:40px;

text-decoration:none;

color:#dddddd;

}

六、编写鼠标经过导航栏条目时的CSS样式:

鼠标经过导航栏目时,即使没有触碰到链接的文本部分,也应该能够进行跳转。因此需要对<a></a>标记对编写鼠标经过时的CSS样式。

鼠标经过时,希望背景颜色(background-color属性)和文本颜色(color属性)发生变化。

鼠标经过链接时的CSS代码如下所示:

#nav .navContent ul li a:hover{

background-color:#ff5857;

color:#ffffff;

}

七、整体代码:

至此,这个简单的导航栏效果就完全实现了,CSS整体使用了约30行代码。实现这个导航栏效果的HTML代码如下图所示。

HTML整体代码

实现这个导航栏效果的CSS代码如下图所示。

CSS整体代码

小海教材

如果大家希望得到更加全面的关于HTML和CSS技术讲解的内容,可以私信我,我会免费将小海老师自己编写的HTML和CSS的PDF教材发给你,帮助你在前端开发的道路上阔步前行。

小海声明

在头条上发表的这些文章都是从前端开发的基础开始一步一步讲起的。我非常希望能有更多的前端开发初学者通过我写的文章,逐步学到一定的知识,甚至慢慢有了入门的感觉。这些文章都是我这几年教学过程中的经验,每写一篇时我都尽量把握好措辞,用简单易懂的语言描述,同时精心设计版面,让版面更加丰富,激发阅读兴趣。所以,每一篇文章可能篇幅不长,但是都要耗费小海老师很久的时间。

希望收藏了这篇文章的你同时也可以关注一下“小海前端”的头条号,因为这些文章都是连载的,并且是经过系统的归纳和总结的。塌下心来认真阅读,你一定会学到对你有用的知识。

关注“小海前端”,我会继续为大家奉上更加深入的前端开发文章,也希望更多的初学者跟着学下去,我们共同将前端开发的路努力坚持的走下去。

文章预告

下一次,小海老师开始为大家讲解CSS的盒属性。盒属性是div布局的基础,在实际的布局过程中有许多应用技巧。下一篇文章我会为大家将盒属性一个一个进行详细的分析。

果你正在寻找能够吸引人眼球的高素质顶部悬浮菜单设计,那么这12个导航设计案例值得你一看~

导航是网站和 APP 当中必不可少的组成部分,它们引导用户抵达目标,发现内容。为了让用户能够更加方便地使用导航,许多网站和 APP 选择使用了顶部悬浮导航,无论浏览到哪里,都能轻松使用它跳转到其他地方。虽然有的用户并不喜欢这个一直占据屏幕空间的小控件,但是它确实提供了无与伦比的便捷性。

如果你正在寻找能够吸引人眼球的高素质顶部悬浮菜单设计,那么今天的文章一定不要错过,这12个导航设计绝对不会让你失望。

1. Ascensión Latorre(http://www.ascensionlatorre.com/home)

虽然我并不懂法文,这个网站并不难使用和理解。

在页面的顶部你会看到包含文本的 LOGO 和导航链接,当你向下滑动的时候,LOGO 中的文本消失,而导航上移。这样的设计占据空间并不大,对于承担繁重工作量的菜单而言,这是相对理想的选择。

不过,如果你觉得这样还占空间的话,可以加入过渡动效,然后让链接的文本变化为小图标,这样的技术也很成熟。

2. Search Engine Journal(https://www.searchenginejournal.com/)

SEJ 是一个很棒的博客,而它的导航设计也算得上是独树一帜,因为在别的地方几乎看不到相同的设计。

当你访问网站首页的时候,你会看到导航下的轮播图中嵌入了网站的 LOGO,导航栏左侧有 LOGO 和注册按钮构成的动态图片。当你向下滚动的时候,整个导航向右移动,在左侧出现网站 LOGO,整个设计非常动感,也非常的炫酷。

这样的设计无疑是经过仔细斟酌,并且确实有用的,兼顾到了品牌的设计和导航的功能性。

3. AWD Agency(http://www.awdagency.com/en)

在整个列表当中,AWD Agency 的侧边栏式导航是为数不多的几个案例之一。

只需要点击左上角的箭头就能将侧边栏隐藏起来,纵向上空间更大,侧边栏导航所能承载的内容并不会比顶部导航更少,而且在兼容移动端上一点都不含糊。

这个设计的优点在于可控性上非常不错,处理得干净利落,也很直接。

4. Graz Secrets(http://grazsecrets.at/)

我从来没有用过 Graz Secrets 的 iOS APP,但是看了他们的官网之后,感受到他们在用户体验上的独特想法,对此就很有兴趣了。

网站的顶部导航设计很有特色,通过小边框来和下面的页面部分来区分,最有特色的是导航栏最中间的位置,一个风格独特的「立即下载」的按钮。

当你向下滚动的时候,整个导航会很好的融入整个布局。

5. Grain & Mortar(http://grainandmortar.com/)

Grain & Mortar 是我去年见过的最干净的设计机构的网站。

许多网站会为了流行和时尚而使用一些图形、动画甚至图片,这些元素常常会让人感到困惑,但是 G&M 的网站不是这样。这个网站中没有多余的元素,但是最重要的是,网站的顶部悬浮导航的设计。

网站首屏使用的是视频背景,为了更好的融入感,导航条目悬浮在前景,这无疑带来了沉浸式的体验。当页面向下滚动的时候,通过转场动画,导航出现了一个白色的底,通过一条浅灰色的线,和页面的内容部分进行了区分,并且固定悬浮在顶部。

6. Jorge Rigabert(http://www.jorgerigabert.com/)

Jorge Rigabert 同样是一个非英语类的网站。这个网站同样采用了侧边栏导航,由于网站采用了类似单页这样的设计,导航栏中的条目指向到页面中不同的位置和模块。当你滚动页面的时候,左侧导航栏会随之变化,为你高亮展示出所处的位置。页面的布局算得上是中规中矩,而导航栏在指引性上的设计,可谓是出彩。

7. Daniel Filler(http://danielfiller.com/)

作为一个作品集网站,Daniel Filler 的网页设计也非常的讨喜,它和前面 G&M 的导航设计有许多相似的地方。打开首屏的时候,导航底部和背景 Banner 图很好的融入到一起,页面的左上角是巨大的 LOGO。

当你向下滚动的时候,导航消失随后又出现,这个时候它拥有了一个半透明的底部背景,巨大的 LOGO 部分显示,融入导航,导航栏的条目则从最初的右边挪到了靠左的位置。整个设计在体验上总体是无缝顺畅的,最让人印象深刻的设计在于,常常出现在网页右下角的「回到顶部」的箭头按钮,被放置在顶部导航的最右边,非常的顺手,颇为创新。

8. Novotel Hotels(https://novotel.accorhotels.com/gb/usa/index.shtml)

在我所看到的诸多酒店类的网站当中,Novotel Hotels 的网站导航设计绝对是最特殊的那款。

网站的许多导航功能并没有直接摆出来,而是隐藏到了左上角的汉堡图标当中。当你向下滚动的时候,预订筛选菜单会随着滚动靠近顶部导航,然后粘在上面,悬浮置顶。方便用户随时随地地搜索和筛选。

9. FHOKE(https://www.fhoke.com/)

FHOKE 这个网站的导航设计也不算复杂,实际上就是LOGO 和右上角的菜单按钮,它是没有底色,并且随着页面内容的背景颜色变化而自动匹配对比强烈的黑色或者白色。这样的设计让导航无缝地融入到整个页面的布局当中,并且让用户可以随时便捷地点击导航中的内容。

10. Brit + Co(https://www.brit.co/)

对于 Brit + Co 的导航设计,你会发现几个非常不错的优点。当你向下滚动浏览的时候,悬浮置顶的导航栏会自动隐藏起来,这样会节省空间,并且这种设计也很直接。当你向上回滚页面的时候,导航会出现。

而搜索功能也设计得非常巧妙,当你点击搜索按钮的时候,搜索框会出现在导航下方,足够长,足够明显的输入框,比什么都好。

11. Coloud(https://www.coloud.com/co_us_en)

打开 Coloud 网站,向下滚动的时候,你会注意到导航栏的边户:它变窄了,变小了,甚至不会显示公司的 LOGO 了。这看起来很疯狂,但是谁会因为向下滚动浏览而忘记所处的网页呢?当然不会。导航这样处理,其实更加方便,缩小,保持存在感,提升定位感和体验。

12. Prollective(https://prollective.com/)

最后这个案例绝对是最返璞归真的设计方案。没有滚动的标识,没有搜索框,没有视觉障碍,没有动效,它就是在右上角上四个小小的链接,黑色,对比强烈,始终存在,节省空间,随时可以点击。对于极简风的网页而言,这样的设计效果是很不错的。

原文作者 : JAKE ROCHELEAU

译者/编辑 : 陈子木

译文地址:https://www.uisdc.com/12-fixed-sticky-navbars

本文由 @陈子木 授权发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自 Pexels,基于 CC0 协议