什么是HTML、CSS 和 JavaScript?
HTML、CSS 和 JavaScript 是构建网页的三大核心技术,它们分工明确又紧密协作。接下来我将分别介绍三者的定义、功能,并阐述它们如何共同构成网页,最后推荐学习资源。
一、HTML:网页的骨架与内容基础
HTML(HyperText Markup Language,超文本标记语言)是网页的基础,用于描述网页的结构和内容。它就像是建筑物的骨架,定义了网页上有哪些部分,比如标题、段落、图片、链接等。
HTML 使用一系列的 “标签” 来标记内容,这些标签包裹着文本、图像等元素,告诉浏览器如何显示这些内容。例如,<p>
标签用于定义段落,<h1>
- <h6>
标签用于定义不同级别的标题,<img>
标签用于插入图片 。以下是一个简单的 HTML 示例:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>My First Page</title>
</head><body><h1>这是一个一级标题</h1><p>这是一个段落,用于展示网页的文本内容。</p><img src="example.jpg" alt="示例图片"><a href="https://www.example.com">这是一个链接</a>
</body></html>
在上述代码中,<!DOCTYPE html>
声明文档类型为 HTML5;<html>
标签是整个 HTML 文档的根元素;<head>
部分包含了关于文档的元信息,如字符编码(<meta charset="UTF-8">
)和网页标题(<title>
标签);<body>
部分则是网页实际展示内容的区域,包含了标题、段落、图片和链接等元素。
HTML 的标签还可以包含属性,用来进一步描述元素的特征。比如,<img>
标签的src
属性指定图片的路径,alt
属性用于在图片无法显示时显示替代文本;<a>
标签的href
属性指定链接的目标地址。通过不同标签的组合和嵌套,能够构建出复杂多样的网页结构。
二、CSS:网页的外观与样式美化
CSS(Cascading Style Sheets,层叠样式表)主要负责网页的外观和样式,它就像给建筑物进行装修,决定了网页的颜色、字体、布局、动画效果等视觉呈现。有了 CSS,相同的 HTML 内容可以呈现出截然不同的视觉风格。
CSS 有三种基本的引入方式:
- 内联样式:直接在 HTML 元素的
style
属性中编写样式规则。例如:<p style="color: blue; font-size: 16px;">这是一个蓝色、16像素字体大小的段落。</p>
,内联样式优先级最高,但不利于样式的复用和维护,一般用于临时修改个别元素样式。 - 内部样式表:在 HTML 文档的
<head>
部分使用<style>
标签定义样式规则。如下所示:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>My Page</title><style>p {color: green;font-family: Arial;}</style>
</head><body><p>这是一个应用了内部样式表的段落。</p>
</body></html>
这种方式可以为当前页面统一设置样式,适用于单个页面的样式调整。
3. 外部样式表:将样式规则编写在单独的.css
文件中,然后通过<link>
标签引入到 HTML 文档中。例如,创建一个styles.css
文件,内容为:
body {background-color: #f4f4f4;
}
h1 {color: red;
}
在 HTML 文档中引入该样式表:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>My Page</title><link rel="stylesheet" href="styles.css">
</head><body><h1>这是一个红色标题</h1><p>页面背景为浅灰色。</p>
</body></html>
外部样式表便于样式的复用和维护,适合多个页面使用相同样式的情况。
CSS 选择器是 CSS 规则的重要组成部分,用于选择要应用样式的 HTML 元素。常见的选择器有:
- 标签选择器:直接使用 HTML 标签名作为选择器,如
p
、h1
,会选中页面中所有对应的标签元素。 - 类选择器:以
.
开头,后跟自定义的类名,如.highlight
,通过在 HTML 元素中添加class
属性并设置相应类名来应用样式。 - ID 选择器:以
#
开头,后跟唯一的 ID 值,如#main-content
,每个 ID 在页面中只能使用一次,用于精确选择特定元素。
通过选择器和丰富的样式属性(如color
、font-size
、width
、height
、margin
、padding
等),可以实现从简单的文本样式调整到复杂的页面布局设计。
三、JavaScript:网页的交互与动态功能实现
JavaScript 是一种脚本语言,为网页添加交互性和动态功能,让网页 “活” 起来。它可以实现表单验证、页面元素的动态修改、响应鼠标点击和键盘输入等操作,就像赋予建筑物智能系统,使其具备各种交互能力。
JavaScript 可以通过以下方式嵌入到 HTML 文档中:
- 内部脚本:在 HTML 文档中使用
<script>
标签,将 JavaScript 代码写在标签内部。例如:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>JavaScript Example</title>
</head><body><button id="myButton">点击我</button><script>const button = document.getElementById('myButton');button.addEventListener('click', function () {alert('你点击了按钮!');});</script>
</body></html>
在上述代码中,通过document.getElementById
获取 HTML 页面中 ID 为myButton
的按钮元素,然后使用addEventListener
方法为按钮添加点击事件监听器,当按钮被点击时,弹出一个提示框。
2. 外部脚本:将 JavaScript 代码编写在单独的.js
文件中,然后在 HTML 文档中通过<script>
标签的src
属性引入。例如,创建一个script.js
文件,内容为:
function showMessage() {alert('这是外部脚本中的消息!');
}
在 HTML 文档中引入该脚本:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>JavaScript Example</title>
</head><body><button onclick="showMessage()">点击执行外部脚本函数</button><script src="script.js"></script>
</body></html>
JavaScript 提供了丰富的 API 来操作 HTML 文档(DOM,Document Object Model)和浏览器对象(如window
对象)。通过 DOM 操作,可以动态地创建、修改和删除 HTML 元素,更新页面内容;利用浏览器对象,可以实现页面跳转、获取浏览器信息等功能。
四、HTML、CSS 和 JavaScript 如何共同构成网页
当浏览器获取到一个网页的 HTML 文件后,会首先解析 HTML 代码,构建出 DOM 树,将 HTML 中的各个元素以树形结构表示。同时,浏览器会解析 CSS 代码,无论是内部样式表、外部样式表还是内联样式,都会生成 CSSOM(CSS Object Model,CSS 对象模型)树。
然后,浏览器将 DOM 树和 CSSOM 树结合起来,构建出渲染树(Render Tree),渲染树只包含页面中可见的元素及其样式信息。基于渲染树,浏览器计算出每个元素在页面中的位置和大小,进行布局计算,并最终将页面绘制出来。
在页面加载完成后,JavaScript 代码开始执行。它可以通过操作 DOM 来修改页面内容,例如添加新的元素、修改元素的文本或样式;也可以监听各种事件(如鼠标点击、键盘输入、页面滚动等),根据用户的操作动态地更新页面,实现交互功能。
三者紧密协作,HTML 提供内容和结构,CSS 负责样式呈现,JavaScript 赋予交互能力,共同打造出丰富多彩、功能强大的网页。
五、学习资源推荐
- 官方文档
- HTML 官方文档:W3C(万维网联盟)是制定 Web 标准的组织,其官网(HTML Standard)提供了权威的 HTML5 标准文档,详细介绍了 HTML 的各个标签、属性及其用法,但内容较为专业,适合有一定基础后深入研究。
- CSS 官方文档:同样在 W3C 官网(CSS Snapshot 2024)可以找到 CSS 标准文档,涵盖了 CSS 的各种属性、选择器以及布局规范等内容。另外,Mozilla 开发者网络(MDN)上的 CSS 文档(CSS:层叠样式表 | MDN)也非常优秀,它以更通俗易懂的方式讲解 CSS 知识,并提供了大量示例和兼容性说明。
- JavaScript 官方文档:ECMA 国际(ECMAScript® 2026 Language Specification)制定了 JavaScript 语言的标准规范(ECMAScript),不过其文档专业性较强。MDN 上的 JavaScript 文档(JavaScript | MDN)是很好的学习资源,它从基础语法到高级特性都有详细讲解,还包含了丰富的示例和实际应用场景分析。
- 学习网址
- W3Schools:网址为W3Schools Online Web Tutorials,是一个非常适合初学者入门的网站。它以简洁明了的方式介绍 HTML、CSS 和 JavaScript 知识,每个知识点都配有详细的文字说明、示例代码和在线编辑测试功能,方便读者边学边练,快速掌握基础知识。
- 菜鸟教程:网址是菜鸟教程 - 学的不仅是技术,更是梦想!,该网站的 HTML、CSS 和 JavaScript 教程内容全面,讲解通俗易懂,并且提供了大量的实例和练习题,适合快速入门和查漏补缺。同时,它还包含了很多常见问题的解答和实用技巧分享。
- MDN(Mozilla 开发者网络):MDN Web Docs 不仅有权威的技术文档,还提供了很多学习指南和案例分析,从基础到进阶的内容都有覆盖。对于想要深入理解 Web 技术原理和进行实际项目开发的学习者来说,是一个不可多得的优质资源。
- Codecademy:网址为https://www.codecademy.com/,是一个互动式的在线编程学习平台。它通过有趣的项目和实践任务引导学习者学习 HTML、CSS 和 JavaScript,在完成任务的过程中逐步掌握知识和技能,适合喜欢通过实践学习的人群。
相关文章:
什么是HTML、CSS 和 JavaScript?
HTML、CSS 和 JavaScript 是构建网页的三大核心技术,它们分工明确又紧密协作。接下来我将分别介绍三者的定义、功能,并阐述它们如何共同构成网页,最后推荐学习资源。 一、HTML:网页的骨架与内容基础 HTML(HyperText …...

手机网页提示ip被拉黑名单什么意思?怎么办
当您使用手机浏览网页时,突然看到“您的IP地址已被列入黑名单”的提示,是否感到困惑和不安?这种情况在现代网络生活中并不罕见,但确实会给用户带来诸多不便。本文将详细解释IP被拉黑的含义、常见原因,并提供一系列实…...

CCF编程能力等级认证 一级 第一次课
介绍 CCF 编程能力等级认证(GESP)为青少年计算机和编程学习者提供学业能力验证的规则和平台,由中国计算机学会发起并主办。 每年考试分四次,时间是每年的3月、6月、9月、12月,以当年每期公布的时间为准。 GESP适用年…...

SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回
介绍 用于构建基于 WebFlux 的响应式 Web 应用程序。集成了 Spring WebFlux 模块,支持响应式编程模型,构建非阻塞、异步的 Web 应用。WebFlux 使用了非阻塞的异步模型,能够更好地处理高并发请求。适合需要实时数据推送的应用场景。 WebClie…...

Python爬虫中time.sleep()与动态加载的配合使用
一、动态加载网页的挑战 动态加载网页是指网页的内容并非一次性加载完成,而是通过JavaScript等技术在用户交互或页面加载过程中逐步加载。这种设计虽然提升了用户体验,但对于爬虫来说,却增加了抓取的难度。传统的爬虫方法,如简单…...
学习Cesium Entities
🌐 Cesium中的Entities系统趣味学习 📊 Entities系统架构流程图 #mermaid-svg-Lkue5O3gYOkEVSbD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Lkue5O3gYOkEVSbD .error-icon{fill:#552222;}#mermaid-svg-Lku…...
如何减少锁竞争并细化锁粒度以提高 Rust 多线程程序的性能?
在并发编程中,锁(Lock)是一种常用的同步机制,用于保护共享数据免受多个线程同时访问造成的竞态条件(Race Condition)。然而,不合理的锁使用会导致严重的性能瓶颈,特别是在高并发场景…...
Logback官方文档翻译章节目录
Logback官方文档翻译章节目录 第一章 Logback简介 第二章 Logback的架构(一) Logback的架构(二) Logback的架构(三) 持续更新中…...

AtCoder Beginner Contest 404 A-E 题解
还是ABC好打~比ARC好打多了( 题解部分 A - Not Found 给定你一个长度最大25的字符串,任意输出一个未出现过的小写字母 签到题,map或者数组下标查询一下就好 #include<bits/stdc.h>using namespace std;#define int long long #def…...

【mysql】常用命令
一 系统mysql用户密码查询 1、在工程目录如/usr/local/httpd/下的*.php中查找类似有db.inf的文件 以php为例。 2、在代码文件中确认有数据库连接的的功能实现 例如: $dbconf parse_ini_file(/usr/local/httpd/conf/db.inf); $link mysql_connect($dbconf[d…...

macOS Arduino IDE离线安装ESP8266支持包
其实吧,本来用platformio也是可以的,不过有时候用Arduino IDE可能更快一些,因为以前一直是Arduino.app和Arduino IDE.app共存了一段时间,后来下决心删掉Arduino.app并升级到最新的Arduino IDE.app。删除了旧的支持板级支持包之后就…...

网络靶场基础知识
一、网络靶场的核心概念 网络靶场(Cyber Range)是一种基于虚拟化和仿真技术的网络安全训练与测试平台,通过模拟真实网络环境和业务场景,为攻防演练、漏洞验证、安全测试和人才培养提供安全可控的实验空间。其核心目标是通过“虚实…...
基于Partial Cross Entropy的弱监督语义分割实战指南
一、问题背景:弱监督学习的挑战 在计算机视觉领域,语义分割任务面临最大的挑战之一是**标注成本**。以Cityscapes数据集为例,单张图像的像素级标注需要约90分钟人工操作。这催生了弱监督学习(Weakly Supervised Learning)的研究方向,其中partial cross entropy loss(部…...
【算法基础】选择排序算法 - JAVA
一、算法基础 1.1 什么是选择排序 选择排序是一种简单直观的排序算法,它的工作原理是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小…...
电商平台的流量秘密:代理IP在用户行为分析中的角色
在电商江湖中,流量是氧气,用户行为数据是DNA。当你在电商平台点击商品、加入购物车时,背后有一套精密的系统正在分析你的每个动作。而在这套系统的运作中,代理IP正扮演着"隐形推手"的角色——它既是数据采集的"隐身…...
批量清洗与修改 YOLO 标签:删除与替换指定类别
在使用 YOLO 格式的数据进行训练或部署前,常常需要对标签文件进行清洗或修改。本文整理了两种常见场景的 Python 脚本:删除指定类别 和 修改某类为其他类,并支持自动打印检测到该类别的文件名,帮助你快速定位问题数据。 …...

Python项目源码57:数据格式转换工具1.0(csv+json+excel+sqlite3)
1.智能路径处理:自动识别并修正文件扩展名,根据转换类型自动建议目标路径,实时路径格式验证,自动补全缺失的文件扩展名。 2.增强型预览功能:使用pandastable库实现表格预览,第三方模块自己安装一下&#x…...
TypeScript 中,属性修饰符
在 TypeScript 中,属性修饰符(Property Modifiers)是用于修饰类的属性或方法的关键字,它们可以改变属性或方法的行为和访问权限。TypeScript 提供了三种主要的属性修饰符:public、private 和 protected。此外ÿ…...

雷赛伺服电机
ACM0经济 编码器17位: ACM1基本 编码器23位磁编, ACM2通用 编码器24位光电, 插头定义:...
基础编程题目集 6-8 简单阶乘计算
本题要求实现一个计算非负整数阶乘的简单函数。 函数接口定义: int Factorial( const int N ); 其中N是用户传入的参数,其值不超过12。如果N是非负整数,则该函数必须返回N的阶乘,否则返回0。 裁判测试程序样例: #in…...

【deepseek教学应用】001:deepseek如何撰写教案并自动实现word排版
本文讲述利用deepseek如何撰写教案并自动实现word高效完美排版。 文章目录 一、访问deepseek官网二、输入教案关键词三、格式转换四、word进一步排版 一、访问deepseek官网 官网:https://www.deepseek.com/ 进入主页后,点击【开始对话】,如…...

CH32V208GBU6沁恒绑定配对获取静态地址
从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...
【C/C++】RPC与线程间通信:高效设计的关键选择
文章目录 RPC与线程间通信:高效设计的关键选择1 RPC 的核心用途2 线程间通信的常规方法3 RPC 用于线程间通信的潜在意义4 主要缺点与限制4.1 缺点列表4.2 展开 5 替代方案6 结论 RPC与线程间通信:高效设计的关键选择 在C或分布式系统设计中,…...
跨线程和跨进程通信还有多种方式对比
📊 常见通信机制对比 通信方式跨线程支持跨进程支持同步/异步性能编程复杂度特点与适用场景SendMessage✅✅(同桌面)同步较高(阻塞)低简单窗口通信、控制PostMessage✅✅(同桌面)异步高低通知、事件触发COM/DCOM✅✅同步/异步中中高系统级服务、进程间服务封装Socket✅…...

RT Thread Studio创建软件和硬件RTC工程
MCU型号:STM32F103RET6 一.配置软件模拟RTC 1.生成一个带串口输出的工程文件,新建RT-Thread项目工程文件。 2.查看电路图中的串口输出管脚,根据STMCubeMx软件可知此串口为USART1,选择芯片型号为STM32F103RET6,控制台…...
Oracle EBS AP发票被预付款核算创建会计科目时间超长
背景 由于客户职能部门的水电、通信和物业等等费用统一管理或对接部门报销费,在报销费的时候,用户把所有费用分摊到各个末级部门,形成AP发票行有上千行, 问题症状 1、用户过账时,请求创建会计科目一直执行20多个小时未完成,只能手工强行取消请求。 2、取消请求以后,从后…...
驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)
作者:嵌入式Jerry 视频教程请关注 B 站:“嵌入式Jerry” 一、背景与目标 在本篇中,我们围绕 TI 的 lm48100q 音频编解码器 展开,深入讲解其作为 I2C 外设如何集成至 Linux 内核音频子系统(ASoC)࿰…...
运维--计划任务
计划任务分为一次性和循环性的计划任务 1.date的用法 date 月日时分年 eg:date 100118222023 date:查看时间和日期、修改时间和日期 获取当前日期:date +%F F:日期 获取当前时间:date +%H:%M:%S H:时 M:分 S:秒 获取周几: date +%w w:周 …...

苍穹外卖心得体会
1 登录认证 技术点:JWT令牌技术(JSON Web Token) JWT(JSON Web Token)是一种令牌技术,主要由三部分组成:Header头部、Payload载荷和Signature签名。Header头部存储令牌的类型(如JW…...
Python爬虫实战:获取jd商城最新5060ti 16g显卡销量排行榜商品数据并做分析,为显卡选购做参考
一、引言 1.1 研究目的 本研究旨在利用 Python 爬虫技术,从京东商城获取 “5060ti 16g” 型号显卡的商品数据,并对这些数据进行深入分析。具体目标包括: 实现京东商城的模拟登录,突破登录验证机制,获取登录后的访问权限。高效稳定地爬取按销量排名前 20 的 “5060ti 16g…...