HTML、CSS 和 JavaScript 基础知识点

HTML、CSS 和 JavaScript 基础知识点

一、HTML 基础

1. HTML 文档结构

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文档标题</title>
</head>
<body><!-- 页面内容 -->
</body>
</html>

2. 常用 HTML 标签

  • 文本标签

    <h1><h6>标题、<p>段落、<span>行内元素、<br>换行、<hr>水平线
    
  • 列表

    <ul>无序列表、<ol>有序列表、<li>列表项、<dl>定义列表
    
  • 表格

    <table><tr>行、<td>单元格、<th>表头、<thead><tbody><tfoot>
    
  • 表单

    <form><input><textarea><select><option><button><label>
    
  • 多媒体

    <img><audio><video><iframe>
    

3. HTML5 新特性

  • 语义化标签:<header>, <footer>, <nav>, <article>, <section>, <aside>
  • 表单增强:<input type="date">, <input type="email">, <input type="range">
  • 多媒体支持:<video>, <audio>, <canvas>
  • Web存储:localStorage, sessionStorage
  • Web Workers
  • 地理定位 API

二、CSS 基础

1. CSS 引入方式

<!-- 内联样式 -->
<div style="color: red;"></div><!-- 内部样式表 -->
<style>div { color: red; }
</style><!-- 外部样式表 -->
<link rel="stylesheet" href="styles.css">

2. CSS 选择器

  • 基础选择器

    /* 元素选择器 */
    p { color: blue; }/* 类选择器 */
    .class-name { color: red; }/* ID选择器 */
    #id-name { color: green; }/* 通配符选择器 */
    * { margin: 0; padding: 0; }
    
  • 组合选择器

    /* 后代选择器 */
    div p { color: red; }/* 子元素选择器 */
    div > p { color: blue; }/* 相邻兄弟选择器 */
    h1 + p { color: green; }/* 通用兄弟选择器 */
    h1 ~ p { color: yellow; }
    
  • 属性选择器

    /* 存在属性 */
    [title] { color: red; }/* 属性值等于 */
    [type="text"] { color: blue; }/* 属性值包含 */
    [class*="btn"] { color: green; }
    
  • 伪类和伪元素

    /* 伪类 */
    a:hover { color: red; }
    li:nth-child(odd) { background: #eee; }/* 伪元素 */
    p::first-letter { font-size: 2em; }
    p::after { content: "★"; }
    

3. CSS 盒模型

  • 组成:content(内容) + padding(内边距) + border(边框) + margin(外边距)

  • box-sizing

    /* 标准盒模型 */
    box-sizing: content-box; /* 默认值 *//* 怪异盒模型 */
    box-sizing: border-box; /* 宽度包含padding和border */
    

4. 布局技术

  • 浮动布局

    .float-left { float: left; }
    .clearfix::after {content: "";display: block;clear: both;
    }
    
  • Flex 布局

    .container {display: flex;justify-content: center; /* 主轴对齐 */align-items: center;    /* 交叉轴对齐 */flex-wrap: wrap;       /* 换行 */
    }
    .item {flex: 1;               /* 弹性比例 */
    }
    
  • Grid 布局

    .container {display: grid;grid-template-columns: 1fr 2fr 1fr; /* 列定义 */grid-template-rows: 100px auto;     /* 行定义 */gap: 10px;                          /* 间距 */
    }
    .item {grid-column: 1 / 3;                 /* 跨列 */grid-row: 1;                        /* 行位置 */
    }
    

5. 响应式设计

  • 媒体查询

    @media (max-width: 768px) {body { font-size: 14px; }
    }
    
  • 视口单位

    .box {width: 50vw;    /* 视口宽度的50% */height: 100vh;  /* 视口高度的100% */font-size: 2vmin; /* 视口较小尺寸的2% */
    }
    

三、JavaScript 基础

1. 基础语法

  • 变量声明

    // ES5
    var name = "张三";// ES6+
    let age = 25;       // 块级作用域变量
    const PI = 3.14;    // 常量
    
  • 数据类型

    // 原始类型
    typeof "hello"      // "string"
    typeof 42           // "number"
    typeof true         // "boolean"
    typeof undefined    // "undefined"
    typeof null         // "object" (历史遗留问题)
    typeof Symbol()     // "symbol"
    typeof BigInt(10)   // "bigint"// 引用类型
    typeof {}           // "object"
    typeof []           // "object"
    typeof function(){} // "function"
    

2. 运算符

// 算术运算符
let sum = 10 + 5;    // 15// 比较运算符
10 == "10"           // true (值相等)
10 === "10"          // false (值和类型都相等)// 逻辑运算符
true && false        // false
true || false       // true
!true               // false// 三元运算符
let result = age > 18 ? '成年' : '未成年';

3. 流程控制

  • 条件语句

    if (score >= 90) {console.log('优秀');
    } else if (score >= 60) {console.log('及格');
    } else {console.log('不及格');
    }// switch语句
    switch(day) {case 1: console.log('周一'); break;case 2: console.log('周二'); break;default: console.log('周末');
    }
    
  • 循环语句

    // for循环
    for (let i = 0; i < 5; i++) {console.log(i);
    }// while循环
    let j = 0;
    while (j < 5) {console.log(j);j++;
    }// for...of (ES6)
    for (let item of array) {console.log(item);
    }// for...in (遍历对象属性)
    for (let key in obj) {console.log(key, obj[key]);
    }

4. 函数

  • 函数定义

    // 函数声明
    function add(a, b) {return a + b;
    }// 函数表达式
    const multiply = function(a, b) {return a * b;
    };// 箭头函数 (ES6)
    const divide = (a, b) => a / b;// 默认参数 (ES6)
    function greet(name = 'Guest') {console.log(`Hello, ${name}`);
    }// 剩余参数 (ES6)
    function sum(...numbers) {return numbers.reduce((acc, num) => acc + num, 0);
    }
    
  • 高阶函数

    // 函数作为参数
    function operate(a, b, operation) {return operation(a, b);
    }operate(5, 3, (x, y) => x * y); // 15// 函数返回函数
    function multiplier(factor) {return function(number) {return number * factor;};
    }const double = multiplier(2);
    double(5); // 10
    

5. 对象和数组

  • 对象

    // 对象字面量
    const person = {name: '张三',age: 25,greet() {console.log(`我是${this.name}`);}
    };// 访问属性
    person.name;        // "张三"
    person['age'];      // 25
    person.greet();     // "我是张三"// ES6增强
    const { name, age } = person; // 解构赋值
    const newPerson = { ...person, age: 26 }; // 扩展运算符
    
  • 数组

    // 数组方法
    const numbers = [1, 2, 3, 4, 5];numbers.map(x => x * 2);      // [2, 4, 6, 8, 10]
    numbers.filter(x => x > 2);   // [3, 4, 5]
    numbers.reduce((a, b) => a + b); // 15// ES6数组操作
    const newArr = [...numbers, 6, 7]; // [1, 2, 3, 4, 5, 6, 7]
    const [first, second, ...rest] = numbers; // 解构赋值
    

6. DOM 操作

// 获取元素
const btn = document.getElementById('myButton');
const items = document.querySelectorAll('.item');// 事件监听
btn.addEventListener('click', function(event) {console.log('按钮被点击了');
});// 修改内容
const heading = document.querySelector('h1');
heading.textContent = '新标题';
heading.style.color = 'red';// 创建元素
const newDiv = document.createElement('div');
newDiv.className = 'box';
document.body.appendChild(newDiv);// 表单处理
const form = document.querySelector('form');
form.addEventListener('submit', function(e) {e.preventDefault();const input = this.querySelector('input');console.log(input.value);
});

7. 异步编程

  • 回调函数

    function fetchData(callback) {setTimeout(() => {callback('数据加载完成');}, 1000);
    }fetchData(function(data) {console.log(data);
    });
    
  • Promise

    function fetchData() {return new Promise((resolve, reject) => {setTimeout(() => {resolve('数据加载完成');// 或 reject('加载失败');}, 1000);});
    }fetchData().then(data => console.log(data)).catch(error => console.error(error));
    
  • async/await

    async function loadData() {try {const data = await fetchData();console.log(data);} catch (error) {console.error(error);}
    }loadData();
    

四、综合案例

1. 简单的待办事项应用

<!DOCTYPE html>
<html>
<head><title>待办事项</title><style>body { font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; }#todo-form { display: flex; margin-bottom: 20px; }#todo-input { flex: 1; padding: 8px; }button { padding: 8px 16px; background: #4CAF50; color: white; border: none; }ul { list-style: none; padding: 0; }li { padding: 10px; border-bottom: 1px solid #ddd; display: flex; }li.completed { text-decoration: line-through; color: #888; }.delete-btn { margin-left: auto; color: red; cursor: pointer; }</style>
</head>
<body><h1>待办事项</h1><form id="todo-form"><input type="text" id="todo-input" placeholder="输入待办事项..." required><button type="submit">添加</button></form><ul id="todo-list"></ul><script>document.addEventListener('DOMContentLoaded', function() {const form = document.getElementById('todo-form');const input = document.getElementById('todo-input');const list = document.getElementById('todo-list');// 从本地存储加载待办事项let todos = JSON.parse(localStorage.getItem('todos')) || [];// 渲染待办事项列表function renderTodos() {list.innerHTML = '';todos.forEach((todo, index) => {const li = document.createElement('li');if (todo.completed) {li.classList.add('completed');}li.innerHTML = `<span>${todo.text}</span><span class="delete-btn" data-index="${index}">×</span>`;li.addEventListener('click', function() {toggleTodo(index);});list.appendChild(li);});// 保存到本地存储localStorage.setItem('todos', JSON.stringify(todos));}// 添加新待办事项form.addEventListener('submit', function(e) {e.preventDefault();const text = input.value.trim();if (text) {todos.push({ text, completed: false });input.value = '';renderTodos();}});// 切换完成状态function toggleTodo(index) {todos[index].completed = !todos[index].completed;renderTodos();}// 删除待办事项list.addEventListener('click', function(e) {if (e.target.classList.contains('delete-btn')) {const index = e.target.dataset.index;todos.splice(index, 1);renderTodos();}});// 初始渲染renderTodos();});</script>
</body>
</html>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚远景-对ASPICE评估体系的深入研究与分析

一、ASPICE评估体系的定义与背景 ASPICE&#xff08;Automotive Software Process Improvement and Capability Determination&#xff09;即汽车软件过程改进及能力测定模型&#xff0c;是由欧洲20多家主要汽车制造商共同制定的&#xff0c;专门针对汽车行业的软件开发过程评…

灰度图像和RGB图像在数据大小和编码处理方式差别

技术背景 好多开发者对灰度图像和RGB图像有些认知差异&#xff0c;今天我们大概介绍下二者差别。灰度图像&#xff08;Grayscale Image&#xff09;和RGB图像在编码处理时&#xff0c;数据大小和处理方式的差别主要体现在以下几个方面&#xff1a; 1. 通道数差异 图像类型通道…

从爬虫到网络---<基石9> 在VPS上没搞好Docker项目,把他卸载干净

1.停止并删除所有正在运行的容器 docker ps -a # 查看所有容器 docker stop $(docker ps -aq) # 停止所有容器 docker rm $(docker ps -aq) # 删除所有容器如果提示没有找到容器&#xff0c;可以忽略这些提示。 2.删除所有镜像 docker images # 查看所有镜像 dock…

Centos 上安装Klish(clish)的编译和测试总结

1&#xff0c;介绍 clish是一个类思科命令行补全与执行程序&#xff0c;它可以帮助程序员在nix操作系统上实现功能导引、命令补全、命令执行的程序。支持&#xff1f;&#xff0c;help, Tab按键。本文基于klish-2.2.0介绍编译和测试。 2&#xff0c;klish的编译 需要安装的库&…

理解计算机系统_并发编程(3)_基于I/O复用的并发(二):基于I/O多路复用的并发事件驱动服务器

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 接续上一帖理解计算机系统_并发编程(2)_基于I/O复用的并发…

系统可靠性分析:指标解析与模型应用全览

以下是关于系统可靠性分析中可靠性指标、串联系统与并联系统、混合系统、系统可靠性模型的相关内容&#xff1a; 一、可靠性指标 可靠度&#xff1a;是系统、设备或元件在规定条件和规定时间内完成规定功能的概率。假设一个系统由多个部件组成&#xff0c;每个部件都有其自身…

数字高程模型(DEM)公开数据集介绍与下载指南

数字高程模型&#xff08;DEM&#xff09;公开数据集介绍与下载指南 数字高程模型&#xff08;Digital Elevation Model, DEM&#xff09;广泛应用于地理信息系统&#xff08;GIS&#xff09;、水文模拟、城市规划、环境分析、灾害评估等领域。本文系统梳理了主流的DEM公开数据…

Python+大模型 day01

Python基础 计算机系统组成 基础语法 如:student_num 4.标识符要做到见名知意,增强代码的可读性 关键字 系统或者Python定义的,有特殊功能的字符组合 在学习过程中,文件名没有遵循标识符命名规则,是为了按序号编写文件方便查找复习 但是,在开发中,所有的Python文件名称必须…

C++引用编程练习

#include <iostream> using namespace std; double vals[] {10.1, 12.6, 33.1, 24.1, 50.0}; double& setValues(int i) { double& ref vals[i]; return ref; // 返回第 i 个元素的引用&#xff0c;ref 是一个引用变量&#xff0c;ref 引用 vals[i] } // 要调用…

机密虚拟机的威胁模型

本文将介绍近年兴起的机密虚拟机&#xff08;Confidential Virtual Machine&#xff09;技术所旨在抵御的威胁模型&#xff0c;主要关注内存机密性&#xff08;confidentiality&#xff09;和内存完整性&#xff08;integrity&#xff09;两个方面。在解释该威胁可能造成的问题…

【Rust trait特质】如何在Rust中使用trait特质,全面解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Simulink模型回调

Simulink 模型回调函数是一种特殊的 MATLAB 函数&#xff0c;可在模型生命周期的特定阶段自动执行。它们允许用户自定义模型行为、执行初始化任务、验证参数或记录数据。以下是各回调函数的详细说明&#xff1a; 1. PreLoadFcn 触发时机&#xff1a;Simulink 模型加载到内存之…

FPGA:Xilinx Kintex 7实现DDR3 SDRAM读写

在Xilinx Kintex 7系列FPGA上实现对DDR3 SDRAM的读写&#xff0c;主要依赖Xilinx提供的Memory Interface Generator (MIG) IP核&#xff0c;结合Vivado设计流程。以下是详细步骤和关键点&#xff1a; 1. 准备工作 硬件需求&#xff1a; Kintex-7 FPGA&#xff08;如XC7K325T&…

Python爬虫实战:研究进制流数据,实现逆向解密

1. 引言 1.1 研究背景与意义 在现代网络环境中,数据加密已成为保护信息安全的重要手段。许多网站和应用通过二进制流数据传输敏感信息,如视频、金融交易数据等。这些数据通常经过复杂的加密算法处理,直接分析难度较大。逆向工程进制流数据不仅有助于合法的数据获取与分析,…

Java Spring Boot项目目录规范示例

以下是一个典型的 Java Spring Boot 项目目录结构规范示例&#xff0c;结合了分层架构和模块化设计的最佳实践&#xff1a; text 复制 下载 src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── myapp/ │…

图像颜色理论与数据挖掘应用的全景解析

文章目录 一、图像颜色系统的理论基础1.1 图像数字化的本质逻辑1.2 颜色空间的数学框架1.3 量化过程的技术原理 二、主要颜色空间的深度解析2.1 RGB颜色空间的加法原理2.2 HSV颜色空间的感知模型2.3 CMYK颜色空间的减色原理 三、图像几何属性与高级特征3.1 分辨率与像素密度的关…

mysql两张关联表批量更新一张表存在数据,而另一张表不存在数据的sql

一、mysql两张关联表批量更新一张表存在、另一张表不存在的数据 创建user和user_order表 CREATE TABLE user (id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,id_card varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NU…

PNG转ico图标(支持圆角矩形/方形+透明背景)Python脚本 - 随笔

摘要 在网站开发或应用程序设计中&#xff0c;常需将高品质PNG图像转换为ICO格式图标。本文提供一份基于Pillow库实现的&#xff0c;能够完美保留透明背景且支持导出圆角矩形/方形图标的格式转换脚本。 源码示例 圆角方形 from PIL import Image, ImageDraw, ImageOpsdef c…

在线SQL转ER图工具

在线SQL转ER图网站 在数据库设计、软件开发或学术研究中&#xff0c;ER图&#xff08;实体-关系图&#xff09; 是展示数据库结构的重要工具。然而&#xff0c;手动绘制ER图不仅耗时费力&#xff0c;还容易出错。今天&#xff0c;我将为大家推荐一款非常实用的在线工具——SQL…

绘制时间对应的数据曲线

头文件#pragma once #include "ChartControl.h" #include <vector> #include "DBOperate.h&