什么是冒泡? DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。...事件冒泡**(***dubbed bubbling***)**:与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点。...dom标准事件流的触发的先后顺序为:先捕获再冒泡,即当触发dom事件时,会先进行事件捕获,捕获到事件源之后通过事件传播进行事件冒泡。...参数 useCapture 是选填的,填true或者false,用于描述事件是冒泡还是捕获,true表示捕获,默认的false表示冒泡。...") }); div2.addEventListener('click',function(){ console.log("div2--冒泡阶段"
算法简介 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序不符合要求就把它们交换过来。...时间复杂度和空间复杂度 再谈谈冒泡排序的时间复杂度和空间复杂度吧!
一、setTimeout VS. requestAnimationFrame 传统js动画实现一般使用setTimeout/setInterval等定时方式执行一个动画更新操作,但这种方式在使用中存在一些问题...另外,各个显示器的刷新频率不同,也使得一套代码无法自适应不同频率,难以对动画效果最优化。...例如,显示器是10ms,则interval就是10ms;如果是16.7ms,则interval自动是16.7ms 浏览器优化动画绘制 浏览器可以合并requestAnimationFrame的动画操作...、CSS动画、CSS变换等各种动画效果到一次渲染周期中完成。...并且在页面不可见时,可以选择不进行动画渲染的执行(似乎是暂停动画),节约资源、电量。
冒泡排序 ? 冒泡排序算法时间复杂度最坏的情况是,最好的,说明冒泡排序是可以优化的,就看你有没有去发现。 冒泡排序算法的过程是两个元素比较的大小,是典型的交换排序算法。...示例 通过一个示例来理解基本的冒泡排序算法,假设当前我们有一个数组a,里面元素是:5,6,1,7,2,4,3 初始状态 ?...视频动画 http://mpvideo.qpic.cn/0af2latuzq7ficaiameq2aaiaiefrwhknwadjib4bieqqcqebaaa.f10002.mp4?...视频动画 http://mpvideo.qpic.cn/0af2gnhyyeyvycibaaaacaiob4gvtxheoiuej4ghaqfqcaieaaaq.f10002.mp4?
冒泡排序: 冒泡排序是一种简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
停止事件传播 事件对象还提供了一个.stopPropagation()方法,该方法能够全然阻止事件冒泡。
动画 js动画 css动画 Web动画的本质是元素状态改变造成的样式变更,CSS动画和JS动画的区别并不是由语言来决定的,而是由两者的特点和适用场景来判断的。...,JS动画就会显得更加清晰且易维护 js动画 缺点: JavaScript在浏览器的主线程中运行,而主线程中还有其它需要运行的JavaScript脚本、样式计算、布局、绘制任务等,对其干扰导致线程可能出现阻塞...动画效果比css3动画丰富,有些动画效果,比如曲线运动,冲击闪烁,视差滚动效果,只有JavaScript动画才能完成 CSS3有兼容性问题,而JS大多时候没有兼容性问题 css动画 CSS动画通常指使用...CSS动画比JS流畅的前提: JS在执行一些昂贵的任务 同时CSS动画不触发layout或paint 在CSS动画或JS动画触发了paint或layout时,需要main thread进行Layer树的重计算...,这时CSS动画或JS动画都会阻塞后续操作。
// 冒泡排序 var arr = [2, 4, 1, 6, 7, 8, 33, 11,77,88,99,3,100]; function sort(array
实例 当点击id为i3的时,浏览器会依次弹出3 2 1,这就是事件冒泡,此正方形处于叶节点上,对其操作的事件会向上进行冒泡,直到根节点。 JS事件冒泡及阻止 div{...DOCTYPE html> JS事件冒泡及阻止 li{...有时候我们并不希望事件冒泡而去执行上级节点绑定的事件,这时候就需要阻止事件的冒泡,w3c的方法是e.stopPropagation(),IE则是使用 window.event.cancelBubble...注意 不是所有的事件都能冒泡。以下事件不冒泡:blur、focus、load、unload。 事件解决方案方式在不同浏览器,可能是有所区别的,有些不支持捕获型方案,多数浏览器默认冒泡型方案。
相反的,事件冒泡是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。...Jquery的e.stopPropagation会阻止冒泡,意思就是到我为止,我的爹和祖宗的事件就不要触发了。...事件的触发顺序自内向外,这就是事件冒泡。...方法: 阻止事件冒泡 和默认行为。 事件冒泡: ? 阻止默认行为: ?
今天我们来学习最最简单的冒泡排序算法。 冒泡排序的原理 冒泡排序的原理很简单,我们想象一下一个一个的气泡上浮的过程。 假设我们有八个数字 29,10,14,37,20,25,44,15 要进行排序。...我们先用一个动画图来直观的观察一下整个冒泡排序的过程: ? 排序共进行八轮,每一轮都会做两两比较,并将较大的元素右移,就像冒泡一下。 一轮结束之后,八个元素中最大的那个元素44将会移动到最右边。...冒泡排序算法的java实现 我们先看一个最简单的冒泡算法: public class BubbleSort { public void doBubbleSort(int[] array){...冒泡算法的第二次改进 从上面的结果,我们可以看到实际上第5轮排序过后就已经排序完成了。但是我们仍然进行了第6,7次排序。 有没有什么办法可以判断排序是不是已经完成了呢?...冒泡排序的时间复杂度 虽然我们可以在冒泡的时候进行一些性能优化,但是基本上还是要进行嵌套的两次遍历。遍历次数近似的=n*n,所以冒泡排序算法的时间复杂度是O(n²)。 本文的代码地址: ?
JavaScript 动画框架 框架封装 ---- 相信大家在很多门户网站上都可以看到动画的交互效果,通过这些动画生动地体现了我们在网页上的交互效果,现在我们就来学习一下这些动画效果的分解动作吧。...一.简单动画 1.透明度动画 首先一点预备知识,下面是两种浏览器的透明度的属性表示,且都是表示0.3的透明度,1表示不透明。...同样是速度动画的例子里的,现在我们改变一下让他可以实现一个缓存的速度动画,并且速度越来越快。...首先把上面的简单运动框架抽取出来然后加上透明度的变化,放进一个人通用的JS文件里movement.js: function getStyle(obj,attr) { if(obj.currentStyle...JSON的格式: {键:值,键:值} 完善后的运动框架js:movement.js function getStyle(obj,attr) { if(obj.currentStyle){
在一些动画设置中,我们可以用CSS中已有的动画属性方便的设置动画效果,比如说animation动画,transition过渡,它们结合一些2D,3D变换可以达到可观的动画效果,但是涉及到更多更加复杂的动画这个时候我们还要基于...; } 这样一来定时就被解除了. (2)递归函数 既然有了定时器,我们就能基于定时器API来设置动画了。如何设置动画?... (2)DOM初始化 我们定义一个初始化的函数,用这个函数给style属性初始化,或者直接在moveElement函数内部初始化...title> <script src="photo gallery.<em>js</em>
在做页面中,多数情况下都会遇到页面上做动画效果,我们大部分做动画的时候都是使用框架来做(比如jquery),这里我介绍下如何让通过原生的js来实现像框架一样的动画效果!...1、匀速动画效果说明:匀速动画就是动画的效果从开始到结束每次执行的速度都是一致的 匀速动画 html,body{margin:0;padding:0;} div{margin:0;padding:0;...*/ 2、缓冲动画说明:缓冲动画就是动画到结束或这开始的时候,速度是随着动画执行的进度动态变化的 缓冲动画 html,body{margin:0;padding:0;} div{margin:0;padding...:链式动画就是当前动画执行完成后执行下一个动画效果 链式动画 body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,...其实这九种原生js动画效果,都有独特之处,每个源码都可以直接复制运行,希望对大家掌握js动画有所帮助。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
事件机制 ---- 事件触发三个阶段: window往事件触发处传播,遇到注册的捕获事件会触发 传播到事件触发处时触发注册的事件 从事件触发处往window传播,遇到注册的冒泡事件会触发 事件触发一般会按照...|------------------------------------------- 但是有一个特例:如果给body中的子节点同时注册冒泡和捕获事件,事件触发会按照注册的顺序执行。...// 以下会先打印冒泡然后是捕获node.addEventListener( 'click', event => { console.log('冒泡') }, false)node.addEventListener...此时进入冒泡阶段,inner上的时间处理器得到执行 事件命中元素后开始向上冒泡,一路查找是否注册了冒泡阶段的祖先元素上的时间处理器。由于没有找到因此什么也没发生。...我们把时间注册在冒泡阶段(addEventListener的useCapture选项为false) var selector = document.querySelector.bind(document
事件冒泡: 事件冒泡由IE团队提出来的,即事件开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。...IE9,chrome,Firefox,Opera,Safari都支持事件冒泡,并将事件冒泡到window对象。 如下,点击obj3,依次弹出obj3、world、hello。...addEventListener('click', function () { alert('obj3'); })//依次弹出obj3、world、hello 阻止事件冒泡的方法...: 方式一:event.stopPropagation(); 方式二:return false; return false 不仅阻止了事件往上冒泡,而且阻止了事件本身。...event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身。
此案例实现的是侧边栏的滑入与滑出,主要用定时器来实现物体滑动时速度的控制,从而实现滑入滑出效果,下面是效果图: 下面是实现的js代码: window.onload=function()
文章目录 JS动画实现 概述 匀速动画 缓速动画 无缝连续滚动特效 轮播图 轮播图淡入淡出效果 JS动画实现 概述 在CSS3中可以通过transition过渡属性可以实现动画 JS可以利用...CSS3中的transition属性实现元素动画 匀速动画 JS封装匀速动画 开始动画 var btn =..."px"; } }, 30); }; btn.onclick = function() { animation(box, 800, 2000); }; 利用CSS transition属性实现平滑动画效果...开始动画 var btn = document.querySelector("button"); var...function() { box.style.transition = "all 2s linear 0s"; box.style.left = "800px"; }; 缓速动画
js和css动画 使用setTimeout()或者setInterval()使用这两个函数定时调用一段代码。这是其原理。 目的,重复修改内联样式,达到动画的效果 通过不断的修改达到动画的目的。...通过在相同的时间内构造出一帧帧的内容,然后让其在函数的作用下不断的改变css的值,达到动画的效果 下面将会是用js写css动画 js写css动画 下面是一个函数 将e转化为相对定位的元素,使得其可以左右移动...,获取一个格林威治时间 animate(); // 动画开始 // 函数检查消耗时间,并更新e的位置 // 如果动画完成,它将e还原为原始状态 // 否则,将会更新e的位置,安排其自身重新运行...start = (new Date()).getTime(); // 动画开始的时间 animate(); // 动画开始 function animate() { var elapsed...e.classList() 脚本化样式表 开启和关闭样式表 style和link元素的CSSStyleSheet对象定义了一个在js中可以设置和查询的disabled属性。
什么是animate js运动是我们学习js必不可少的研究部分,首先我们要知道js的运动其实仅仅是不断改变元素的某个属性值而已,比如不断改变一个绝对定位div的left值,那么你看到的效果就是这个...我们知道从a这一点到b这一点我们的运动方式有很多, 1.比如匀速运动到这一点 2.比如先快后慢, 3.必须先慢后快等等 animate就是这些运动的一个实现过程,js可以实现animate,运动的过程大多数也被封装在...JQuery库中,下面就是用js来实现animate方法 封装animate 什么是封装:js封装就是将一些常用的函数方法写到一个.js文件里面,用函数的范式,以便于下次调用,或者多次调用。.../* 对el对象css样式中的属性值进行更改,更改的内容在properties里面,properties是一个 属性对象数组,对每一个properties里的每一个对象值进行修改,并且产生由快到慢的动画... <script src="封装animate.<em>js</em>
领取专属 10元无门槛券
手把手带您无忧上云