基本的导航条的制作

基本的导航条的制作1、垂直导航条的制作一想到导航菜单就会想到用 ulli无序列表来制作。因为他的语义非常接近条目性的内容。<ulclass="nav"><li><ahref="#">首  页</a></li><li><ahref="#">关于我

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

1、垂直导航条的制作

一想到导航菜单就会想到用  ul li无序列表来制作。因为他的语义非常接近条目性的内容。

<ul class="nav">
    <li><a href="#">首  页</a></li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">产品展示</a></li>
    <li><a href="#">售后服务</a></li>
    <li><a href="#">联系我们</a></li>
</ul>

给导航条加上css装饰

*{ margin:0; padding:0; font-size:14px; }  //这里做了一个基本的样式清除,并且设置初始的文字大小为14px;
ul{ list-style:none; width:100px; }  //list-style:none;是为了清除条目前的那个圆点   
li{ height:30px; line-height:30px; width:100px; background-color:#f60; margin-bottom:1px; padding-left:10px;} //padding-left:10px是为了让文字向右移动10个像素,但是li的宽度也会增加10个像素,这里推荐用text-indent:10px;文本缩进10个像素
a{text-decoration:none; display:block; height:30px; line-height:30px; width:100px; background-color:#f60; margin-bottom:1px; padding-left:10px;
a:hover{ background-color:#f60; color:#0000;} //这个是鼠标经过的样式

效果如图所示:

基本的导航条的制作

2、水平菜单的制作

垂直菜单只需要将水平菜单中设置为float:left就可。

li{ float:left;}

效果图如图所示:

基本的导航条的制作

3、圆角菜单的制作

通过设置背景,改变外观样式,通过a:hover,可以为菜单增加交互效果

先看一个圆角背景的贴图,图片的宽120px  高60px 分为上下两个部分,上面部分为默认状态,下面黄色部分为鼠标经过的时候的状态。

基本的导航条的制作

最终效果图:

基本的导航条的制作

代码如图:

<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
a{color:#333;text-decoration:none}
.nav{list-style:none; height:30px; border-bottom:10px solid #F60; margin-top:20px; padding-left:50px;} 
.nav li{float:left}
.nav li a{display:block; height:30px;text-align:center; line-height:30px; width:120px; background:url(images/btnBg.png); margin-left:1px;}
.nav li a.on, .nav li a:hover{ background-position:0 -30px; color:#fff;} 
</style>

</head>
<body>

<ul class="nav">
    <li><a class="on" href="#">首  页</a></li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">产品展示</a></li>
    <li><a href="#">售后服务</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>

</body>
</html>
原理:并不是将原来的矩形通过代码变成的圆角矩形,而是借助刚刚那个圆角图片,通过移动图片的位置,让人们在视觉上认为,变成了圆角矩形。 还有

关于background-position:0  -30px;

背景图片宽120px,高60px,但a标签的高度只有30px,所以默认状态下背景图片只显示了上半部分,然后通过background-position来移动背景图片左右不变为0,希望上移一半所以是-30px,所以hour状态实际就变成显示下半部分,所以就变色了~ 所以我们只看到了下面的橙色矩形。

将首页设置为了超链接状态

首页 标签设置了class=“on”,css样式表中.on{  }里边的设置就一直生效,所以移到其他标签上首页也不还原,想要还原要用到js

4、通过js对导航条进行伸缩变换

改变高度的伸缩

效果图:这里只需改变a:hover鼠标经过时候的状态即可

基本的导航条的制作

.on,a:hover{ color:#fff; background-color:#f60; height:40px; margin-top:-10px;} 因为图片的宽度是30px 这里设置的是当鼠标经过的时候高度变为40px 但是如果不加 margin-top:-10px的时候增加的高度是在往下延伸,而不是向上延伸

注意:margin可以取负值,使他沿着相反的方向移动

改变宽度的伸缩

<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
a{color:#333;text-decoration:none}
.nav{list-style:none; height:30px; border-bottom:10px solid #F60; margin-top:20px; padding-left:50px;}
.nav li{float:left}
.nav li a{display:block; height:30px;text-align:center; line-height:30px; width:80px; background:#efefef; margin-left:1px;}
.nav li a.on, .nav li a:hover{background:#F60;color:#fff; }
</style>

<script> window.οnlοad=function(){ var oNav=document.getElementsByTagName('ul')[0]; //将a标签选择出来, var aA=oNav.getElementsByTagName('a'); for(var i=0; i<aA.length; i++){ //遍历每个a标签 aA[i].οnmοuseοver=function(){ //在鼠标经过每个a标签的时候,设置出现的动画事件 if(this.className!="on"){ clearInterval(this.timer); var This=this; //将当前的那个对象取出来 This.time=setInterval(function(){ //然后建立定时器 This.style.width=This.offsetWidth+8+"px"; //当前的宽度,加上变宽的速度 if(This.offsetWidth>=120) //当大于这么多的时候就不在增加 clearInterval(This.time); },30) //30表示每30毫秒运行一下 } } aA[i].οnmοuseοut=function(){ if(this.className!="on"){ clearInterval(this.time); var This=this; this.time=setInterval(function(){ This.style.width=This.offsetWidth-8+"px"; if(This.offsetWidth<=80){ This.style.width='80px'; clearInterval(This.time); } },30) } } } }
</script>


</head>
<body>

<ul class="nav">
    <li><a class="on" href="#">首  页</a></li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">产品展示</a></li>
    <li><a href="#">售后服务</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 中国Web应用程序防火墙(WAF)市场现状研究分析与发展前景预测报告「建议收藏」

    中国Web应用程序防火墙(WAF)市场现状研究分析与发展前景预测报告「建议收藏」本文研究中国市场Web应用程序防火墙(WAF)现状及未来发展趋势,侧重分析在中国市场扮演重要角色的企业,重点呈现这些企业在中国市场的Web应用程序防火墙(WAF)收入、市场份额、市场定位、发展计划、产品及服务等。历史数据为2017至2021年,预测数据为2022至2028年。

    2022年5月5日
    97
  • 如何将pdf转换成word的3种免费方法「建议收藏」

    如何将pdf转换成word的3种免费方法「建议收藏」怎样将PDF转成Word?这是很多网友经常问到的问题,PDF转换成Word利用一些小技巧和工具,你会发现是很容易的,以下的PDF转Word的3种免费方法你一定要看一看。1、“复制/粘贴”大法在寻找如何将PDF转换成Word的“高级”办法之前,不妨先试一下最傻瓜的方法:首先用极速PDF阅读器打开PDF文档,选择文本内容后右击选择“复制选择内容”或直接使用“全选”;接着新建一个Word文档后,直接将内容在Word中粘贴即可。如果文档格式不复杂,这样得到的Word就够用了,当然有些可能排版会比较乱。2、G

    2022年6月1日
    62
  • GB50174-2008电子信息系统机房设计规范_根据电子信息系统机房设计规范

    GB50174-2008电子信息系统机房设计规范_根据电子信息系统机房设计规范GB50174-2008《电子信息系统机房设计规范》 转载于:https://blog.51cto.com/56421/475664

    2022年9月27日
    2
  • MySQL的锁机制_线程安全与锁机制

    MySQL的锁机制_线程安全与锁机制一、锁的作用数据库使用锁是为了支持对共享资源的并发访问,同时保证数据的完整性和一致性。二、锁的类型2.1全局锁全局锁意味着对整个数据库实例加上锁。通常使用的是全局读锁——Flushtableswithreadlock(FTWRL)。使用这个命令,可以使整个库处于只读状态,其他线程的无论使用DML、DDL甚至是事务的提交语句都会无法正常执行。使用场景做全库逻辑备份,对所有的表数据进行锁定,保证数据的一致性。问题但是FTWRL的全局锁方案有比较严重的缺

    2022年9月30日
    3
  • 自定义BeanUtils的populate方法实现「建议收藏」

    自定义BeanUtils的populate方法实现「建议收藏」1.1.1功能分析publicstaticvoidpopulate(Objectbean,Mapmap)//修改任意对象中的属性,为传入Map集合中的键和值思路:1.获取传入对象的字节码对象2.获取map集合中所有的键和值3.调用Class中的getDecl…

    2022年7月26日
    6
  • 关于配置tnsnames来使用PLSQL连接数据库「建议收藏」

    关于配置tnsnames来使用PLSQL连接数据库

    2022年2月1日
    57

发表回复

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

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