十八、H5常用的新增标签

269 阅读6分钟

一、H5简介

1. 什么是H5?

2. H5的优势

  1. 针对javascript新增了很多可操作的接口
  2. 新增了多媒体语义化标签,可以很好地替代flash
  3. 更加注重语义化,对搜索引擎(seo)比较友好。
  4. 可移植性好,可以大量应用在移动设备上。

HTML5兼容性

  • 支持 Chrome、Safari、Opera、Firefox等主流浏览器。

IE必须9以上版本才支持HTML5,且仅仅支持部分新特性。

二、新增的标签

1. 语义化标签

标签名语义单/双标签
header整个页面的头部
footer整个页面的底部
nav导航
article文章、帖子、杂志、新闻、博客、评论
section页面中的某段文字
aside侧边栏
main文章的主要内容
hgroup包裹连续的标题,比如文章的标题、副标题的组合。
<!DOCTYPE html>
<html lang="zn-CH">
<head>
    <meta charset="UTF-8">
    <title>Rock学前端</title>
    <style>

    </style>
</head>
<body>
<!--顶部导航区-->
<header>
    <h1>Rock 学前端</h1>
</header>
<hr>
<!--主导航-->
<nav>
    <a href="#">主页</a>
    <a href="#">百度</a>
    <a href="#">购物车</a>
    <a href="#">我的</a>
</nav>
<!--主要内容区-->
<div class="main">
    <article>
        <h2>《javascript 高级教程》</h2>
        <section>
            <h3>第一种方式:</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet iusto laborum optio! A accusamus
                blanditiis
                eius et expedita, ipsam iste modi necessitatibus quas quasi quia recusandae saepe similique tempora
                temporibus?</p>
        </section>
        <h2>《javascript 高级教程》</h2>
        <section>
            <h3>第一种方式:</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet iusto laborum optio! A accusamus
                blanditiis
                eius et expedita, ipsam iste modi necessitatibus quas quasi quia recusandae saepe similique tempora
                temporibus?</p>
        </section>
    </article>
    <aside>
        <nav>
            <ul>
                <li><a href="#">个人信息</a></li>
                <li><a href="#">设置</a></li>
                <li><a href="#">退出登录</a></li>
                <li><a href="#">测试</a></li>
            </ul>
        </nav>
    </aside>
</div>
<hr>
<footer>
    <ul>
        <li><a href="#">页脚链接</a></li>
        <li><a href="#">页脚链接</a></li>
        <li><a href="#">页脚链接</a></li>
    </ul>
</footer>
</body>
</html>

2. 状态标签

2.1 meter

语义:定义已知范围的标准度量,也被称为gauge(尺度),双标签。 用于电量、磁盘容量等。

属性描述
min数值最小值
max数值最大值
value[min,max]当前的值
optimum[min,max]最优值
low[min,max]规定的低值
high[min,max]规定的高值

2.2 progress

语义:用于描述某个工程的进度。

属性描述
max数值当前进度的最大值
value0-max进度的当前值

<span>手机电量</span>
<meter max="100" min="0" value="19" low="20" high="80" optimum="90"></meter>
<br>
<span>当前进度</span>
<progress max="100" value="60"></progress>


img_1.png

3. 列表标签

语义:用于数据列表相关的操作。

标签名语义
datalist用于搜索框的关键字提示, 添加一个 id ,在input框中使用list属性指向该id
details用于展示问题和答案,对专有名词将进行解释
summary放在details中,用于制定名词的标题

3.1 datalist

用于搜索框的关键字提示, 添加一个 id ,在input框中使用list属性指向该id


<form action="#">
    <input type="text" list="myData">
    <button>搜索</button>
</form>
<datalist id="myData">
    <option value="周杰伦">周杰伦</option>
    <option value="周冬雨">周冬雨</option>
    <option value="马冬梅">马冬梅</option>
</datalist>

img_2.png

3.2 details 和 summary


<details>
    <summary>
        总结
    </summary>
    <p>好好学习 天天向上</p>
</details>

运行效果:

img_3.png

4. 文本标签

4.1 文本标记 mark

W3c推荐用于标注搜索结果中的关键文字

4.2 文本注音 ruby 和 rt 标签


<ruby>
    <span>魑魅魍魉</span>
    <rt>chī mèi wǎng liǎng</rt>
</ruby>

运行效果

img_4.png

5. 表单相关的新增

5.1 palceholder

用于提示用户输入的内容

5.2 require

表示该输入位必填项

5.3 autofocus

自动获得焦点

5.4 autocomplate

  1. 可选值on off*用于记录历史记录
  2. on 必须要浏览器开启地址和其它信息的记录的功能
  3. 不能用在密码上,也不能用在单选多选和多行输入上

5.5 pattern

  1. 用于匹配正则,值是一个正则表达式的字符串
  2. 需要加上require才能生效
  3. 多行输入不能使用
<!DOCTYPE html>
<html lang="zn-CH">
<head>
    <meta charset="UTF-8">
    <title>Rock学前端</title>
    <style>
        .container {

        }
    </style>
</head>
<body>
<div class="container">
    <form action="#">
        账号:<input type="text" name="account" placeholder="账号" autofocus required autocomplete="off">
        <!--autocomplete
            1. 可选值 on off 用于记录历史记录
            2. on必须要浏览器开启地址和其它信息的记录的功能
            3. 不能用在密码上,也不能用在单选多选和多行输入上
         -->
        <br>
        <!--autofocus会写几次会聚焦到第一个身上-->
        密码:<input
            type="password"
            name="pwd"
            placeholder="密码"
            autofocus
            required
            pattern="\w{6}"
            value="abc_12"
    >
        <!--    字母数字下划线 6 位-->
        <!--
        pattern:
            1. 用于匹配正则,值是一个正则表达式的字符串
            2. 需要加上require才能生效
        -->
        <br>
        性别:
        <input type="radio" name="gender" value="male" required><input type="radio" name="gender" value="female" required><br>
        爱好:
        <input type="checkbox" name="hobby" value="smoke" required>抽烟
        <input type="checkbox" name="hobby" value="drink">喝酒
        <input type="checkbox" name="hobby" value="read">看书
        <br>
        其它
        <textarea name="other" placeholder="请输入密码" required> </textarea>
        <br>
        <button>提交</button>
    </form>
</div>
</body>
</html>

6. 表单type属性新增的值

**注意:**只有同时配合required使用的时候,输入的内容为空的时候才会被阻止。

6.1 email 用于提交邮箱


<form action="#">
    <input type="email">
    <button>提交</button>
</form>

img_8.png

6.2 url 用于提交网址

<input type="url">
<button>提交</button>

img_6.png

6.3 number 用于提交数字

<input type="number" step="2" max="80" min="20">
<button>提交</button>
  1. step = 2 只能使用 0,2,4,,6.....
  2. max 定义输入的最大值
  3. min定义输入的最小值

img_6.png

6.4 search 搜索框

搜索框:<input type="search">
<button>提交</button>

img_9.png

6.5 scroll bar

滚动条:<input type="range" name="range" max="10" min="0" value="3">
<button>提交</button>

img_10.png

6.6 拾色器

拾色器:<input type="color" name="color">
<button>提交</button>

img_10.png

6.7日期选择器

日期选择器:<input type="date" name="data">
<br>
月份:<input type="month" name="month">
<br>
周:<input type="week" name="week">
<br>
时间:<input type="time" name="time">
<br>
日期加时间:<input type="datetime-local" name="date-detail">
<button>提交</button>

img_10.png

6.8 novalidate

用法:在form 表单上加上改属性可以让表单不再进行表单验证


<form action="#" novalidate>
    <input type="text" readonly value="123">
</form>

7.新增的视频标签

  1. controls 出现控制的按钮
  2. loop 循环播放
  3. muted 静音
  4. autoplay 只有静音才能自动播放
  5. preload 预加载
    • auto:浏览器自己协调,受到网速等限制,
    • none:不进行加载
    • metadata:基本信息,比如总时长
  6. poster 视频加载前显示的封面,比例最好一样
  7. src 视频地址
  8. type 视频格式 视频格式:mp4,webm,ogg

<video
        src="./小电影.mp4"
        controls
        muted
        poster="./封面.png"
        preload="auto"
        autoplay
        width="600">
</video>

8.新增的音频标签

  1. controls 出现控制的按钮
  2. autoplay 自动播放
  3. loop 循环播放
  4. preload 预加载
    • auto:浏览器自己协调,受到网速等限制,
    • none:不进行加载
    • metadata:基本信息,比如总时长
  5. src 音频地址

<audio
        src="小曲.mp3"
        controls
        autoplay
        loop>
</audio>

9. 新增的全局属性

  1. contenteditable 是否可编辑
<!DOCTYPE html>
<html lang="zn-CH">
<head>
    <meta charset="UTF-8">
    <title>Rock学前端</title>
    <style>
        .box1{
            width: 500px;
            height: 300px;
            border: 1px solid black;
        }
    </style>
</head>
<body>
<div class="box1" contenteditable="true">Lorem ipsum dolor sit amet.</div>
</body>
</html>

img_13.png

可以发现输入框触发了输入功能

  1. spellcheck 是否检查拼写,对元素的语法进行拼写检查,需要同时打开浏览器的拼写检查功能。
  2. draggable 是否可拖动
<div class="box2 box" draggable="true" ondragend="test(event)">Lorem ipsum dolor sit amet.</div>
<script>
    function test(e) {
        console.log(e.target.innerHTML);
        console.log(e.x);
    }
</script>
  1. hidden 是否隐藏: 直接在元素身上使用可以隐藏元素。(不占位)
  2. data-* 存储页面的私有定制数据(私有定制的属性)
<div class="data-a"></div>
<div class="data-b"></div>
<div class="data-c"></div>
  1. contextmenu 右键菜单 显示右键菜单 参考文章: www.zhihu.com/question/58…
<!DOCTYPE html>
<html lang="zn-CH">
<head>
    <meta charset="UTF-8">
    <title>Rock学前端</title>
    <style>
        #custom-menu {
            display: none;
            position: absolute;
            background-color: #fff;
            border: 1px solid #ccc;
        }
        #custom-menu li {
            padding: 8px;
            cursor: pointer;
        }
        #custom-menu li:hover {
            background-color: #f5f5f5;
        }
        .content {
            width: 150px;
            height: 60px;
            background-color: #eee;
        }

    </style>
</head>
<body>
<div>
    <div class="content" contextmenu="custom-menu">右键点击此处</div>
    <ul id="custom-menu">
        <li>菜单项 1</li>
        <li>菜单项 2</li>
        <li>菜单项 3</li>
    </ul>
    <script>
        document.querySelector(".content").addEventListener('contextmenu', function(e) {
            // 取消默认的右键菜单
            e.preventDefault();
            // 获取自定义菜单元素
            var menu = document.querySelector('#custom-menu');
            // 设置菜单位置
            menu.style.left = e.clientX + 'px';
            menu.style.top = e.clientY + 'px';
            // 显示菜单
            menu.style.display = 'block';
        });

        document.addEventListener('click', function() {
            // 点击页面其他地方,隐藏自定义菜单
            document.querySelector('#custom-menu').style.display = 'none';
        });
    </script>
</div>
</body>
</html>

image.png