Skip to content

HTML基础精讲 📚

1. 元素类型详解 🔍

块级元素 (Block Elements)

常见元素: div, h1-h6, p, ul, ol, li

  • 📌 特点:
    • 独占一行
    • 可设置宽高、内外边距
    • 默认宽度为父容器100%
    • 可包含其他块级或行内元素
    • ⚠️ 注意: h1-h6p等文字类元素内不能嵌套块级元素

行内元素 (Inline Elements)

常见元素: span, a, strong, em, i, b

  • 📌 特点:
    • 同行显示
    • 不可直接设置宽高
    • 宽度由内容决定
    • 只能包含文本或其他行内元素
    • ⚠️ 特例: <a>标签可以包含块级元素,但建议转换为块级

行内块元素 (Inline-block Elements)

常见元素: img, input, td

  • 📌 特点:
    • 同行显示但可设置宽高
    • 元素间存在间隙
    • 默认宽度由内容决定
    • 可设置内外边距

2. HTML5语义化 🎯

语义化布局示例

html
<header>
  <nav>导航栏</nav>
</header>

<main>
  <article>
    <h1>文章标题</h1>
    <section>
      <h2>章节标题</h2>
      <p>内容...</p>
    </section>
  </article>
  
  <aside>侧边栏内容</aside>
</main>

<footer>页脚内容</footer>

3. 现代HTML特性 🌟

响应式图片

html
<picture>
  <source 
    media="(min-width: 800px)"
    srcset="large.webp"
    type="image/webp">
  <source 
    media="(min-width: 400px)"
    srcset="medium.webp"
    type="image/webp">
  <img 
    src="small.jpg" 
    alt="描述"
    loading="lazy"
    decoding="async">
</picture>

现代表单控件 📝

html
<form>
  <!-- 自动完成 -->
  <input 
    type="text"
    autocomplete="username"
    inputmode="text">
  
  <!-- 日期时间 -->
  <input type="datetime-local">
  
  <!-- 颜色选择 -->
  <input type="color">
  
  <!-- 范围滑块 -->
  <input 
    type="range"
    min="0"
    max="100"
    step="1">
    
  <!-- 文件上传 -->
  <input 
    type="file"
    accept="image/*"
    multiple>
</form>

4. HTML高级特性 🔥

Dialog对话框

html
<dialog id="myDialog">
  <h2>对话框标题</h2>
  <p>对话框内容...</p>
  <button onclick="this.closest('dialog').close()">
    关闭
  </button>
</dialog>

<button onclick="myDialog.showModal()">
  打开对话框
</button>

自定义数据属性

html
<div 
  data-user-id="123"
  data-role="admin">
  用户信息
</div>

<script>
  const div = document.querySelector('div');
  console.log(div.dataset.userId); // "123"
  console.log(div.dataset.role);   // "admin"
</script>

5. 性能优化技巧 ⚡

资源加载优化

html
<!-- 预加载关键资源 -->
<link rel="preload" href="style.css" as="style">
<link rel="preload" href="main.js" as="script">

<!-- 预连接到重要域名 -->
<link rel="preconnect" href="https://api.example.com">

<!-- DNS预解析 -->
<link rel="dns-prefetch" href="https://api.example.com">

脚本加载优化

html
<!-- 异步加载不阻塞渲染 -->
<script async src="analytics.js"></script>

<!-- 延迟加载直到HTML解析完成 -->
<script defer src="app.js"></script>

<!-- 模块化脚本 -->
<script type="module" src="module.js"></script>

6. 可访问性最佳实践 ♿

ARIA属性使用

html
<button 
  aria-label="关闭菜单"
  aria-expanded="false">
  <span class="icon">×</span>
</button>

<div 
  role="alert"
  aria-live="polite">
  操作成功!
</div>

7. SEO优化技巧 🎯

Meta标签优化

html
<!-- 基本SEO meta -->
<meta name="description" content="页面描述">
<meta name="keywords" content="关键词1,关键词2">

<!-- Open Graph协议 -->
<meta property="og:title" content="标题">
<meta property="og:description" content="描述">
<meta property="og:image" content="缩略图URL">

<!-- Twitter Cards -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="标题">

8. 开发注意事项 ⚠️

  1. 始终声明文档类型和字符编码
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
  1. 表单安全性
  • 使用CSRF令牌
  • 实施内容安全策略(CSP)
  • 使用HTTPS
  • 添加适当的表单验证
  1. 跨浏览器兼容性
  • 使用现代特性时注意提供降级方案
  • 测试主流浏览器
  • 使用特性检测而非浏览器检测
  1. 性能考虑
  • 压缩资源
  • 使用CDN
  • 实施缓存策略
  • 优化关键渲染路径
  1. 代码规范
  • 保持代码缩进一致
  • 使用语义化命名
  • 添加适当的注释
  • 遵循HTML5规范

</rewritten_file>