当前位置: 首页 > news >正文

制作和维系一个网站的费用游戏代理平台免费

制作和维系一个网站的费用,游戏代理平台免费,移动端网站制作模板,做网站seo其实滚动监听使用的情况还是很多的#xff0c;比如导航居于右侧#xff0c;当主题内容滚动某一块的时候#xff0c;右侧导航对应的要高亮。 实现功能 1、当滚动区域内设置的hashkey距离顶点到有效位置时#xff0c;就关联设置其导航上的指定项 2、导航必须是 .nav l…其实滚动监听使用的情况还是很多的比如导航居于右侧当主题内容滚动某一块的时候右侧导航对应的要高亮。 实现功能 1、当滚动区域内设置的hashkey距离顶点到有效位置时就关联设置其导航上的指定项 2、导航必须是 .nav li a 结构并且a上href或data-target要绑定hashkey 3、菜单上必须有.nav样式 4、滚动区域的data-target与导航父级Id一定是父级要一致。 div idselector classnavbar navbar-default ul classnav navbar-nav lia href#oneone/a /li lia href#twotwo/a /li lia href#threethree/a /li /ul /div div data-spyscroll data-target#selector styleheight:100px; overflow:hidden;overflow-y: auto; h4 idone ibe/h4pOne的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br//p h4 idtwo two/h4pOne的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br//p h4 idthree three/h4pOne的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br/One的具体内容br//p /div 下面来看一下实现的具体代码原理当滚动容器内的hashkey位置距离容器顶部只有 offset设置的值就会设置导航中对应的href高亮。 ScrollSpy构造函数 首先新建一个构造函数如下 function ScrollSpy(element, options) { this.$body $(document.body) this.$scrollElement $(element).is(document.body) ? $(window) : $(element) this.options $.extend({}, ScrollSpy.DEFAULTS, options) this.selector (this.options.target || ) .nav li a this.offsets [] this.targets [] this.activeTarget null this.scrollHeight 0 this.$scrollElement.on(scroll.bs.scrollspy, $.proxy(this.process, this)) this.refresh() this.process() } 该构造函数主要干了啥 1.基本设置主要是设置当前滚动元素是设置的body还是具体的某一块元素其次是导航的结构要是.nav li a的结构也就是你的菜单中也要有.nav这个class。 2.监听元素滚动的时候执行process方法。 3.同时初始化的时候也执行了refresh与process方法。 下面讲解一下这几个方法。 getScrolHeight方法 获取滚动容器的内容高度包含被隐藏部分 this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) refresh方法 刷新并存储滚动容器内各hashkey的值 ScrollSpy.prototype.refresh function () { var that this var offsetMethod offset var offsetBase 0 this.offsets [] this.targets [] this.scrollHeight this.getScrollHeight() if (!$.isWindow(this.$scrollElement[0])) { offsetMethod position offsetBase this.$scrollElement.scrollTop() } this.$body .find(this.selector) .map(function () { var $el $(this) var href $el.data(target) || $el.attr(href) var $href /^#./.test(href) $(href) return ($href $href.length $href.is(:visible) [[$href[offsetMethod]().top offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) } 它主要实现了什么呢 1.默认用offset来获取定位值如果滚动区域不是window则用position来获取 if (!$.isWindow(this.$scrollElement[0])) { offsetMethod position offsetBase this.$scrollElement.scrollTop() } 2.根据导航上的hashkey来遍历获取 滚动区域内的hashkey对应的offset值 this.$body .find(this.selector) .map(function () { var $el $(this) var href $el.data(target) || $el.attr(href) var $href /^#./.test(href) $(href) return ($href $href.length $href.is(:visible) [[$href[offsetMethod]().top offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) process方法 滚动条事件触发函数用于计算当前需要高亮那个导航菜单 ScrollSpy.prototype.process function () { var scrollTop this.$scrollElement.scrollTop() this.options.offset var scrollHeight this.getScrollHeight() var maxScroll this.options.offset scrollHeight - this.$scrollElement.height() var offsets this.offsets var targets this.targets var activeTarget this.activeTarget var i if (this.scrollHeight ! scrollHeight) { this.refresh() } if (scrollTop maxScroll) { return activeTarget ! (i targets[targets.length - 1]) this.activate(i) } if (activeTarget scrollTop offsets[0]) { this.activeTarget null return this.clear() } for (i offsets.length; i--;) { activeTarget ! targets[i] scrollTop offsets[i] (offsets[i 1] undefined || scrollTop offsets[i 1]) this.activate(targets[i]) } } 主要作用 1.获取滚动容器已滚动距离 var scrollTop this.$scrollElement.scrollTop() this.options.offset 2.滚动容器可以滚动的最大高度: var maxScroll this.options.offset scrollHeight - this.$scrollElement.height() 3.设置滚动元素逻辑给当前匹配元素添加高亮 for (i offsets.length; i--;) { activeTarget ! targets[i] scrollTop offsets[i] (offsets[i 1] undefined || scrollTop offsets[i 1]) this.activate(targets[i]) } active方法 设置指定的导航菜单高亮 ScrollSpy.prototype.activate function (target) { this.activeTarget target this.clear() var selector this.selector [data-target target ], this.selector [href target ] var active $(selector) .parents(li) .addClass(active) if (active.parent(.dropdown-menu).length) { active active .closest(li.dropdown) .addClass(active) } active.trigger(activate.bs.scrollspy) } clear方法 清除所有高亮菜单 ScrollSpy.prototype.clear function () { $(this.selector) .parentsUntil(this.options.target, .active) .removeClass(active) } 源码 function ($) { use strict; // SCROLLSPY CLASS DEFINITION // function ScrollSpy(element, options) { this.$body $(document.body) this.$scrollElement $(element).is(document.body) ? $(window) : $(element) this.options $.extend({}, ScrollSpy.DEFAULTS, options) this.selector (this.options.target || ) .nav li a this.offsets [] this.targets [] this.activeTarget null this.scrollHeight 0 this.$scrollElement.on(scroll.bs.scrollspy, $.proxy(this.process, this)) this.refresh() this.process() } ScrollSpy.VERSION 3.3.7 ScrollSpy.DEFAULTS { offset: 10 } ScrollSpy.prototype.getScrollHeight function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) } ScrollSpy.prototype.refresh function () { var that this var offsetMethod offset var offsetBase 0 this.offsets [] this.targets [] this.scrollHeight this.getScrollHeight() if (!$.isWindow(this.$scrollElement[0])) { offsetMethod position offsetBase this.$scrollElement.scrollTop() } this.$body .find(this.selector) .map(function () { var $el $(this) var href $el.data(target) || $el.attr(href) var $href /^#./.test(href) $(href) return ($href $href.length $href.is(:visible) [[$href[offsetMethod]().top offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) } ScrollSpy.prototype.process function () { var scrollTop this.$scrollElement.scrollTop() this.options.offset var scrollHeight this.getScrollHeight() var maxScroll this.options.offset scrollHeight - this.$scrollElement.height() var offsets this.offsets var targets this.targets var activeTarget this.activeTarget var i if (this.scrollHeight ! scrollHeight) { this.refresh() } if (scrollTop maxScroll) { return activeTarget ! (i targets[targets.length - 1]) this.activate(i) } if (activeTarget scrollTop offsets[0]) { this.activeTarget null return this.clear() } for (i offsets.length; i--;) { activeTarget ! targets[i] scrollTop offsets[i] (offsets[i 1] undefined || scrollTop offsets[i 1]) this.activate(targets[i]) } } ScrollSpy.prototype.activate function (target) { this.activeTarget target this.clear() var selector this.selector [data-target target ], this.selector [href target ] var active $(selector) .parents(li) .addClass(active) if (active.parent(.dropdown-menu).length) { active active .closest(li.dropdown) .addClass(active) } active.trigger(activate.bs.scrollspy) } ScrollSpy.prototype.clear function () { $(this.selector) .parentsUntil(this.options.target, .active) .removeClass(active) } // SCROLLSPY PLUGIN DEFINITION // function Plugin(option) { return this.each(function () { var $this $(this) var data $this.data(bs.scrollspy) var options typeof option object option if (!data) $this.data(bs.scrollspy, (data new ScrollSpy(this, options))) if (typeof option string) data[option]() }) } var old $.fn.scrollspy $.fn.scrollspy Plugin $.fn.scrollspy.Constructor ScrollSpy // SCROLLSPY NO CONFLICT // $.fn.scrollspy.noConflict function () { $.fn.scrollspy old return this } // SCROLLSPY DATA-API // $(window).on(load.bs.scrollspy.data-api, function () { $([data-spyscroll]).each(function () { var $spy $(this) Plugin.call($spy, $spy.data()) }) }) }(jQuery); 更多专业前端知识请上 【猿2048】www.mk2048.com
http://wiki.neutronadmin.com/news/142843/

相关文章:

  • 网站建设上如何提高市场竞争力福建网站建设价格
  • 做自己网站彩票网站常用代码
  • 石家庄网站快速优化排名wordpress 安装过程
  • 企业网站 免费 php免费工程信息网
  • 网站内容描述编程开源网站
  • 用wordpress搭建网站python学了能干嘛
  • 和印度做外贸的网站免费永久个人服务器
  • 建立企业网站的意义网站搭建者
  • 网络科技有限公司网站广东省消防建设工程申报网站
  • 青岛网站设计微动力网站后台发文章图片链接怎么做
  • 浙江网站建设优化wordpress适合电影网站的模板下载
  • 公司建网站南京seo网站建设费用
  • 资讯门户网站 dede百度商桥网站代码去哪里添加
  • 对网站建设有什么样好的建设意见德州网站建设哪家专业
  • 建设部四库一平台查询网站12366纳税服务平台
  • 响应式网站建设定制网站建设需要学编程么
  • 找外包做网站不给代码金融网站模板素材
  • 永久网站建设apache 写wordpress
  • 网站作为医院形象建设开发网站服务
  • 牛商网网站建设多少钱邢台网
  • 网站建设友链交换html代码特效银河系
  • dw做电影网站青岛seo经理
  • 网站建设大约多少费用个人优秀网页设计
  • 网站的建设与管理自考利用店铺网站做灰色优化
  • 温州建设工程网站济南城市建设集团网站
  • 可视化手机网站开发工具教学设计模板
  • 重庆网站托管wordpress名站
  • 丹阳市住房和城乡建设局网站wordpress 调用文章
  • 张氏万家网站建设青岛网站建设哪个平台好
  • 怎么制作网站教程南昌网站开发公司哪家公司好