4月21日 web学习笔记
一、响应式设计与移动端优化
响应式设计原则
视口设置:使用 。
弹性布局:使用百分比、flexbox 和 grid 实现弹性布局。
媒体查询:根据设备屏幕大小调整样式。
示例:
css
/* 基础样式 */
.container {
width: 100%;
padding: 0 15px;
}
/* 平板设备 */
@media (min-width: 768px) {
.container {
max-width: 750px;
margin: 0 auto;
}
}
/* 桌面设备 */
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
移动端优化
触摸事件:使用 touchstart、touchmove 和 touchend。
图片优化:使用响应式图片和现代格式(如 WebP)。
性能优化:减少资源加载,使用懒加载技术。
框架与工具
Bootstrap:响应式设计框架。
Tailwind CSS:实用类优先的 CSS 框架。
示例(Bootstrap):
HTML
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
二、Web 表单与用户交互
表单验证
HTML5 验证:使用 required、pattern 等属性。
JavaScript 验证:自定义验证逻辑。
示例:
HTML
表单提交与处理
AJAX 提交:异步提交表单。
文件上传:使用 和 FormData。
示例:
JavaScript
document.getElementById('userForm').addEventListener('submit', async function(e) {
e.preventDefault();
const formData = new FormData(this);
try {
const response = await fetch('/api/submit-form', {
method: 'POST',
body: formData,
});
const result = await response.json();
alert('表单提交成功: ' + result.message);
} catch (error) {
console.error('表单提交失败:', error);
}
});
表单库(React Hook Form)
安装:
bash
npm install react-hook-form
示例:
jsx
import { useForm } from 'react-hook-form';
function UserForm() {
const { register, handleSubmit, formState: { errors } } = useForm();
const onSubmit = data => console.log(data);
return (
<form onSubmit={handleSubmit(onSubmit)}>
<div className="form-group">
<label>用户名</label>
<input
{...register('username', { required: '用户名必填', minLength: { value: 3, message: '用户名至少需要3个字符' } })}
className={`form-control ${errors.username ? 'is-invalid' : ''}`}
/>
{errors.username && <div className="invalid-feedback">{errors.username.message}</div>}
</div>
<div className="form-group">
<label>邮箱</label>
<input
{...register('email', { required: '邮箱必填', pattern: { value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i, message: '无效的邮箱地址' } })}
className={`form-control ${errors.email ? 'is-invalid' : ''}`}
/>
{errors.email && <div className="invalid-feedback">{errors.email.message}</div>}
</div>
<button type="submit" className="btn btn-primary">提交</button>
</form>
);
}
export default UserForm;
三、Web 无障碍(Accessibility)
无障碍设计原则
WCAG(Web Content Accessibility Guidelines):Web 内容无障碍设计指南。
ARIA(Accessible Rich Internet Applications):增强无障碍支持的属性。
实现无障碍设计
语义化 HTML:使用语义化标签(如