JavaScript高级编程--元素样式操作和事件

JavaScript之DOM(一)(获取元素事件基础、操作元素 H5规定自定义属性data-开头做为属性名并且赋值。比如或者使用 JS 设置**《350页前端校招面试题精编解析大全》**内容大纲主要包括HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】H5规定自定义属性data-开头做为属性名并且赋值。比如或者使用 JS 设置**《350页前端校招面试题精编解析大全》**内容大纲主要包括。 阅读详情

元素样式操作

在前面学习了如何获取元素之后,我们就能操作元素的样式了

 <style>
        .box {
            width: 200px;
            height: 200px;
            background-color:yello ;
        }
    </style>

<div class="box"></div>
let box = document.querySelector(".box")
box.style.backgroundColor="blue"

 不过,需要注意一下,像table的cellspacing,cellpadding等是属性,而不是样式

事件

事件,就是函数在某种状态下被调用.JS捕捉到的发生在网页上的行为,官方称为事件句柄,是交互体验的核心功能

事件的三要素:1 事件源2 事件类型3 事件处理程序

事件类型

鼠标事件

1、click、 mousedown、mousemove、mouseup、dblclick、 contextmenu、mouseover、mouseout、mouseenter(html5标准)、mouseleave(html5标准)

a) mousedown-->mouseup-->click
b) mousedown是鼠标按下一次就只触发一次;
c) mousemove与 mousedown无关,相互独立;
d) 补充:移动端没有 mousedown事件,对应的是 touchstart--touchmove--touchend

2、DOM3标准规定:click事件只能监听左键,mousedown和 mouseup来判断鼠标键,event.button来区分鼠标的按键,0/1/2

键盘事件

1、keydown、keyup、keypress

a) keydown-->keypress-->keyup
b) keydown在按键按下之后会一直不断被触发

2、keydown和 keypress的区别

a) keydown可以响应任意按键(除了Fn键),keypress只可以响应字符类键盘按键(event.charCode)
b)keypress返回 ASCII码,可以转换成相应字符(String.fromCharCode(event.charCode),区分大小写)

keydown常用于绑定操作类事件处理,keypress常用于绑定字符类事件处理

输入框操作事件

1、input、focus、blur、change

a) input监听 input框在聚焦状态下的文本变化,例:百度搜索
b) change监听 input框在失焦后的文本变化(与前一次失焦状态的文本对比变化)
c) focus和blur只在聚焦和失焦的一刻触发一次

其他事件

1、scrollscroll:常用于绑定在window对象上,滚动鼠标时触发window.οnscrοll=func

//wheel 它是鼠标的

2、loadload:等待网页资源下载完毕再执行

img.onload 图片节点加载完毕不会调用 要资源加载完毕就会调用

window.onload:等待页面所有资源下载完成才执行,包括图片资源的下载,所以它是最慢的​ 网页加载顺序:url-->下载页面-->domTree,cssTree并行-->渲染树renderTree-->绘制页面-->继续下载图片资源,下载完毕再放到页面上去onloaddomTree:domTree的形成,是先把元素翻译成的节点对象挂到 domTree上去,再把属性 img_src放到渲染树上去

事件绑定

1.行内绑定方式在标签行内 的事件值上写上标志"javaScript:后跟js代码"

<a href="javaScript:void(0)">点我</a>
<button onclick="javaScript:alert(666)">点我</button>

 2.元素属性绑定方式

ele.onxxx=function(event){}
//兼容性很好,但是一个元素的同一个时间上只能绑定一个处理程序

 3.同元素多处理程序绑定方式1

obj.addEventListener(type,fn,false)
//IE9以下不兼容,可以为一个事件绑定多个处理程序
//第三个参数表示是否捕获阶段触发,跟冒泡没关系(笔试陷阱题)

事件解绑

既然能绑定事件,当然也能解除绑定

1、ele.οnclick=false/''/null;

2、ele.removeEventListener(type,fn,false);

2中fn若绑定的是匿名函数,则永远无法解除 (可以用类似自调用函数的解决方法解决)

var dom=document.getElementById("content"),clickt=0;
dom.addEventListener("click",function(e){
clickt++;
alert('你摸了我'+clickt+'下了。最多摸2下哦');
if(clickt>=2){
dom.removeEventListener(e.type,arguments.callee,false);
console.log(this);
}
});

事件响应链

 

1.事件的三个阶段:先捕获,后目标,再冒泡,只能有一个阶段触发程序执行,比如捕获阶段触发了到了冒泡阶段就不再触发

事件经过所有元素都没有被处理,这个事件消失

事件传递的过程 只跟文档树的结构有关系 跟界面显示的层叠效果没有任何关系

事件冒泡:结构上(非视觉上)嵌套关系的元素,会存在事件冒泡的功能,即同一事件,自子元素冒泡向父元素。(自底向上)

事件捕获:结构上(非视觉上)嵌套关系的元素,会存在事件捕获的功能,即同一事件,自父元素捕获至子元素(事件源元素)。(自顶向下)

2.默认在冒泡的时候执行事件:onclick/attach和 addEventListener传false的时候

3.addEventListener绑定事件,如果把第三个参数设置为true,则在捕捉的时候执行事件

3.整个事件处理过程,会有个event事件对象在整个事件过程传播(W3C标准,ie8及其以下没有)

4.ie8以下不支持addEventListener

5.focus,blur,change,submit,reset,select等事件不冒泡

阻止冒泡和阻止系统默认事件

阻止冒泡

阻止事件冒泡:W3C标准 event.stopPropagation();但不支持 ie9以下版本

stopImmediatePropagation()支持stopPropagation的浏览器中也可以用stopImmediatePropagation()方法,这个不仅会阻止事件向祖元素的冒泡,也会阻止同一个节点上同一事件的其他的事件处理程序(优先级比它低的,同元素同事件多处理程序时)

        btn.addEventListener("click", (e) => {
            console.log("btn 被点击了", "=============")
            // e.stopPropagation()//阻止事件冒泡
            // e.stopImmediatePropagation()//不仅阻止事件冒泡 还阻止其他监听器的运行
        })
        btn.addEventListener("click", (e) => {
            console.log("btn 被点击了", "/////////////")
        })

阻止系统默认事件

官网中的某些元素自带事件,如果我们再给他绑定一个这个事件,会先执行我们的监听器,再执行系统的功能

event.preventDefault();  能够阻止系统默认事件

页面渲染

 

1.页面呈现过程不同的浏览器略微会有些不同。但基本上都是类似的

①.浏览器把html代码解析成1个Dom树,html中的每个tag都是Dom树中的1个节点,根节点就是我们常用的document对象。dom树就是html结构,里面包含了所有的html tag,包括用JS添加的元素。

②浏览器把所有样式(主要包括css和浏览器自带的样式设置)解析成样式结构体,在解析的过程中会去掉浏览器不能识别的样式。

③dom tree和样式结构体结合后构建呈现树(render tree),render tree有点类似于dom tree,但有区别,render tree能识别样式,render tree中每个node都有自己的style,而且render tree不包含隐藏的节点(比如display:none的节点,还有head节点),因为这些节点不会用于呈现,而且不会影响呈现的,所以就不会包含到render tree中。但是visibility:hidden隐藏的元素还是会包含到render tree中的,因为visibility:hidden 会影响布局,会占有位置。

④一旦render tree构建完毕后,浏览器就根据render tree来绘制页面。

2.回流与重绘

① 当render tree中因为元素的数量,尺寸,布局,隐藏等改变而需要重新构建。这就称为回流或者回档(其实我觉得叫重新布局更简单明了些)。每个页面至少需要一次回流,就是在页面第一次加载的时候。

②当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。

③(面试,选择题,问答题就答上面)从上面可以看出,回流必将引起重绘,而重绘不一定会引起回流。

3.常见的回流和重绘操作任何对render tree中元素的操作都会引起回流或者重绘

①添加、删除元素(回流+重绘)

② 隐藏元素,display:none(回流+重绘),visibility:hidden(只重绘,不回流)

③ 移动元素,比如改变top,left(jquery的animate方法就是,改变top,left不一定会影响回流),或者移动元素到另外1个父元素中。(重绘+回流)

④ 对style的操作(对不同的属性操作,影响不一样)

⑤ 还有一种是用户的操作,比如改变浏览器大小,改变浏览器的字体大小等(回流+重绘)

④重绘与回流操作的注意点:重绘与回流操作的次数越多,计算机的性能消耗越大,进行dom操作的时候就要考虑

MySQL常见面试题汇总(建议收藏!!!) 目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)Innodb为什么要用自增id作为主键?(5)Hash 索引 B+ 树索引有什么区别或者说优劣呢?(6)什么是聚簇索引(6)非聚簇索引一定会回表查询吗?(6)聚簇索引非聚簇索引的区别(6)MyISAMInnoDB实现B+树索引方式的区别是什么?(6)MySQL中有四种索引类型,可以简单说说吗?(6)覆盖索引是什么?(6)联合索引是什么?为什么需要注意联合索引中的顺序?(6)创建的索引有没有被使用到?或者说怎 阅读详情

相关推荐

ArcGIS中如何计算多个点到特定线的最短距离

现有一个点图层一个面图层,怎么来计算这些点到这个面图层,两个面的公共边的最短直线距离呢? 1.首先得将两个图层都转为 投影坐标系 打开工具箱-数据管理工具-要素-面转线 ​ ​ 2.将面图层设为输入要素 注意要将“识别存储面邻域信息”勾选 ​ 3.面转线成功后 打开线属性表,线图层拥有了 LEFT_FIDRIGHT_FID两个字段 ​ 4.按属性选择,表达式中输入 “LEFT_FID”<>-1 即可选出两个面的公共边 ​再将选...

GIS蒲公英的博客 6691

js元素样式设置方式

对以下代码用js设置样式有几种方法

qq_45907365的博客 855

RPGMZ:RPG Maker MZ插件列表

RPGMZ●RPG Maker MZ插件列表该存储库管理RPG Maker MZ的插件。有关如何使用插件的详细信息,请参阅每个插件的帮助。●执照根据MIT许可的条款,所有插件都可以作为开放源代码使用。●作者Unagi Otoro官方网站: ://unagiootoro.f5.si/ 推特: :

通过 JS 添加样式

通过 JS 添加样式

HTML_Z的博客 1万+

JavaScript详解十二 ——事件概述、操作元素

读:innerText,innerHTML可以获取元素内面的内容,innerText去除空格、换行标签,innerHTML可以获取到元素里面的标签,同时保留空格换行。JS的DOM操作可以改变网页内容、结构样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等。(2)、JS修改style样式操作,产生的是行内样式,css权重比较高。网页中每个元素都可以产生某些可以触发JS的事件,例如点击事件。(1)、如果样式修改较多,可以采取操作类名的方式更改元素样式。的属性,例如id,href,src等)

奋斗的小前端 941

JavaScript 元素样式属性操作全讲解

文章围绕JavaScript元素样式与属性操作展开,介绍了样式属性修改的行内类名两种方式。讲述事件函数里`this`指向事件源,说明了属性的获取、设置与移除方法,还介绍H5新增自定义属性规范、常见及表单元素属性,以及`innerText``innerHTML`的用法 。

奋斗的小前端 1317

前端入门一之DOM、获取元素、DOM核心、事件高级操作元素事件基础、节点操作

文档对象模型简单理解:触发–响应机制如果有同一组元素,我们想要某一个元素实现某一种样式,需要用到循环的排他思想所有元素全部清空样式(干掉他人)给当前元素设置样式(留下我自己)注意顺序不能颠倒,首先干掉其他人,在设置自己。

羊小猪~~的博客 1871

JavaScript事件概述与操作DOM元素

DOM简介、获取元素方式、事件概述、操作元素

ztK63LrD的博客 969

JavaScript事件元素操作

JavaScript的世界里,我们能够创建充满活力的动态页面,这其中事件元素操作扮演着举足轻重的角色。

奋斗的小前端 707

javaScript操作元素

方式一:element.属性 获取属性值(获取元素自身自带的属性,例如id,href,src等)方式二:element.getAttribute('属性') 主要获取自定义的属性,我们程序员自己家的属性,也可以获取元素自带属性。

qq_74813060的博客 1195

js操作元素样式元素内容元素属性的方法

一、JS操作元素内容及元素属性 1 操作元素内容 简介: 元素内容指开始标签与结束标签之间的内容,单标签没有元素内容,表单标签除外。 1.1操作闭合标签内容 1.闭合标签的内容需要设置或修改,使用闭合标签的innerHTML属性。 语法: 设置:标签.innerHTML = “内容”; 获取:var text = 标签.innerHTML; var a= document.getElementById("text"); //1.设置内容。 a.innerHTML = "内容"; //2.innerHTM

weixin_50613702的博客 3385

JavaScript之DOM操作获取元素事件操作元素、节点操作

什么是 DOM? 文档对象模型(Document Object Model,简称 DOM),是 W3C 组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构样式 DOM 树 文档:一个页面就是一个文档,DOM 中使用 document 表示 元素:页面中的所有标签都是元素,DOM 中使用 element 表示 节点:网页中的所有内容都是节点(标签、属性、文本、注释等),DOM 中使用 node.

weixin_53155105的博客 2942

JavaScript操作元素,改变页面内容样式

return ‘今天是:’ + year + ‘年’ + month + ‘月’ + dates + '日 '+ arr[day];// 2、可以不用注册事件就显示事件1.2、innerTextinnerHtml的区别我是文字1231.3、操作元素 修改元素属性刘德华张学友1.4、分时显示时间案例亲,上午好,好好写代码1.4、表单的属性操作按钮1.5、仿京东隐藏显示密码操作1.6、样式属性操作1.7、显示隐藏二维码重点:修改display:none。

2401_83641491的博客 1021

JavaScript操作元素

JS使我们有能力创建动态页面,而事件是可以被JS侦测的行为简单理解:触发----响应机制网页中每个元素都可以产生某些可以触发JS的事件,例如点击事件事件是由三部分组成 事件事件类型 事件处理程序 称为事件三要素事件被触发的对象 谁被触发事件类型:如何触发,什么事件 例如鼠标点击,鼠标经过,键盘按下等通过函数赋值的方式完成获取事件源注册事件(绑定事件添加事件处理程序(采取函数赋值形式)//第一步:获取按钮对象//第二步:绑定一个单击事件//第三步:添加事件处理程序。

weixin_58562766的博客 2218

JavaScript进阶(事件+获取元素+操作元素

声明好class,修改div的className,通过在function函数当中对类名进行修改this.className='类名'。=.我们可以通过修改元素的className更改元素样式,适用于样式较多或功能较为复杂,className会覆盖原本的类名。如果想要保留原来的类名,可以通过多类名选择器,即this.className='原本名字 空格 新的名字'来保留原来的类名。

weixin_51704612的博客 1341

JS操作元素样式

通过js修改元素样式:   语法:元素.style.样式名=样式值; 如果css样式名中含有-,这种名称在js中是不合法的,比如:background-color需要将这种样式名修改为驼峰命名法:去除--后面第一个单词首字母大写,该属性名要改为backgroundColor。   通过style属性设置的样式都是内联样式,而内联样式有较高的优先级,所以通过js修改的样式往往会立即执行。   但是:如果在样式添加了!important,此时改样式具有最高的优先级,即使通过js也无法覆盖改样式,此时js修

weixin_51235620的博客 4937

javaScript14操作元素

方式一:element.属性 获取属性值(获取元素自身自带的属性,例如id,href,src等)方式二:element.getAttribute('属性') 主要获取自定义的属性,我们程序员自己家的属性,也可以获取元素自带属性。

2301_77187479的博客 1246

lesson68:JavaScript 操作 HTML 元素、属性与样式全指南

详细介绍了在现代前端开发中,如何使用JavaScript操作DOM(文档对象模型)来实现动态网页。文章分为六个部分: HTML元素操作:介绍了如何通过不同方法选择DOM节点,以及如何创建、插入、删除替换元素。 属性操作:讲解了如何操作HTML元素的标准属性自定义数据属性(Data Attributes)。 样式操作:讨论了如何通过内联样式样式操作元素的CSS样式,以及如何获取元素的计算样式事件驱动的DOM操作实践:通过待办事项列表的例子,展示了如何结合事件处理DOM操作。 性能优化策略:提供了

2402_82363599的博客 1495
上一篇: JavaScript高级编程--元素获取、视口相关、元素几何尺寸和位置
下一篇: TypeScript--基础类型,初识接口
retager
博客等级 码龄5年 0粉丝 29原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值