js实现标签下划线平移
2016-06-02 08:48
701 查看
一.使用js实现导航行栏,点击时,下划线会跟着鼠标的点击移动。
html代码如下:
默认时,红色横线在1标签处,点击2时,红色标签,会根据移动函数进行移动,如图(2)
![](http://s1.51cto.com/wyfs02/M02/82/3D/wKioL1dPgJHQxs4wAAATvM0gH9Q122.jpg)
![](http://s4.51cto.com/wyfs02/M00/82/3E/wKiom1dPf97Q7mZDAAAP-lXzpgU919.jpg)
二.在此基础上,根据css3来实现横线的过度平滑效果。
html代码如下:
当鼠标没有点击标签时,横线默认是在第一个标签下,如图:
![](http://s1.51cto.com/wyfs02/M00/82/3D/wKioL1dPgmzhj1qkAACwG1pl53I297.jpg)
当点击任何一个标签,下划线和图片就会平滑的过度到点击的那个标签下,如图:
![](http://s5.51cto.com/wyfs02/M01/82/3E/wKiom1dPgbCRuHFwAAC0hRLjs1c994.jpg)
html代码如下:
<header> <div id="nav1"> <div id="id1" class="item">1</div> <div id="id2" class="item">2</div> <div id="id3" class="item">3</div> </div> <div id="line"></div> </header>css代码如下:
*{ margin:0; padding:0; } body{ background: url("./img/wallhaven1.png"); } .item{ width: 100px; height: 30px; margin-bottom: 5px; margin-left: 5px; padding: 5px 10px; background: #B89C9B; text-align: center; line-height: 30px; color:white; border-radius: 10px; } #line{ color:red; width: 4px; height: 40px; background: red; position: absolute; top:0px; padding-right: 1px; }js代码如下:
<script> function avtiveLineTop(n) { document.getElementById('line').style.top = n + 'px'; }; var nav1 = document.getElementById("nav1"); var items = document.getElementsByClassName('item'); nav1.addEventListener("click",handle,false); function handle(event){ var event=event||window.event; var target=event.target||event.srcElement;; switch(target.id){ case "id1": avtiveLineTop(0); break; case "id2": avtiveLineTop(45); break; case "id3": avtiveLineTop(90); break; } } </script>效果图:
默认时,红色横线在1标签处,点击2时,红色标签,会根据移动函数进行移动,如图(2)
![](http://s1.51cto.com/wyfs02/M02/82/3D/wKioL1dPgJHQxs4wAAATvM0gH9Q122.jpg)
![](http://s4.51cto.com/wyfs02/M00/82/3E/wKiom1dPf97Q7mZDAAAP-lXzpgU919.jpg)
二.在此基础上,根据css3来实现横线的过度平滑效果。
html代码如下:
<section> <ul id="nav2"> <li class="item1"><a href="#" id="id11">课程学习</a></li> <li class="item1"><a href="#" id="id21">课程笔记</a></li> <li class="item1"><a href="#" id="id31">课程练习</a></li> <li class="item1"><a href="#" id="id41">课程相关</a></li> <li class="item1"><a href="#" id="id51">课程拓展</a></li> </ul> <div id="line1"></div> </section> <div style="clear:both;"></div> <div id="pic"> <img src="./img/wallhaven3.png" alt="人物"> </div>css代码如下:
.item1{ width: 100px; height: 30px; margin-bottom: 5px; margin-left: 5px; padding: 5px 10px; background: #1E293B; float:left; text-decoration:none; color:white; line-height: 30px; border-radius: 10px; } #line1{ color:red; width: 120px; height: 2px; background: red; position: absolute; top:175px; left:5px; padding-top: 1px; } #nav2{ list-style-type: none; } #nav2 a{ display: block; text-decoration:none; color:white; } #nav2 a:hover{ background-color: #1E291a; color:red; } #pic{ margin-top:80px; margin-left: 10px; } img{ width: 200px; height:200px; border-radius: 15px; } .effect0{ transform: translateX(1px); transition:all 2s; } .effect{ transform: translateX(125px); transition:all 2s; } .effect2{ transform: translateX(250px); transition:all 2s; } .effect3{ transform: translateX(375px); transition:all 2s; } .effect4{ transform: translateX(500px); transition:all 2s; } .piceffect{ transform: translateX(600px) scale(1.5); transition: all 2s; }js代码如下:
var nav2 = document.getElementById('nav2'); var pic = document.getElementById('pic'); nav2.addEventListener("click",move,false); function move(event){ var event=event||window.event; var target=event.target||event.srcElement;; switch(target.id){ case "id11": line1.className = "effect0"; pic.className = "effect0"; break; case "id21": line1.className = "effect"; pic.className = "effect"; break; case "id31": line1.className = "effect2"; pic.className = "effect2"; break; case "id41": line1.className = "effect3"; pic.className = "effect3"; break; case "id51": line1.className = "effect4"; pic.className = "effect4"; break; } } pic.addEventListener("click",showbig,false); function showbig(){ pic.className="piceffect"; }效果图:
当鼠标没有点击标签时,横线默认是在第一个标签下,如图:
![](http://s1.51cto.com/wyfs02/M00/82/3D/wKioL1dPgmzhj1qkAACwG1pl53I297.jpg)
当点击任何一个标签,下划线和图片就会平滑的过度到点击的那个标签下,如图:
![](http://s5.51cto.com/wyfs02/M01/82/3E/wKiom1dPgbCRuHFwAAC0hRLjs1c994.jpg)
相关文章推荐
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- CSS3属性教程与案例分享
- CSS3属性教程与案例分享
- CSS3的calc()使用
- 使用CSS3的appearance属性改变元素的外观
- CSS3美化图片
- CSS3质感分析——表面线性渐变
- 分析选项卡底部内凹圆角制作
- 细说百度图片栏目——图片展示效果
- 8个实用的响应式设计框架
- 20+ Animation Scripts, Libraries and Plugins
- 5个常见可用性错误和解决方案
- js数组实现图片轮播
- 新时代编辑神器:Atom
- Gifski:一个跨平台的高质量 GIF 编码器
- 如何使用CSS3画出一个叮当猫
- 基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
- 模仿动画的放大缩小容器
- js可突破windows弹退效果代码