Bootstrap

html标准化使用

1. 使用语义化 HTML 来提高 SEO 和可访问性

语义化 HTML 可以帮助搜索引擎和辅助技术(ARIA)更好地理解内容。

常用的语义化标签,有

  • • 布局 <header> <footer> <main> <aside> <nav>

  • • 内容 <article> <section>

  • • 结构 <details> <summary>

  • • 图片 <figure> <figcaption>

  • • 表单 <form>

  • • 标记 <mark>

  • • 时间 <time>

  • • 等等……

示例如下,

<article>
    <header>
        <h1>文章标题</h1>
        <p>由<a href="#author">John Doe</a>发布于 <time datetime="2024-12-21">2024年12月21日</time></p>
    </header>
    <section>
        <h2>章节标题</h2>
        <p>这是章节内的一个段落。</p>
    </section>
    <footer>
        <p><small>&copy; 2024 Example Corp.</small></p>
    </footer>
</article>

2. 利用 <details> 和 <summary> 标签实现可折叠内容

这会创建可展开或折叠的交互式内容。

简单的场景,无需 JavaScript 即可实现点击展开和收拢。

<details>
    <summary>点击展开</summary>
    <p>这是可以展开或折叠的内容。</p>
</details>

3. 结合 picture 元素实现响应式图像

通过使用不同的图像源来增强不同设备上的图像加载。

<picture>
    <source media="(max-width: 799px)" srcset="small-image.jpg">
    <source media="(min-width: 800px)" srcset="large-image.jpg">
    <img src="default-image.jpg" alt="图像描述">
</picture>

4. 使用 input[type="range"] 实现滑块控件

非常适合用于设置或任何需要滑块的数字输入。

<label for="volume">音量:</label>
<input type="range" id="volume" name="volume" min="0" max="100">

5. 使用 datalist 元素实现预定义选项

通过提供建议但不限制选择来增强表单的可用性。

<label for="browser">选择你的浏览器:</label>
<input list="browsers" name="browser" id="browser">
<datalist id="browsers">
    <option value="Chrome">
    <option value="Firefox">
    <option value="Safari">
    <option value="Edge">
</datalist>

6. 为链接添加 download 属性实现文件下载

明确表示点击链接将下载文件而不是导航。

<a href="example.pdf" download="MyDocument">下载PDF</a>

7. 使用 input[type="color"] 实现颜色选择器

让用户选择颜色的一种简单方法。

<label for="colorPicker">选择一个颜色:</label>
<input type="color" id="colorPicker" name="colorPicker" value="#ff0000">

8. 实现 progress 来显示进度

对于耗时的操作(如文件上传或处理)很有用。

<label for="file">上传文件:</label>
<progress id="file" value="70" max="100">70%</progress>

9. 添加 hidden 属性用于内容管理

这可以隐藏不应立即显示但可能对 JavaScript 操作有用的内容。

<p hidden>这段段落被隐藏了,但可以使用 JavaScript 显示。</p>

10. 使用 template 实现可重用内容

该元素允许你定义可重用的内容,默认情况下不会渲染,但可以使用 JavaScript 实例化。

<template id="product-template">
    <div class="product">
        <h3 class="product-name"></h3>
        <p class="product-price"></p>
    </div>
</template>

<script>
    const template = document.getElementById('product-template');
    const clone = template.content.cloneNode(true);
    clone.querySelector('.product-name').textContent = '产品名称';
    clone.querySelector('.product-price').textContent = '$99.99';
    document.body.appendChild(clone);
</script>
;