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

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

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

菜单代码:

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

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

    $(window).scroll(function () {

             $('section[id]').each(function(){
var id = $(this).attr('id');
var offsetTop = document.getElementById(id).getBoundingClientRect().top;
var offsetBtm = document.getElementById(id).getBoundingClientRect().bottom; if(offsetTop < 0 && offsetBtm > 0) {
$('.menu li a[href]').parent().removeClass('select');
$('.menu li a[href=#'+id+']').parent().addClass('select');
}
}); });

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

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

   $('.menu li').click(function(){
window.location = $(this).find('a').attr('href');
$(this).siblings().removeClass('select');
$(this).addClass('select');
});

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

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

[原创作品]web网页中的锚点的更多相关文章

  1. web网页中使用vlc插件播放相机rtsp流视频

    可参考: 使用vlc播放器做rtsp服务器 使用vlc播放器播放rtsp视频 使用vlc进行二次开发做自己的播放器 vlc功能还是很强大的,有很多的现成的二次开发接口,不需配置太多即可轻松做客户端播放 ...

  2. Web网页中动态数据区域的识别与抽取 Dynamical Data Regions Identification and Extraction in Web Pages

    Web网页中动态数据区域的识别与抽取 Dynamical Data Regions Identification and Extraction in Web Pages Web网页中动态数据区域的识别 ...

  3. C#开发BIMFACE系列50 Web网页中使用jQuery加载模型与图纸

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列49 Web网页集成BIMFACE应用的技术方案>中介绍了目前市场主流 ...

  4. [原创作品] web项目构建(一)

    今天开始,将推出web项目构建教程,与<javascript精髓整理篇>一并更新.敬请关注. 这篇作为这一系列开头,主要讲述web项目的构建技术大全.在众多人看来,web前端开发无非就是写 ...

  5. C#开发BIMFACE系列49 Web网页中加载模型与图纸的技术方案

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在BIMFACE二次系列博客中详细介绍了服务器端API的调用方式,如下列表 C#开发BIMFACE系列1   BIMFAC ...

  6. Web网页中内嵌Activex的Activex插件开发 .

    转载自: http://blog.csdn.net/tttyd/article/details/5258096 源代码下载 http://files.cnblogs.com/tttyd/Activex ...

  7. 使用千位分隔符(逗号)表示web网页中的大数字

    做手机端页面我们常常遇到数字,而在Safari浏览器下这些数字会默认显示电话号码,于是我们就用到了补坑的方法加入<meta>标签: <meta name="format-d ...

  8. 请使用千位分隔符(逗号)表示web网页中的大数字

    方法一:使用正则表达式 语法如下: String(Number).replace(/(\d)(?=(\d{3})+$)/g, "$1,"); 举例: String(12345678 ...

  9. 使用you-get下载网页小视频(实际上你可以下载任意你想要的web网页中的内容)

    1. 什么是you-get? You-Get是一个小型的命令行实用程序,用于从Web下载媒体内容(视频,音频,图像),如果没有其他方便的方法可以尝试使用you-get. 2.安装you-get 打开命 ...

随机推荐

  1. FoxOne---一个快速高效的BS框架--(2)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  2. Android 属性动画(一)

    1.概述 Android提供了几种动画类型:View Animation .Drawable Animation .Property Animation .View Animation相当简单,不过只 ...

  3. 关于使用Jsonp做跨域请求

    今天在使用Jsonp做跨域请求的练习时碰上这样一个问题 代码如下 <!DOCTYPE html> <html> <head> <meta charset=&q ...

  4. asp.net动态设置button的Text,Enabled属性,向后台传递参数

    前台代码:根据后台传递过来的参数动态设置 <asp:Button ID="Button1" runat="server" CommandArgument= ...

  5. Android Intent到底能做些什么

    Android Intent到底能做些什么 原文:http://www.toutiao.com/i6348296465147757058/?tt_from=mobile_qq&utm_camp ...

  6. 在MVC中利用uploadify插件实现上传文件的功能

    趁着近段的空闲时间,开发任务不是很重,就一直想把以前在仓促时间里所写的多文件上传功能改一下,在网上找了很多例子,觉得uploadify还可以,就想用它来试试.实现自己想要的功能.根据官网的开发文档,同 ...

  7. 【C#】.NET中设置代理服务器浏览网页的实现--转载

    目前很多种类的浏览器中都有代理服务器的设置,用户可以通过浏览器自定义更换自己的IP,实现在线代理翻(河蟹)墙浏览网页. 而在.NET中,亦可以通过调用API函数InternetSetOption来实现 ...

  8. java基础day7

    1/匿名类对象:创建类的对象是匿名的. 比如说new Circle():就是一个匿名类对象. 匿名类对象只能使用一次. 2/形参:声明方法时,方法小括号内的参数 实参:调用方法是,实际传入的参数的值 ...

  9. hdu5362 Just A String(dp)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Just A String Time Limit: 2000/1000 MS (J ...

  10. php简单的爬虫

    爬虫的原理是分析下载的页面,找出其中的连接,然后再下载这些链接,对链接再进行更深层次的递归,周而复始.在数据存储方面,先存储到redis里面,再有redis 写入到mysql,这样可以减轻mysql写 ...