概述 本文讲述如何在前端实现城市首字母导航的效果。...效果 实现 1、数据格式 2、实现代码 var map, pyList; function init() { var wms = new ol.layer.Image({...} } } }) } //汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell //函数使用,本表收录的字符的...arrResult); } function checkCh(ch) { var uni = ch.charCodeAt(0); //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数...19968) return ch; //dealWithOthers(ch); //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母
分享一个用原生JS实现的特效导航条,效果如下: 实现代码如下: 原生JS实现特效导航条
实现效果 制作过程 首先页面分为两个div,一个导航一个内容。其中内容中需要一个按钮用来控制折叠。...cont的左边距实现cont盖住nav的视觉效果。...但在代码中,并不能真的用for循环来做,那样在移动过程中js就会一直卡在循环中而不能执行其他代码,所以这里可以使用setInterval函数来做,它会每隔一段时间调用一次某个方法,格式为setInterval...为了使移动更平滑,每次调用时只移动到目标位置之间的距离的10%.实现折叠的函数代码如下: /*关闭/打开导航*/ function closeNav(nav,body,navTargetWidth){...当点击按钮后,判断当前导航栏是收缩还是展开状态,如果是收缩状态就将导航栏的宽和内容块的左外边距逐渐增长为展开时的值,反之同理。而判断是通过一个变量来标识导航栏状态实现。
如果想将导航栏下滑悬浮透明,请参照如下方式: 给 header盒子(整个导航的盒子)添加 id="headerTop" 并添加以下css样式: #headerTop{ /*使导航栏固定在顶部*/...headerTop.sticky{ background-color: rgb(247, 247, 247, 0.9); border-bottom: 1px solid #e2e8f0; } 重要:添加JS...效果实现滑动检测: // 使顶部导航栏下滑显示,上滑透明 // 添加滚动事件 window.addEventListener('scroll', function...() { //获取元素 var header = document.querySelector("header"); //querySelector() 方法返回文档中匹配指定...CSS 选择器的一个元素。
首先声明:由于backgroundColor的值采用的是RGBA,IE8及以下不支持,所以此效果不支持IE8及以下的浏览器 此效果采用的RGBA做的透明渐变,所以CSS样式中的backgroundColor...的值必须是RGBA css代码 body,p,h1{margin: 0;} .module-layer{ width: 100%; position: fixed; top: 0... JS...') + 1,color.length - 1); //对A判断,如果最终值小于0.9,直接设置为1 if(colorA < 0.9){colorA = 1;} //设置背景色的A...浏览器; 550是滚动条到达位置的最终透明度,此处根据需要自定义; CSS终背景颜色的RGBA的A是最终透明度 demo效果
给大家分享一个用原生JS实现的比较实用的网页导航条特效,当页面滚动时,导航条会发生变化,效果如下: ? 以下是代码实现,欢迎大家复制粘贴和收藏。 原生JS...实现网页导航条特效 * { margin: 0; padding: 0;...header.classList.toggle('sticky', window.scrollY > 0) }) 以下是代码中所引用的图片
前几天有个同学问说他有个 cms 没有 if 判断标签,php 还不会写,我就给他写了个能用的 jq,原理就是通过判断地址栏的链接和代码里导航部分的链接一致的话就高亮,分享出来给大家参考。...js_Current.zip js_Current <...replace if(String(a).indexOf(b)>0){//获得当前li下a的href值,并进行替换 $(this).closest("li").addClass("active");
constructor() { this.head=null;//创建头节点(但是还没有指向) this.tail=null;//创建尾节点(但是还没有指向) } append(value)//指向的核心是要有值是吧...const newNode={value:value,next:null};//创建一个新节点 if(this.tail) { this.tail.next=newNode;//因为是末尾添加的,...所以得 //先解决指向的问题,就是原来的最后的节点(this.tail=null)指向了新节点. } this.tail=newNode;//然后是解决谁都尾的问题了.所以得this.tail
本文是基于决策树的需求做的前期demo实现,所以以二叉树为实现目标。基本术语如下: 二叉树 1、二叉树中的节点最多只能有两个子节点,一左一右。...因此不怒在度大于2的节点 2、左右子节点的顺序不能颠倒 image.png <button class="btn" onClick...} var leftAngle = angle + baseAngle; var rightAngle = baseAngle - angle; //根据传来的角度...,算出左枝和右枝需要偏移的量 var LdisX = k * parentLength * Math.round(Math.cos(leftAngle / 180 * Math.PI) *...ctx.strokeStyle = 'black'; } ctx.lineWidth = lineWidth; ctx.stroke(); //树枝下个分支点的角度
function once(fn) { let flag = false; let result = null; return func...
js本来有replace方法,请看w3school的说明: replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。...注意重点: 如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。...---- js中是没有replaceAll方法的,那么如何实现替换所有匹配的字符串呢,即在js中实现replaceAll方法: 1....使用具有全局标志g的正则表达式 var str = "dogdogdog"; var str2 = str.replace(/dog/g,"cat"); console.log(str2); 实现替换全部匹配字符串...使用先split,再join的方法 评论区@默默之分享的这个方法太赞了,拉到正文里以免有人不看评论,感谢@默默之分享。
head> <script type="text/javascript" src="math.<em>js</em>...//乘法 var m3=accMul(1.22,1.22); //除法 var m4=accDiv(1.22,1.22); //math.<em>js</em>...文件 /** ** 加法函数,用来得到精确<em>的</em>加法结果 ** 说明:javascript<em>的</em>加法结果会有误差,在两个浮点数相加<em>的</em>时候会比较明显。...<em>的</em>乘法结果会有误差,在两个浮点数相乘<em>的</em>时候会比较明显。...", "")) / Math.pow(10, m); } /** ** 除法函数,用来得到精确的除法结果 ** 说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。
由于不想多引入一个 jquery,百度了一个原生 js 实现 ajax 的方法(超简单),挺不错的,现在就分享给大家,也给大家做个参考。...首先新建一个 js 文件: function ajax(){ var ajaxData = { type:arguments[0].type || "GET", url:arguments...convertResult.length-1) return convertResult; }else{ return data; } } 使用格式跟 jquery 的...dataType:"json", data:{"val1":"abc","val2":123,"val3":"456"}, beforeSend:function(){ //some js
为了seo优化,导航栏最好标签语义化。 最符合语义的莫过于ul,li。在采用多级标签时,可采用控制二级标签ul位置的方式来进行显隐。...效果如下: http://jsfiddle.net/tcyangli/mb5yL4uk/ 具体的html代码: .dropdown,ul{margin: 0;padding: 0;list-style
js中replaceAll方法的实现 说明 1、replaceAll()可以一次性替换所有匹配。同replace()一样,该方法接收两个参数。...第一个参数为RegExp对象或一个字符串(要替换的字符),第二个参数可以是一个字符串(替换文本)或函数,返回一个执行替换操作后的字符串。...2、js中没有replaceall方法,replaceall()方法都是自己封装的。...中replaceAll方法的实现,希望对大家有所帮助。...更多js学习指路:js教程 推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。 收藏 | 0点赞 | 0打赏
文章目录 一、基本代码 二、实现继承的方法: 1.原型链继承 2.构造继承: 3.实例继承 4.拷贝继承: 5.组合继承: 6.寄生组合继承: 7.class – extends – – ES6 一...); } ---- 二、实现继承的方法: 1.原型链继承 //核心:将父类的实例作为子类的原型 function Dog() { } Dog.prototype = new Animal()...,也是父类的实例 父类新增原型方法/原型属性,子类都能访问的到 简单 缺点 要想为子类新增属性和方法,必须要在new Animal()这样的语句之后执行,不能放到构造器中 无法实现继承多个 来自原型对象的所有属性被所有实例共享...(call多个父类对象) 缺点: 实例并不是父类的实例,只是子类的实例 只能继承父类的实例属性和方法,不能继承原型属性/方法 无法实现函数复用,每个子类都有父类实例函数的副本,影响性能 ---- 3.实例继承...) 无法获取父类不可枚举的方法(for in不能访问到的) ---- 5.组合继承: //核心:通过调用父类构造,继承父类的属性并保留传参的优点,然后通过将父类实例作为子类原型,实现函数复用 function
reduce() ① 介绍: 该方法对数组中的每个元素 按序执行 一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。...在第一次调用时,如果指定了 initialValue 则为 0,否则为 1 array : 调用的数组本身 reduce使用的时候必须要有返回值,作为下次迭代的参数传入.后面实现源码的时候就会知道了...这里使用到数组的另外一个api includes() includes()方法是用于判断一个数组或字符串是否包含指定的值,并返回一个布尔值。该方法可以用于数组和字符串。 // 5....(cost).reduce((temp, item) => { return temp + item }) console.log(sum1); // 870 ④ 实现一个reduce方法 //...实现更多的需求
要实现点击“打印”按钮以后就将页面打印出来JS中一般有两种方法。...1.用Object实现打印 添加对象 添加如下JS函数: function print() { ...自带函数打印 打印 其实第一种方法也是第二种方法的复杂实现方法,但是第一种方法提供了更多的预览,修改打印设置等功能。...推荐使用第二种方法,出于安全的考虑,有些浏览器(比如遨游)会禁用一些Object,所以在遨游中第一种方法会报权限不足的JS错误。
1、使用递归(循环)的方式实现深拷贝 //使用递归的方式实现数组、对象的深拷贝 function deepClone1(obj) { //判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝...,对象的话进行对象拷贝 //进行深拷贝的不能为空,并且是对象或者是 if (obj && typeof obj === "object") { var objClone = Array.isArray...objClone[key] = obj[key]; } } } return objClone; } return obj; } 2、lodash函数库实现深拷贝...lodash很热门的函数库,提供了 lodash.cloneDeep()实现深拷贝 3、通过 JSON 对象实现深拷贝 //通过js的内置对象JSON来进行数组对象的深拷贝 function deepClone2...,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。
方法五(推荐使用): 组合继承的优化1(寄生组合式继承) 这种方式的高效率体现它只调用了一次 Parent 构造函数,并且因此避免了在 Child.prototype 上面创建不必要的、多余的属性。...等价于 var F = function () {}; F.prototype = Parent.prototype; Child.prototype = new F(); Object.create的底层实现...this.salary = salary } // 父类的方法重写 showName () { console.log('调用子类的构造方法')...// super是指向父类的prototype对象,即Person.prototype, // 父类的方法是定义在父类的原型中,而属性是定义在父类对象上的,所以需要把属性定义在原型上。...不过这里加了一个Object.setPrototypeOf(subClass, superClass),是用来继承父类的静态方法。这也是原来的继承方式疏忽掉的地方。
领取专属 10元无门槛券
手把手带您无忧上云