HTML导航栏的四种制作方法,jQuery+CSS3实现四种应用广泛的导航条制作实例详解

HTML导航栏的四种制作方法,jQuery+CSS3实现四种应用广泛的导航条制作实例详解导航条的使用很广,每个网站都会做出具有自己特色的导航条。最近特地去了解了各种类型的导航条,比如具有高亮显示的导航条,中英文互相切换的导航条,具有弹性动画的导航条,甚至是具有摩擦运动动画的导航条(文字下面有横线)等。每种导航条都有自己的特色,比如高亮显示的导航条看起来比较简单,但是视觉效果还不错,具有动画效果的导航条在视觉上也是有很好的效果。接下来将会一一介绍4种应用比较广的导航条,即:高亮显示的导…

大家好,又见面了,我是你们的朋友全栈君。

导航条的使用很广,每个网站都会做出具有自己特色的导航条。最近特地去了解了各种类型的导航条,比如具有高亮显示的导航条,中英文互相切换的导航条,具有弹性动画的导航条,甚至是具有摩擦运动动画的导航条(文字下面有横线)等。每种导航条都有自己的特色,比如高亮显示的导航条看起来比较简单,但是视觉效果还不错,具有动画效果的导航条在视觉上也是有很好的效果。

接下来将会一一介绍4种应用比较广的导航条,即:高亮显示的导航条,中英文互相切换的导航条,具有弹性动画的导航条,具有摩擦运动动画的导航条。

1、高亮显示的导航条

这种导航条:当你点击某一个导航时,就让他高亮显示,其他的默认原来的样式,也就是说在不改变菜单CSS代码的情况下,用Js控制菜单的背景,假如该菜单项被点击后,将赋予它一个与众不同的背景颜色或背景图像,这样可以清淅的指引用户下在浏览的网站栏目,简单方便而且效果好。

效果图如下:

33cbb96bd2e83171f2d73458c57d5286.png

html:(这里省略了其他html文件的代码,只贴出一个index.html的代码)

首页

首页

css:

*{

margin:0px;

padding:0px;

font-family: “Microsoft Yahei”, Helvetica, sans-serif, Lato;

}

.nav{

background-color: #222;

height: 40px;

width:100%;

margin-top:50px;

}

.nav-list{

width: 1000px;

margin: 0 auto;

}

.nav-list li{

list-style: none;

float: left;

}

.nav-list li a{

color: #aaa;

padding:0 40px;

text-decoration: none;

line-height: 40px;

display: block;

border: none;

}

.content{

margin:20px auto;

text-align: center;

}

.nav-list li a:hover{

color: #fff;

background: #504d4d;

}

.nav-list li a.on{

color: #fff;

background: #504d4d;

}

jquery:

$(function(){

var index = (window.location.href.split(“/”).length)-1;

var href = window.location.href.split(“/”)[index].substr(0,4);

if (href!=null){

$(“.nav-list li a[href^='”+href+”‘]”).addClass(“on”);

}else{

$(“.nav-list li a[href=’index.html’]”).addClass(“on”);

}

});

其中主要的知识点在于如何检测当前网页的网址和a标签中的href对应,然后相应地改变样式,在这里用了window.location.href的方法去获取网页当前的网站,用split()切割,最后一部分的内容就是我们想要的。在正常情况下,并不需要完全匹配整个网址,所以在这里用了substr()的方法匹配前几位字母。我在css文件中添加了on类,通过给a标签增加class=“on”,然后通过js中的addClass()方法就完成了功能。

2、中英文切换的导航条

先来看一下效果图:

1126a845c55c129ac28711716545a7fc.gif

我采用了两种方式实现,一种用css3,另一种是用jquery实现。

首先说一下用css3如何实现:

html:

首页

css:

*{

margin:0px;

padding:0px;

font-family: “Microsoft Yahei”, Helvetica, sans-serif, Lato;

}

li{

list-style: none;

}

a{

text-decoration: none;

}

.nav{

width:100%;

height: 40px;

background-color: #222;

margin-top:100px;

overflow: hidden;

}

.nav-list{

width:1000px;

margin:0 auto;

height: 40px;

}

.nav-list li {

float: left;

}

.nav-list li a{

display: block;

transition: 0.2s;

}

.nav-list li b,.nav-list li i{

color:#aaa;

line-height: 40px;

display: block;

padding:0 30px;

text-align: center;

}

.nav-list li b{

font-weight:normal;

}

.nav-list li i{

font-style: normal;

color:#fff;

background-color: #333;

}

.nav-list li a:hover{

margin-top:-40px;

}

红色部分就是这个过程的实现,利用位置的变化,当鼠标移上去的时候,显示中文,也就是将英文移开,值得注意的是,需要利用overflow:hidden属性,将其隐藏。如果想要速度慢一点的话,可以利用transition属性设置变化时间,就可以减慢变化速度。

接着是用jquery实现:

css:

*{

margin:0px;

padding:0px;

font-family: “Microsoft Yahei”, Helvetica, sans-serif, Lato;

}

li{

list-style: none;

}

a{

text-decoration: none;

}

.nav{

width:100%;

height: 40px;

background-color: #222;

margin-top:100px;

overflow: hidden;

}

.nav-list{

width:1000px;

margin:0 auto;

height: 40px;

}

.nav-list li {

float: left;

}

.nav-list li a{

display: block;

}

.nav-list li b,.nav-list li i{

color:#aaa;

line-height: 40px;

display: block;

padding:0 30px;

text-align: center;

}

.nav-list li b{

font-weight:normal;

}

.nav-list li i{

font-style: normal;

color:#fff;

background-color: #333;

}

jquery:

$(function(){

$(“.nav-list li a”).hover(function(){

$(this).stop().animate({“margin-top”:-40},200)

},function(){

$(this).stop().animate({“margin-top”:0},200)

});

});

实现功能的重点是animate()函数的实现,通过设置margin-top和时间实现,为了防止快速经过时,所有的都会变化(如下图所示),需要在animate()函数前面加上stop()函数,即在所有动画之前,先停止其他的动画,然后再开始这个动画。

f21b3116244028f243b812ebf3bda378.gif

3、带有弹性动画的导航条

我采用了三种方式实现,第一种是css3,第二种是jquery,第三种是jquery easing实现。效果图如下:

因为三种的布局是一样的,所以就直接附上html的结构代码。

html:

第一种:css3实现

*{

margin:0px;

padding:0px;

font-family: “Microsoft Yahei”, Helvetica, sans-serif, Lato;

}

li{

list-style: none;

}

a{

text-decoration: none;

}

.nav{

width:100%;

height: 40px;

margin-top:50px;

background-color: #222;

}

.nav .nav-list{

width: 1000px;

height: 40px;

margin:0 auto;

}

.nav .nav-list li{

float: left;

position: relative;

}

.nav .nav-list li > a{

display: block;

height: 40px;

line-height: 40px;

padding:0 30px;

color:#aaa;

width:60px;

}

.nav .nav-list li:hover>a{

color:#fff;

background-color: #333;

}

.nav .nav-list li:hover .nav-down{

display: block;

}

.nav-down{

width:150px;

background-color: #333;

position: absolute;

top:40px;

left:0px;

display: none;

}

.nav .nav-list .nav-down a{

display: block;

line-height: 30px;

color:#aaa;

padding-left:30px;

}

.nav .nav-list .nav-down a:hover{

color:#fff;

background-color: #333;

}

实现方法很简单,即刚开始让下拉的菜单隐藏,然后当鼠标经过的时候,将隐藏的菜单显示即可,具体实现代码如上的红色部分,这里不作详细讲解,代码很简单。

第二种:用jquery实现。

css:

*{

margin:0px;

padding:0px;

font-family: “Microsoft Yahei”, Helvetica, sans-serif, Lato;

}

li{

list-style: none;

}

a{

text-decoration: none;

}

.nav{

width:100%;

height: 40px;

margin-top:50px;

background-color: #222;

}

.nav .nav-list{

width: 1000px;

height: 40px;

margin:0 auto;

}

.nav .nav-list li{

float: left;

position: relative;

}

.nav .nav-list li > a{

display: block;

height: 40px;

line-height: 40px;

padding:0 30px;

color:#aaa;

width:60px;

}

.nav .nav-list li:hover>a{

color:#fff;

background-color: #333;

}

.nav-down{

width:150px;

background-color: #333;

position: absolute;

top:40px;

left:0px;

display: none;

}

.nav .nav-list .nav-down a{

display: block;

line-height: 30px;

color:#aaa;

padding-left:30px;

}

.nav .nav-list .nav-down a:hover{

color:#fff;

background-color: #333;

}

jquery:

$(function(){

$(“.nav .nav-list li”).hover(function(){

$(this).find(“.nav-down”).stop().slideDown()

},function(){

$(this).find(“.nav-down”).stop().slideUp()

});

});

实现方法之前也讲过,在仿造百度换肤功能的部分,在这里采用的是slideDown()和slideUp()方法,如果想要设置变化时间,可以直接在括号中填入时间即可。

第三种:用jquery.easing实现。

css的样式跟用jquery实现的样式一样,这里就不增加空间再复制一遍了。

jquery:

$(function(){
   
   

$(“.nav .nav-list li”).hover(function(){

$(this).find(“.nav-down”).stop().slideDown({duration:500,easing:”easeOutBounce”})

},function(){

$(this).find(“.nav-down”).stop().slideUp({duration:500,easing:”easeOutBounce”})

});

});

使用这种方法实现时记得引进包jquery.easing.1.3.min.js(我用的是这个版本,大家可以自行在网上下载)。在这里重点说一下思路:当鼠标移动的时候, 弹性下拉菜单会跟随着下滑,当鼠标移开的时候,弹性下拉菜单会上滑,同样用到了前面所说的slideDown()和slideUp()方法,唯一不同的是在这里增加了动画,即采用easing实现,它其实就是类似于json的格式,插入duration和easing方式就可以,如果不懂里面的实现过程,可以查一下相关的说明文档,看看就会了。

4、摩擦运动动画跟随的导航条

241c53c73fc3576b80e513746a0eecf9.gif

实现思路就是:将鼠标移动的时候,把横条的位置移动到当前文字的下方。所以需要获取当前鼠标移动到的位置,即top和left,然后将横条的top和left相应地改变就可以实现,具体实现如下。

html:(这里只贴上一个页面的代码)

摩擦运动动画跟随的导航条

css:

*{

margin:0px;

padding: 0px;

font-family: “Microsoft Yahei”, Helvetica, sans-serif, Lato;

}

li{

list-style: none;

}

a{

text-decoration: none;

}

.nav{

width:100%;

height:40px;

margin-top:50px;

background-color: #f6f6f6;

}

.nav .nav-content{

width:1000px;

margin:0 auto;

height: 40px;

position: relative;

}

.nav .nav-list li{

float: left;

}

.nav .nav-list li a{

color:#333;

height: 40px;

line-height: 40px;

display: block;

padding:0 30px;

}

.nav .nav-line{

height:3px;

background: #35b558;

width:100px;

position: absolute;

top:40px;

left:0px;

}

.nav .nav-list li a:hover{

color:#35b558;

}

.nav .nav-list li a.on{

color:#35b558;

}

jquery:

$(function () {

var index = window.location.href.split(“/”).length-1;

var href = window.location.href.split(“/”)[index];

$(“.nav .nav-list li a[href='”+href+”‘]”).addClass(“on”);

var li_width = $(“.nav .nav-list li a.on”).outerWidth();

var li_left = $(“.nav .nav-list li a.on”).position().left;

$(“.nav-content .nav-line”).css({width:li_width,left:li_left});

$(“.nav .nav-list li”).hover(function(){

var li_width = $(this).outerWidth();

var li_left = $(this).position().left;

$(“.nav-content .nav-line”).stop().animate({“width”:li_width,”left”:li_left},{duration:1500,easing:”easeOutElastic”});

},function(){

$(“.nav-content .nav-line”).stop().animate({“width”:li_width,”left”:li_left},{duration:1500,easing:”easeOutElastic”});

});

});

主要说几个方法的作用:

1)outerwidth()获取元素的宽度(因为文字的个数不同,宽度就不一样,为了好看,横条需要适应文字的宽度);

2)position().left获取元素的位置中left的值;

3)animate()实现动画效果;

4)duration和easing都是jquery easing插件的内容,即设置动画的效果。

以上所述是小编给大家介绍的jQuery+CSS3实现四种应用广泛的导航条制作实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对脚本之家网站的支持!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163157.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月22日 上午11:46
下一篇 2022年7月22日 上午11:46


相关推荐

  • c++指针初始化问题

    c++指针初始化问题c 中的指针是一个很经典的用法 但是也是最容易出错的 比如定义了一个指针 必须对其进行初始化 不然这个指针指向的是一个未知的内存地址 后续对其操作的时候 会报错 这只是其次 最让人头疼的就是指针错误问题 往往编译的时候可以通过 在程序运行的时候 就会出现异常 如果对程序不是很熟悉 则不是很容易找到问题所在 我最近就遇到过很多这样的问题 定义了一个结构体指针 使用的时候忘记初始化 导致在后边使用的

    2026年3月19日
    2
  • 如何使用 DeepSeek 制作业绩报表教程

    如何使用 DeepSeek 制作业绩报表教程

    2026年3月16日
    2
  • 【转载】什么是堆和栈,它们在哪儿?

    【转载】什么是堆和栈,它们在哪儿?

    2021年11月20日
    49
  • Kafka-consumer与Topic分区及consumer处理超时「建议收藏」

    Kafka-consumer与Topic分区及consumer处理超时「建议收藏」概念:消费者组:ConsumerGroup,一个Topic的消息能被多个消费者组消费,但每个消费者组内的消费者只会消费topic的一部分再均衡rebalance:分区的所有权从一个消费者转移到另一个消费者消费者通过被指派为群组协调器的broker(不同的群组可以有不同的协调器)发送心跳来维持它们和群组的从属关系以及它们对分区的所有权关系。只要消费者以正常的时间间隔发送心跳,就…

    2025年7月16日
    3
  • git 拉取代码两种方式

    git 拉取代码两种方式SSH 方式需要事先在本地生成密钥对 公 私钥 在 git 服务端配置公钥 gitclonessh git ip 地址 port 端口 项目路径 项目名 giteg gitclonessh git 10 10 10 11 2222 markix user service gitHTTP 方式 url 拼接帐号密码方式 gitclonehttp username password git http url eg gitclonehttp ma

    2026年3月26日
    2
  • s一般怎么称呼自己的m_75.9%的职场人,都不知道怎么称呼自己的领导

    s一般怎么称呼自己的m_75.9%的职场人,都不知道怎么称呼自己的领导包邮送!人力资源制度手册纸质版和电子版23套制度覆盖员工入职到离职各环节82份表格制度配套全面规范附赠电子版可复制可编辑原价49元纸质版+电子版包邮送!!!最后30本!扫码回复【100】立抢!来源:猎聘(ID:liepinwang)作者:放学堵他谁能想到「怎么称呼别人」这样看似简单到不能再简单的问题,居然会成为让职场萌新发懵,甚至打怵的究极难题。不要以为这是什么夸张的说…

    2022年6月23日
    88

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号