Web前端105天-day45-DOM

news/2024/11/29 1:55:54/

DOM01

目录

前言

一、DOM

二、DOM树

三、class

总结


前言

DOM01学习开始


一、DOM

  • DOM: Document  Object  Model
    • 文档 : HTML代码 -- 超文本标记语言
    • 对象 : 网页真正显示的是 HTML 转换出来的 对象类型 -- document
    • 模型 : 固定的规则 -- 代表把 HTML代码 转 JS对象
  • 网页真正展示的过程
  • 学习DOM, 就可以直接操作 元素的本体; 超脱 HTML 的桎梏

二、DOM树

  • 把 HTML 的结构, 用图来展示, 样式类似树根倒着的树 , 称为 DOM树
  • 每个元素称为 树上的一个 节点 -- Node

 

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>dom</title>
</head><body><h1 id="time"></h1><script>console.log(window) // 找到 document 属性// document属性, 就是 HTML 文件被 浏览器解析后 得到的对象类型// 学习DOM 就是学习 如果使用 document 对象setInterval(() => {//获取当前时间var now = new Date().toLocaleTimeString()console.log('now:', now)// document对象, 可以操作页面document.title = now// 快捷方式: 所有 id 属性, 都会被自动转换成全局变量, 可以直接用 但没提示// 不推荐这么使用id, 因为有兼容性问题, 旧版本浏览器不支持const time = document.getElementById('time')// get: 获取// element: 元素// by: 通过// id: 唯一标识// 从 document(整个网页转换出来的对象) 中获取 id是time 的元素console.log(time) // log: 美化后的console.dir(time) // dir: 未美化的对象类型time.innerHTML = now}, 1000);</script>
</body></html>

三、class

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>class 16:16</title><link rel="stylesheet" href="./reset.css"><style>#box {background-color: #f2f5f6;padding: 20px;display: flex;}#box>li {margin-right: 10px;background-color: white;padding: 7px 20px;color: #333;/* 圆角矩形的做法: 尽量大一点 超过高的一半 */border-radius: 100px;border: 1px solid #eee;/* 指针: 手 */cursor: pointer;transition: 0.2s;}#box>li:hover {border-color: #ff5d23;color: #ff5d23;}/* 注意区分:  li:active  伪类选择器, 代表点击时的状态 *//* li.active 代表 <li class="active">   li标签 同时 具有active样式 *//* 联合选择器:  两个选择器挨着写, 代表同时具有两种特性 */#box>li.active {background-color: #ff5d23;border-color: #ff5d23;color: white;}</style>
</head><body><ul id="box"><li class="active">网游竞技</li><li>单机热游</li><li>手游休闲</li><li>娱乐天地</li><li>颜值</li><li>科技文化</li></ul><script>// 目标: 为每个 li 元素, 添加 点击操作的监听const box = document.getElementById('box') // 找到 id=box 的元素console.dir(box) //到后台展开查看, 子元素存放在哪个属性里// children: 孩子们; 存放了所有子元素// 由于 children 的原型不是 Array, 其中没有forEach 方法可用// 用 for..of 遍历for (const li of box.children) {console.log(li)console.dir(li) // 找一找 和 点击有关的属性// 特征: 所有事件都是 on 开头的// DOM事件网站, 到 xin88.top 中查看// onclick : 元素的点击事件// 千万别用箭头函数, 因为其没有 this 关键词, 影响后续代码li.onclick = function () {console.log('this', this)console.dir(this) //找一找 哪个属性 和 class 有关系// 把点击项的 className 改成 激活 class="active"this.className = 'active'}}</script>
</body></html>
/* reset.css 样式重置文件 */
/* 由于不同的浏览器厂商 对同一个标签 会进行不同的美化 */
/* 保证网页在不同的浏览器上, 风格统一, 需要手动统一样式 */
/* 系统的默认美化优先级低 */* {/* 边框盒子/怪异盒子 : 宽度是准确的, 不会被内边距和边框影响 */box-sizing: border-box;
}img {/* 防止图片的幽灵空白节点 */display: block;
}ul,
li {list-style: none;
}body,
ul,
li,
p,
h1,
h2,
h3,
h4,
h5,
h6 {margin: 0;padding: 0;
}
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>class 17:30</title><style>#box>li.lv {color: green;}</style>
</head><body><ul id="box"><li class="lv">亮亮</li><li>铭铭</li><li>泡泡</li><li>凯凯</li><li>浩浩</li></ul><script>// 需求: 找到所有的li, 挨个添加点击事件, 点击后添加 class='lv'const box = document.getElementById('box') // 利用id=box 找到ulconsole.log(box.children) //所有子元素// 通过 for..of 挨个处理子元素for (const li of box.children) {// xin88.top 上有 事件列表 网站// 别用箭头函数, 因为需要 this 指向触发事件的对象li.onclick = function () {console.log('this', this) //指向触发事件的对象// 修改 当前项的 class 值this.className = 'lv'}}</script>
</body></html>
  • 练习
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>练习 </title><style>li {display: inline-block;margin: 4px;border-radius: 4px;padding: 10px 20px;background-color: #eee;}li.win {color: red;background-color: #aaa;}</style>
</head><body><ul id="app"><li class="win">JDG</li><li>SKT1</li><li>DRX</li><li>GEN.G</li></ul>
</body></html>


总结

  • DOM: 文档 对象 模型
    • HTML代码 会被浏览器 解析成 document 对象, 然后再渲染到浏览器上
    • 浏览器中真正展示的是 document 对象, 不是HTML
    • document对象中, 包含了你在HTML中 书写的所有元素
  • 学习DOM 就两个知识点:
    • 如何从 document 对象中, 准确找到 你想操作的元素
      • 通过id查找: document.getElementById
      • 子元素们: children
  • 如何操作找到的元素
    • className: 元素的class属性, 设置样式类
    • onclick : 点击事件, 会在用户点击元素时, 自动触发

http://www.ppmy.cn/news/4019.html

相关文章

过两年 JVM 可能就要被它替代了

今天说一说 GraalVM。 GraalVM 是 Oracle 大力发展和想要推广的新一代 JVM &#xff0c;目前很多框架都已经渐渐支持 GraalVM 了&#xff0c;比如我们在用的 Spring 也已经推出了对 GraalVM 兼容的工具包了。 既然说的这么厉害&#xff0c;那么它到底是何方神圣呢。 GraalVM…

为什么量子力学需要大修? - 易智编译EaseEditing

圣安东尼奥——量子力学是科学的政治两极分化。 选民要么站在一边无休止地争论&#xff0c;要么呆在家里接受政治现状。物理学家要么接受量子力学并进行计算&#xff0c;要么在关于量子力学究竟是如何描述现实的无休止辩论中站队。 史蒂文温伯格(Steven Weinberg)过去对量子力…

Git基本操作

目录创建本地仓库克隆远程仓库错误解决&#xff1a;Git文件操作使用码云问题解决IDEA集成Git1、idea设置git.exe2、创建本地仓库&#xff0c;并初始化4、创建忽略文件&#xff08;.gitignore&#xff09;5、将项目或文件添加到暂存区6、提交项目到本地库创建本地仓库 随意哪个…

[附源码]Nodejs计算机毕业设计基于的校园失物招领平台Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

微软确认配置错误导致65,000多家公司的数据泄露

©网络研究院 微软证实&#xff0c;在安全漏洞导致端点无需任何身份验证即可通过互联网公开访问后&#xff0c;它无意中暴露了与数千名客户相关的信息。 微软在警报中表示&#xff1a; “这种错误配置可能导致未经身份验证访问与微软和潜在客户之间的交互相对应的一些业务…

登录处cookie验证逻辑漏洞——以熊海CMS为例

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是登录处cookie验证逻辑漏洞。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未…

cad2010怎么隐藏标注尺寸,cad2007怎么隐藏标注尺寸

1、CAD2007怎么隐藏所有的标注尺寸? 1、在"查看器"菜单面板中隐藏的工具有"线宽"、"测量"、"文本"三种工具,可用于隐藏或显示CAD图中的线条宽度、测量尺寸和文本内容。 2、点击选择"测量"工具,将尺寸内容的CAD图隐藏起来。…

4.9 GHz异帧干扰问题研究

【摘 要】相对2.6 GHz频段,4.9 GHz频段可以通过灵活的帧结构配置满足上行大带宽的行业应用需求,但异帧结构组网可能导致基站和终端之间存在交叉时隙干扰,因此研究4.9 GHz的异帧干扰问题是非常必要的。基于3D-UMa传播模型,研究了4.9 GHz频段1D:3U:1S和5D:3U:2S帧结构配置下…