码迷,mamicode.com
首页 > Web开发 > 详细

[原创作品]web网页中的描点

时间:2015-07-14 13:04:30      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

  因为近来在从事web前端开发的工作,所以写的文章也都是关于web这一块。以后将分享算法和web高级编程的内容,很多公司的web前端不够重视,以为是很low-level,给的待遇也很一般,其实,这都是很狭隘的理解。软件开发是一种很谨慎的工作,每一个环节都需要足够的重视。好了,不扯淡。需要扯淡的,点击左边信息栏加群按钮。

 

  今天分享的内容是网页描点效果,就是在网页滚动到某个位置时,菜单有相应的变化。如图,

 

技术分享

 

就是在滚动时,菜单会有相应的选中效果,点击菜单时,定位到网页内容。

 

菜单代码:

1         <ul class="menu">
2             <li><a href="#about-us">关于我们</a></li>
3             <li><a href="#dynamic">动态</a></li>
4             <li><a href="#case">案例</a></li>
5             <li><a href="#service">服务</a></li>
6             <li class="select"><a href="#index">首页</a></li>
7         </ul>

描点的话就是在网页相应的位置加上id属性,这里是在section标签加的id,就行。重点看js代码:

 

 1    $(window).scroll(function () {
 2 
 3             $(‘section[id]‘).each(function(){
 4                 var id = $(this).attr(‘id‘);
 5                 var offsetTop = document.getElementById(id).getBoundingClientRect().top;
 6                 var offsetBtm = document.getElementById(id).getBoundingClientRect().bottom;
 7 
 8                 if(offsetTop < 0 && offsetBtm > 0) {
 9                     $(‘.menu li a[href]‘).parent().removeClass(‘select‘);
10                     $(‘.menu li a[href=#‘+id+‘]‘).parent().addClass(‘select‘);
11                 }
12             });
13 
14         });

 

  上面代码中getBoundingClientRect()的作用的将选取的dom元素作为矩形,其相对的位置是浏览器窗口的大小。.top是dom元素上边距距离浏览器窗口上边的距离,.bottom是dom元素下边距距离窗口上边距的距离。说白了,就是以浏览器左边,上边为基准。还有.left, .right,这个,博友应该明白什么意思了。当上边距小于等于0,且下边距大于0说明该元素在当前浏览器视图中。改变菜单的选中状态。

  因为a标签在li里面,而选中状态在li class="select",所以点击时应该这样写,

 

1   $(‘.menu li‘).click(function(){
2             window.location = $(this).find(‘a‘).attr(‘href‘);
3             $(this).siblings().removeClass(‘select‘);
4             $(this).addClass(‘select‘);
5         });

 

就是加上window.location,让页面跳转到相应的元素。

好了,这部分不是难点,不做多余解释。原创作品,转载请注明出处:http://zhutty.cnblogs.com

 

[原创作品]web网页中的描点

标签:

原文地址:http://www.cnblogs.com/zhutty/p/4644995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!