web复习
前言
Web 标准:由W3C(万维⽹联盟) 牵头制定的⼀系列标准的集合包括:表现标准,结构标准,行为标准
HTML:
- html 是用于定义内容结构和内容
- table 用于创建表格
- input 的常用 type
- text: 单行文本输入
- password: 加密文本输入
- radio: 单选按钮
- checkbox: 复选按钮
- submit: 提交按钮(提交表单)
- file:提交文件 (配合accept指定文件类型)
- select:下拉选择框(配合option)
- input 的基础属性
- value:输入框默认值(text/password),选中值(radio/checkbox),提交值(submit)
- name:服务器识别关键,必备,否则服务器无法接受此文件数据
- placeholder:输入框站位文本(不是初始值!)
- disabled:禁用输入框,提交时不发送数据(直接点不起)
- readonly:只读,提交时可以发送数据(可以点,但是不可以编辑)
- maxlength:输入最长长度(都按一个算)
- vue中的应用:v-model双向绑定
- 创建互斥的radio:每个 radio 设置相同的 name
- type="file"的input标签可以通过required属性设置为必填项
- input事件实时触发(输入时立即响应),change事件在值改变且失焦的时候触发(js里)
- vue的双向绑定:
<template>
<input v-model="username" type="text">
</template>
<script>
export default {
data() {
return {
username: ''
}
}
}
</script>
<!-- 当输入框内容变化时,username数据会自动更新;修改username数据时,输入框内容也会同步更新。 -->
- for(label) 和 id(input) 一家人
- 编写一个登录表单,包含用户名(必填,限制 8-20 字符)、密码(必填,至少 6 位)和提交按钮,并添加客户端验证。
<form>
<label for="username">用户名:</label>
<input
type="text"
name="username"
id="username"
required
minlength="8"
maxlength="20"
placeholder="请输入用户名"
/>
<br />
<label for="password"> 密码: </label>
<input
type="text"
name="password"
id="password"
required
minlength="6"
placeholder="请输入密码"
/>
<hr>
<button type="submit">
login in
</button>
</form>
- a元素
- href:指示链接目标
- title:额外说明
- target:默认-self,-blank新窗口
- download:强制下载链接资源(非打开) - img
- src:指定链接图像属性
- alt:图像替代文本(无障碍必备) - vue动态绑定a,img
<template>
<!-- 动态链接 -->
<a :href="productUrl" target="_blank">
<img :src="imageUrl" :alt="productName">
</a>
</template>
<script>
export default {
data() {
return {
productUrl: '/products/123',
imageUrl: 'https://example.com/prod.jpg',
productName: '智能手表'
}
}
}
</script>
- 万国码:utf-8
- ASCII 编码仅支持英文字符
- form 用于创建表单
- action:指定表单数据提交的URL地址
- method:提交方式(get/post)
- 空元素 === 单标签 === 没有结束标签
- textarea 用于创建文本域
- label:定义字段(表单控件)名称
- ol 有序元素,
- select
<select >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected>4</option>
</select>
select在外面
- 列表:
- 无序列表:ul,li li(li是列表项)
- 有序列表: ol li li
- 自定义列表:dl (dt:定义术语,dd:定义描述)
- 表格:
- tr(table row):表格的一行(包裹td/th)
- td(table data): 表格的数据单元格(colspan,rowspan)
- th(table head):表格表头单元格
- 语义化,套个盒子:thead tbody tfoot(包裹tr)
- 表单:向服务器传数据
- video网页嵌入视频元素
- audio网页嵌入音频的元素
- 修改 value:修改提交按钮上显示的文字
- 常见语义化标签:header nav main footer section article p h1-6 blockquote ul li ol strong thead tbody tr th td table em mark small time del ins
css:
- 负责网页布局和样式
- 垂直外边距折叠:取最大值
e.g.两个div盒子上下排列,上盒子设置margin为20px,下盒子设置margin为10px,则两者间距为:20px - 行内元素不可以直接设高宽
- css 全称为:层叠样式表
- position:
- 静态定位(static):元素正常参与文档流(默认,偏移top,bottom,left,right属性无效)
- 相对定位(relative):元素保留文档流位置,偏移后原位置留空,便宜参考对象:自己原位置(元素微调)
- 绝对定位(absolute): 元素脱离文档流,偏移参考对象:最近的非static的祖先元素(弹窗,悬浮按钮,图片剪裁区)
- 固定定位(fixed): 元素脱离文档流,偏移参考对象浏览器视口(导航栏 ,返回顶部,广告)
- 占性定位(sticky): 脱离文档流,滚动时在特定位置之前相对定位,之后固定定位(侧边导航,滑动时固定的表头)
- z-index:越大越上
- 多重样式优先级:⾏内样式> 内部样式表 > 外部样式表 > 浏览器默认样式
- 优先级计算:
- 内联样式(1000) > ID 选择器(100) > 类 / 属性 / 伪类选择器(10) > 元素 / 伪元素选择器(1) > 通配符(0)
- 相同权重:后出现的选择器生效
- !important:强制最高优先级(慎用,破坏样式层级)
div:hover!==div :hover- 行高 === 字体高度 + 上下边距
- 上右下左(顺时针)
- 块元素
- 默认宽度 === 父元素宽度
- 内外边距有效
- 独占一行
- 可设宽高
- div p h1-h6 ul form
- 行内元素(与块元素反,只记住块就好)
- 内容撑开宽度
- span a strong em
- 行内块元素(inline-block)
- img input button textare td
- 不换行,可设宽高
- 内外边距有效
- 元素间有空白,可以设font-size:0
- 字体:
- 首行缩进:
text-indent:2em - 大小:px绝对大小,em(父元素字体大小)rem(相对于根html元素字体大小,默认16px)相对大小
- 粗细:100-900(默认normal 400,bold 700)
- 首行缩进:
- 增加同一段落中两行文字间间距,应该设置:
line-height - 单位和数字之间不可以有空格
text-decoration:下划线,删除线- 浮动用于水平排列盒子
- 浮动元素会尽可能地向顶端对齐、向左或向右对齐
- 盒子相关属性width, height,margin,padding,border,display不可以继承
- 浏览器只忽略无法解析的部分,不报错,并继续应用有效的 CSS 规则
- 伪元素选择器用于选择元素指定部分,例如:
::first-letter - 选择器复习
- 绝对定位不再占有原有的位置的性质叫做脱标
- font-style
- normal:默认
- italic:文字倾斜,显示为斜体,强调内容
- oblique:文字倾斜,强制倾斜,侧重单纯的倾斜视觉效果
- CSS 过渡(如
transition: background-color 0.3s)增强交互体验
js
- 负责网页交互和动态功能
- 默认导出和命名导出(导出位置灵活)
- 默认导出:
Default Export最多1个导出,自定义导出名,导入不要花括号 - 命名导出: 可以有多个导出,导入名和导出一样,导入要花括号
- 默认导出:
// 命名导出示例(工具函数库)
export function add(a, b) { return a + b; }
export function minus(a, b) { return a - b; }
//导⼊命名导出的变量
import {PI} from './js-export.js';
export const PI = 3.14;
// 默认导出示例(React组件)
export default function UserComponent() {
return <div>用户组件</div>;
}
export default{
name:'bob',
age:30
//可以匿名
}
// 导⼊默认导出,导出名可任意
import jsExport from './js-export.js';
- 箭头函数
- 与普通函数相比的优势:
1. 更简洁,可以省略括号,花括号和return
2. 没有自己的this,arguments,继承上下文 - 何时用?
1. 简单回调函数(map,filter方法)
2. 保留上下文this - 可省略符号表
1. 只有一条return语句,可以省略大括号和return
2. 只有一个参数,可以省略括号
3. 没有参数,必须使用空括号
- 与普通函数相比的优势:
- const声明必须立即初始化,如果是数组或者对象,里面的元素可以改变
- 数据类型:
- 原生数据类型(不可改变,值的复制):String Number(证书,浮点数,NaN) Boolean Null(有意为空) Undefined(已定义未赋值,无意) Symbol Bigint(ES2020+)
- 引用数据类型(对象类型,引用传递):Object Array Function Date(
new Date()) RegExp(正则表达式)
- 声明函数三种方式:函数声明,函数表达式,箭头函数
- 对象:由键值对组成的数据结构,无序,由属性(变量)和方法构成(函数)
- 对象的增删查改
- 只有
person['first-name']能正确访问含特殊字符(如 - )的属性,因方括号语法支持任意字符串作为属性名,不可以随意改成小驼峰然后用.属性
只有 person['first-name']能正确访问含特殊字符(如 - )的属性,因方括号语法支持任意字符串作为属性名,不可以随意改成小驼峰然后用.属性 object.key = value是为对象添加属性的正确语法
- 只有
- !important:普通变量(值类型)直接在栈上储存,复制是值的copy,各自存各自的,彼此赋值不影响什么,但是创建对象(引用数据类型,还有数组)是在堆上,复制是指针copy,后续改变一个,第二个也改变
let age = 18
let b = age
b = 28
console.log(age)//18
let obj_1 = {
age: 18
}
let obj_2 = obj_1
obj_2.age = 28
console.log(obj_1.age)//28
- js数组可以同时储存不同类型的元素
- web APIs:DOM+BOM
- js数组常见方法
- 改变元素组
- pop() 删除数组最后一个元素
- push(4) 末尾加元素4
- unshift() 开头加元素
- shift() 开头删除元素
- splice(起始索引,删除数量,插入元素) 灵活删改元素
- sort((a,b) => a-b) 升序
- sort((a,b) => b-a) 降序
- reverse():反转数组元素
- 不改变数组元素
- join()
- slice()
- concat
- indexof()
- includes()
- find()
- filter()
- map()
- 改变元素组
- js里不可变数据类型:原始数据类型
- typeof 识别数据类型
- 基本数据类型:除了null都可以准确识别,null返回object,判断用
let val = null;//有意为空
console.log(val === null); // true,精准识别 null
console.log(null === ''); // false
console.log(null === 0); // false
- 引用数据类型:除了fuction准确返回function,其余返回object
- 字符串的比较不是按数值大小,而是按字典序(即字符的 Unicode 编码顺序)逐字符比较
- let与const易错点
- defer:在
<head>中通过<script>元素的src属性外部导入 JavaScript 文件时,还需要同时使用什么属性以确保脚本在 HTML 解析完成后再执行 - JavaScript只能修改已经被浏览器加载的HTML元素
- classList.add() 方法接受的是纯类名(如 "nav"),不需要选择器符号(如 . 或 #)
Vue
- Vue是什么:用于构建用户界面的渐近式JavaScript框架
- 用npm 或者 pnpm创建vue项目:

文件结构:
1. ├── node_modules # Vue项目的依赖包目录,存放项目所需的所有npm包
2. ├── public # 静态资源目录(如网页图标)
3. ├── src # 源代码目录,存放项目的Vue组件、JavaScript代码等
4. ├── eslint.config.js # ESLint配置文件,定义代码规范和检查规则
5. ├── index.html # 主HTML文件,应用的入口页面
6. ├── jsconfig.json # JavaScript配置文件,用于设置编辑器和语言功能
7. ├── package.json # 项目配置文件,管理依赖、脚本和元数据
8. ├── pnpm-lock.yaml # pnpm包管理器的锁定文件,确保依赖版本一致性
9. ├── README.md # 项目说明文档
10. └── vite.config.js # Vite构建工具配置文件,定义打包和开发服务器设置
- 单页面运用(SPA)
⼀个Vue项⽬的内容都是通过单⼀⻚⾯(index.html )形成(文件入口)
<div id="app"></div>
<!-- html容器:Vue 会将整个应⽤的内容渲染到这个以app为根的元素内部 -->
<script type = "module" scr = "/scr/main.js" ></script>
<!-- 从这里引入一个vue实例 -->
- vue核心(创建项目自己就有了)
通过main.js创建一个vue实例,即:js对象
import { createApp } from 'vue'//使用vue自带函数createApp,这个函数表示在该应⽤实例中构建各种数据和⽅法
import App from './App.vue'//导入单文件组件
createApp(App).mount('#app')
// 将数据和⽅法运用到index.html的#app容器
将
- SFC单文件组件:每一个后缀
.vue文件- 包括组件逻辑(js)
<script> - 包括组件模板(html)
<template> - 包括组件样式(css)
<style>
- 包括组件逻辑(js)
- 响应式对象:能够通过 Vue 响应式系统追踪其变化,确保组件在数据变化时⾃动更新视图
- ref:将⼀个普通的JavaScript 值(数值、对象等)变为响应式对象
- vue组件构成
<script setup>
// export default{
// setup(){
// 语法糖忽略
import { ref } from 'vue'
//导入 Composition API:按需导入 ref、reactive 等函数
const count = ref(0)//响应式数据:使用 ref() 创建响应式变量count,通过 .value 访问值。
const isLoading = ref(false) // 创建布尔响应式变量可以动态修改后面的样式
//}
function add() {count.value++}
// return{count, isLoading, add}//语法糖忽略
// }
</script>
<!-- setup 语法糖:直接在 <script setup> 中编写逻辑,无需显式定义 setup() 函数。 -->
<template>
<button @click="count++">Count is: {{ count }}</button>
</template>
<style scoped>
button {
font-weight: bold;
}
</style>
<!-- scoped 样式:通过 <style scoped> 确保样式仅作用于当前组件 -->
- 插值表达式:在html里绑定显示vue实例中的变量或者方法(不可以是变量,函数声明)

<template>
<p>{{message}}</p>
</template>
<script setup>
import { ref } from 'vue';
const message = ref('Hello World');
</script>
-
常见
v-指令,见链接 -
ES6 引⼊了⼀种“⽤于把⽅法名直接赋给函数”的简写语法:忽略属性的冒号和function
-
选项式API:Vue2, 组合式API:vue3
-
组合式API语法糖(setup):

-
使⽤const定义ref 响应式对象,通过value 更改对象值
运用题
- 分别用内联样式和全局样式让如下代码的love变为非斜体字。(6分)
<p>I<em>love</em>you, just kidding!</p>
解答:font-style设置为normal
直接在 标签中添加 style 属性覆盖斜体
在

浙公网安备 33010602011771号