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

JavaScript青少年简明教程:DOM和CSS简介

JavaScript青少年简明教程:DOM和CSS简介

DOM简介

DOM(Document Object Model)将文档表示为一个树形结构,其中每个节点都是一个对象,每个对象都有其自身的属性和方法。

通过对DOM的操作,开发者可以使用编程语言(如JavaScript)动态地更新页面内容、样式以及处理用户交互,为用户提供丰富的体验。

【DOM元素和HTML文档标签的关系

HTML标签是定义网页内容和结构的标记语言元素,存在于HTML文件中。比如<title>,<a>,<h1>等。它们是静态的,决定了网页最初的内容布局。

而DOM(文档对象模型)元素是HTML标签在浏览器中的对象表示形式。当浏览器解析HTML文档时,会根据标签生成对应的DOM元素,形成一个树状结构。DOM元素是动态的对象模型,可以通过JavaScript等脚本语言来访问和操作。

说明:

HTML标签是编写网页内容和结构的标记。

DOM元素是标签在浏览器内存中的对象表示和数据模型。

DOM元素与HTML标签并不是一一对应的关系,因为一个HTML标签在DOM中可能对应多个节点对象。这是由于浏览器解析HTML时,除了构建对应元素节点外,还会创建其他节点,比如文本节点、属性节点等。

举个例子,对于HTML标签<p id="test">Hello World</p>

在DOM中会存在如下节点:

元素节点 - <p>元素

属性节点 - id="test"的属性节点

文本节点 - Hello World的文本节点

所以一个看似简单的HTML标签,在DOM树中可能会有多个节点来表示它的不同部分,而不是简单的一一对应。

另外,除了HTML解析出的节点,DOM还提供了一些附加的节点对象,比如document对象、window对象等,它们在HTML中没有直接对应的标签。】

下面给出一个通过JavaScript操作DOM的示例:

<html lang="zh">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>DOM操作示例</title>  
</head>  
<body>  <h1 id="greeting">你好,世界!</h1>  <button onclick="changeGreeting()">点击我改变问候语</button>  <script>// 定义一个函数来改变问候语  function changeGreeting() {  // 使用getElementById方法来获取id为"greeting"的元素  let greetingElement = document.getElementById('greeting');  // 修改该元素的内容为新的问候语  greetingElement.textContent = '你好,JavaScript!';  }</script>  </body>  
</html>

在这个示例中,当你点击按钮时,会触发changeGreeting函数。该函数首先使用document.getElementById方法获取页面上id为greeting的元素(即<h1>元素),然后修改该元素的textContent属性来改变其显示的内容。这样,<h1>元素的内容将从“你好,世界!”更改为“你好,JavaScript!”

以下是一些常见的DOM操作介绍:

以下是一些常见的DOM操作介绍:

1. 访问DOM元素

通过ID获取元素

let element = document.getElementById('myElement');

通过类名获取元素

返回一个包含所有匹配元素的HTMLCollection。

let elements = document.getElementsByClassName('myClass');

通过标签名获取元素

返回一个包含所有匹配元素的HTMLCollection。

let elements = document.getElementsByTagName('div');

通过CSS选择器获取元素

返回第一个匹配的元素。

let element = document.querySelector('.myClass');

返回所有匹配的元素,返回的是一个NodeList。

let elements = document.querySelectorAll('.myClass');

2. 修改DOM元素内容和属性

修改元素内容

a)修改元素的文本内容:

element.textContent = '新的文本内容';

例如,操作网页的文档对象模型 (DOM),例如修改元素内容:

<p id="myParagraph">Hello, world!</p>
<script>
document.getElementById("myParagraph").textContent = "Hello, JavaScript!";
</script>

b)修改元素的HTML内容:

element.innerHTML = '<span>新的HTML内容</span>';

修改元素属性

element.setAttribute('src', 'image.png');

获取元素属性

let src = element.getAttribute('src');

删除元素属性

element.removeAttribute('src');

3. 修改元素样式

通过style属性修改内联样式

element.style.color = 'blue';

element.style.fontSize = '16px';

添加或删除类名

element.classList.add('newClass');

element.classList.remove('oldClass');

element.classList.toggle('activeClass');  // 如果类名存在则移除,否则添加

4. 创建和删除元素

创建新元素

let newElement = document.createElement('div');

newElement.textContent = '我是一个新元素';

添加新元素到DOM

let parentElement = document.getElementById('parent');

parentElement.appendChild(newElement);

删除元素

parentElement.removeChild(newElement);

在JavaScript中,操作表单元素是一个常见的任务,它允许你读取用户输入、验证数据、动态地更改表单内容等。下面给出获取表单元素示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Form Example</title>
</head>
<body><form id="myForm"><label for="name">Name:</label><input type="text" id="name" name="name"><br><label for="age">Age:</label><input type="number" id="age" name="age"><br><input type="submit" value="Submit"></form><script>const form = document.getElementById('myForm');form.addEventListener('submit', function(event) {event.preventDefault(); // 防止表单实际提交const name = document.getElementById('name').value;const age = document.getElementById('age').value;alert('Name:'+ name + '    '+ 'Age:'+age);});</script>
</body>
</html>

此例,使用document.getElementById 获取表单元素,然后访问其 value 属性来获取用户输入的数据。

CSS 简介

CSS (Cascading Style Sheets) 是一种样式表语言,用于描述和控制网页中元素的呈现效果,包括布局、字体、颜色、背景等方面的样式。CSS 是网页设计中最重要的技术之一,它可以使网页内容和样式相分离,有利于内容的重复使用和样式的统一管理。

CSS 的主要作用如下:

  1. 布局和排版:通过设置元素的宽高、边距、填充、浮动、定位等属性,可以实现不同的布局和排版方式。
  2. 字体和文本样式:可以设置文本的字体family、大小、颜色、加粗、倾斜、行高、对齐方式等样式。
  3. 背景和边框:可以为元素设置背景颜色、背景图片、背景重复方式,以及边框的样式、颜色、宽度等。
  4. 盒模型:CSS 将网页元素视为矩形盒子,通过设置 margin、padding、border 等属性来控制盒子的样式。
  5. 过渡和动画:CSS3 引入了过渡和动画功能,可以实现元素的平滑过渡和动画效果。

CSS 可以通过多种方式与 HTML 页面关联:内联样式、内部样式表、外部样式表等。在实际开发中,通常推荐使用外部样式表的方式,利于样式的复用和维护。CSS 的语法包括选择器、属性和值,通过不同的选择器可以精准地选中页面中的元素并设置其样式。

CSS 选择器用于“查找”(或选取)要设置样式的 HTML 元素。

要对HTML页面中的元素实现一对一,一对多或者多对一的控制,可用CSS 规则集(rule-set)实现,CSS 规则集也称为css样式定义,CSS 规则集由选择器和声明块组成,CSS语法

CSS规则由选择器和声明块组成:

选择器 { 

    属性: 值; 

}

选择器(selector):用于选择要应用样式的HTML元素。常用选择器:

元素选择器(如 p、div、span 等),选择指定的元素

类选择器(如 .classname),选择指定类的元素,类名以点(.)开头

ID选择器(如 #idname),选择指定ID的元素,ID名以井号(#)开头。

属性选择器(如 [attr=value]),选择指定属性的元素。

伪类选择器(如 :hover、:active 等),选择特定状态的元素。

声明块(declaration block):包含一个或多个声明,每个声明由属性(property)和属性值(value)组成,属性和值之间用冒号分隔,声明之间用分号分隔。

属性 (Property): 要改变的样式特性,如颜色、字体、布局等。

值 (Value): 指定给属性的值,即你希望样式特性具有什么样的表现。

换句话说,声明块指明了样式,选择器指明了 “样式”的作用对象,也就是“样式”作用于网页中的哪些元素。

CSS注释

CSS中的注释以 /* 开头,以 */ 结尾。注释内容不会被浏览器解析。

CSS示例:
/* 选择器 */
body {
  /* 声明块 */
  background-color: lightblue; /* 属性: 值; */
}

h1 {
  color: navy;
  font-size: 24px;
}

p {
  color: green;
}

CSS(层叠样式表)可以通过多种方式应用到HTML文档中,主要有三种:内联样式(Inline Styles)、内部样式表(Internal Stylesheets)和外部样式表(External Stylesheets)。:

1. 行内样式(Inline Styles)

直接在HTML元素的style属性中定义样式。这种方式仅适用于单个元素。但一般不推荐使用,因为它和HTML代码混杂在一起,不易于维护。例如:

<!DOCTYPE html>  
<html>  
<head>  </head>  
<body>  <p style="color: blue; font-size: 20px;">这是一个段落。</p> 
</body>  
</html>

2. 内部样式表(Internal Style Sheet)

在HTML文件的<head>标签内的<style>标签中的定义样式。这种方式在HTML文件内将将样式代码与HTML代码进行了适当分离——写在不同部分。例:

<!DOCTYPE html>  
<html>  
<head>  <style>  p {  color: blue;  font-size: 20px;  }  </style>  
</head>  
<body>  <p>这是一个段落。</p>  
</body>  
</html>

3. 外部样式表(External Stylesheets)

外部样式表是将样式代码写在单独的.css文件中,并通过HTML文件的<link>标签引入。这种方式是最推荐的方式,因为它可以实现样式代码的复用,提高代码的可维护性。

假设创建的css的文件名为styles.css,内容如下:

p {  color: blue;  font-size: 20px;  
}

在HTML文件中引入这个CSS文件:

<!DOCTYPE html>  
<html>  
<head>  <link rel="stylesheet" type="text/css" href="styles.css">  
</head>  
<body>  <p>这是一个段落。</p>  
</body>  
</html>

进一步学习,可参考:

HTML网页文档和DOM结构介绍 https://blog.csdn.net/cnds123/article/details/136901800

BOM和DOM入门 https://blog.csdn.net/cnds123/article/details/109635554

CSS选择器介绍https://blog.csdn.net/cnds123/article/details/125926256

相关文章:

JavaScript青少年简明教程:DOM和CSS简介

JavaScript青少年简明教程&#xff1a;DOM和CSS简介 DOM简介 DOM&#xff08;Document Object Model&#xff09;将文档表示为一个树形结构&#xff0c;其中每个节点都是一个对象&#xff0c;每个对象都有其自身的属性和方法。 通过对DOM的操作&#xff0c;开发者可以使用编…...

架构师知识梳理(一):计算机硬件

目录 计算机硬件组成 CPU CPU的组成 CPU的功能 校验码 奇偶校验 CRC CRC计算案例 指令 指令指行过程 指令系统 指令系统分类 指令流水线技术 流水线技术相关计算公式 存储 计算机存储系统设计 高速缓存Cache 缓存的局部性原理 地址映射 替换算法 关于命中…...

从根儿上学习spring 四 之run方法启动第一段

图1 由上图我们可以看到&#xff0c;我把run方法分成了5个小段&#xff0c;每小段使用红框圈了起来&#xff0c;这一篇我们先开始讲第一段。大家需要关注下行号&#xff0c;我讲的时候可能会使用行号对应具体某行代码。 图1-289-290行&#xff1a; 没啥好说的定义了两个变量&…...

智能闹钟如何判断用户已经醒了?

智能闹钟判断用户是否已经醒来的方式主要依赖于其内置的传感器和算法系统。以下是一些常见的判断方法&#xff1a; 一、传感器监测 体动传感器&#xff1a;智能闹钟通常配备有体动传感器&#xff0c;用于监测用户的身体运动。当用户从睡眠状态转变为清醒状态&#xff0c;并开始…...

【算法】动态规划解决背包问题

应用场景——01背包问题 有一个背包&#xff0c;背包的容量为 4&#xff0c;现有如下物品 要求 1.目标为装入背包的总价值最大&#xff0c;并且重量不超出 2.要求装入的物品不能重复 动态规划算法介绍 1.动态规划算法的核心是&#xff1a;将大问题划分为小问题进行解决&…...

day09 工作日报表

日期 30日07月2024年 任务安排 今天主要就是讲了security类工作的原理&#xff0c;然后就是让我们自己做项目 工作中的问题 今天做项目的时候发现有时候用postman测试返回20001&#xff0c;说错误见控制台&#xff0c;但是控制台一片祥和&#xff0c;于是就尝试用tr…...

C++学习之路(1)— 第一个HelloWorld程序

C学习之路&#xff08;1&#xff09;— 第一个HelloWorld程序 一、前言 C在C语言的基础上添加了对面向对象编程和泛型编程的支持&#xff0c;在 20世纪90年代便是最重要的编程语言之一&#xff0c;并在21世纪仍保持强劲势头。C继承了C语言高效、简洁、快速和可移植性的传统。 …...

python3 pyside6图形库学习笔记及实践(三)

目录 前言菜单栏相关控件使用QtDesigner快速构建菜单栏结构语法 上下文菜单概念为窗体添加上下文菜单为控件添加上下文菜单 折叠菜单资源的加载内置图标Rcc的使用创建资源文件加载资源文件 前言 本系列文章为b站PySide6教程以及官方文档的学习笔记 原视频传送门&#xff1a;【…...

03 库的操作

目录 创建查看修改删除备份和恢复查看连接情况 1. 创建 语法 CRATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] …] create_specification:  CHARACTER SET charset_name  CPLLATE collation_name 说明&#xff1a; 大写的标识关键…...

嵌入式人工智能(44-基于树莓派4B的扩展板-LED按键数码管TM1638)

树莓派性能非常强悍&#xff0c;但是对于某些复杂的项目来说&#xff0c;会出现心有余而口不足的情况&#xff0c;为了解决这类问题&#xff0c;可以在树莓派上使用扩展板&#xff0c;我们介绍几款常见的扩展板&#xff0c;不仅可以扩展到树莓派&#xff0c;其他单片机或嵌入式…...

linux通过抓包工具tcpdump查看80端口访问量情况

方法&#xff1a; tcpdump -i ens32 -tn dst port 80 -c 10 | awk -F"." {print $1"."$2"."$3"."$4} | sort | uniq -c | sort -nr |head -n 10 #-i&#xff1a;指定端口 #-t&#xff1a;在输出的每一行不打印时间戳 #-n&#xff…...

Mac 上安装和卸载 SDKMAN 及管理多个 JDK

前言 当电脑上有多个 JDK 环境的时候&#xff0c;切换管理比较麻烦&#xff0c;这时候可以使用 SDKMAN 来安装、管理 JDK。 一、安装 SDKMAN! 1. 安装前置条件 首先&#xff0c;确保已经安装了 curl 。如果没有&#xff0c;可以通过 Homebrew 来安装&#xff1a; brew inst…...

字节测开一面面经

1 . 自我介绍 2 . 讲一下常见的数据结构 : 讲了数组,set,list,map,树&#xff0c;图&#xff0c;队列 &#xff0c; 栈等 ; 3 . 讲一下java反射场景和作用 ; 4 . 讲一下你了解的机器学习算法 ; 5 . 我讲完ML之后 &#xff0c; 问了knn和贝叶斯的使用的场景区别(没答上来) ; 6 .…...

HTML 段落

HTML 段落 概述 HTML&#xff08;超文本标记语言&#xff09;是构建网页的标准语言&#xff0c;而段落是构成网页内容的基本单元。在HTML中&#xff0c;段落是通过<p>标签来定义的。本文将详细介绍HTML段落的相关知识&#xff0c;包括段落的基本结构、样式设置、以及在…...

【Mind+】掌控板入门教程04 迷你动画片

还记得小时候每天放学必看的动画片吗&#xff1f;还记得那些年陪伴我一起长大的卡通人物吗&#xff1f;勇救爷爷的葫芦娃&#xff0c;我们的朋友小哪吒&#xff0c;相信这些经典的动画形象已经成为了一代人童年的美好回忆。今天就让我们用掌控板来制作一部迷你动画片吧。 项目示…...

文件上传漏洞-HackBar使用

介绍 HackBar 是一个用于浏览器的扩展插件&#xff0c;主要用于进行网络渗透测试和安全评估。它提供了一系列方便的工具和功能&#xff0c;可以帮助用户执行各种网络攻击和测试&#xff0c;包括 XSS、SQL 注入、CSRF、路径穿越等 下载地址 可以到github上面去下载&#xff0…...

鸿蒙媒体开发【相机数据采集保存】音频和视频

相机数据采集保存 介绍 本示例主要展示了相机的相关功能&#xff0c;使用libohcamera.so 接口实现相机的预览、拍照、录像、前后置摄像头切换进行拍照、录像&#xff0c;以及对焦、曝光等控制类功能。 效果预览 使用说明 弹出是否允许“CameraSample”使用相机&#xff1f;…...

【java基础】徒手写Hello, World!程序

文章目录 前提&#xff1a;java环境变量配置使用vscode编写helloworld解析 前提&#xff1a;java环境变量配置 https://blog.csdn.net/xzzteach/article/details/140869188 使用vscode编写helloworld code .为什么用code看下图 报错了&#xff01;&#xff01;&#xff01;&…...

对 vllm 与 ollama 的一些研究

今天咱们来聊聊 vllm 和 ollama 这两个听起来就挺酷的玩意儿。这俩都是现在 AI 圈子里的大明星&#xff0c;专门用来让那些超大型的 AI 模型跑得更顺溜。 先说说 vllm 吧&#xff0c;这家伙的绝活儿是剪枝。啥叫剪枝呢&#xff1f;想象一下&#xff0c;你有个花园&#xff0c;…...

浅谈基础的图算法——强联通分量算法(c++)

文章目录 强联通分量SCC概念例子有向图的DFS树代码例题讲解[POI2008] BLO-Blockade题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 思路AC代码 【模板】割点&#xff08;割顶&#xff09;题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...