首页 > 其他分享 >HTML5新增标签及API

HTML5新增标签及API

时间:2023-12-20 16:01:22浏览次数:37  
标签:function 标签 表单 API grid HTML5 error

之前有一天看到了这样的一段代码,居然可以使用dom的id直接调用方法和获取属性,真是刷新了我的认知了。

<div>
   <p id="content">aa</p>
   <button onclick="console.log(content.innerText)">打印内容</button>
</div>

 点击按钮,控制台就可以打印出aa字符串

习惯写后端的我前端知识总是落后不知多少,花了一点时间,补充下HTML5新增的标签和API,顺便简单使用下之前学的grid布局。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      /* ----------布局--------- */
      .container {
        min-height: 100vh;
        height: auto;

        display: grid;
        grid-template-rows: 50px auto 25px;
        grid-template-columns: auto 150px;
        grid-template-areas:
          "header header"
          "main sidebar"
          "footer footer";
        grid-column-gap: 10px;
        grid-row-gap: 10px;
        grid-auto-flow: row;
        justify-content: stretch;
        align-content: stretch;
        justify-items: stretch;
        align-items: stretch;
      }
      .header {
        grid-area: header;
      }
      .sidebar {
        grid-column: 2 / 3;
        grid-row: 2 / 3;
      }
      .main {
        grid-area: main;
      }
      .footer {
        grid-area: footer;
      }

      /* -------页面样式------ */
      .header,
      .sidebar,
      .main,
      .footer {
        padding: 0.5rem;
      }
      ul li {
        padding: 0.25rem;
      }
      .flex-row {
        display: flex;
        flex-direction: row;
        list-style: none;
      }
      article {
        margin-bottom: 2rem;
      }
      dialog#test {
        width: 50vw;
        min-height: 30vh;
        padding: 1rem;
        margin: auto;
      }
      dialog#test:modal {
        background-color: rgb(160, 242, 242);
      }
      dialog#test::backdrop {
        background: rgba(0, 0, 0, 0.3);
      }
    </style>
  </head>
  <body>
    <div class="container">
      <!--header 规定文档或节的页眉 块级元素 -->
      <header class="header">
        <!--nav 定义导航链接 块级元素 -->
        <nav>
          <ul class="flex-row">
            <li><a href="#control">控件标签</a></li>
            <li><a href="#text">文本标签</a></li>
            <li><a href="#media">多媒体标签</a></li>
            <li><a href="#api">HTML5 API</a></li>
          </ul>
        </nav>
      </header>

      <!--aside 定义页面内容以外的内容,侧边栏 块级元素 -->
      <aside class="sidebar">
        <!--menu 列表或菜单 块级元素 -->
        <menu>
          <ul style="list-style: none">
            <li><a href="#control">控件标签</a></li>
            <li><a href="#text">文本标签</a></li>
            <li><a href="#media">多媒体标签</a></li>
            <li><a href="#api">HTML5 API</a></li>
          </ul>
        </menu>
      </aside>

      <!--main 规定文档的主内容 -->
      <main class="main">
        <!--article 定义文章 块级元素 -->
        <article id="control">
          <h2>控件标签</h2>

          <br />
          <!--section 定义文档中的节 块级元素 -->
          <section>
            <h3>meter</h3>
            <p style="color: blue">meter 定义已知范围内的标量测量 行内块标签</p>
            <meter min="0" max="100" value="50"></meter>
            <meter min="0" max="100" value="10" low="20" high="90"></meter>
            <meter min="0" max="100" value="10" low="20" high="70" optimum="85"></meter>
          </section>

          <br />
          <section>
            <h3>progress</h3>
            <p style="color: blue">progress 进度条 行内块标签</p>
            <progress max="100" value="10"></progress>
          </section>

          <br />
          <section>
            <h3>datails</h3>
            <p style="color: blue">datails 定义用户能够查看或隐藏的额外细节 块级标签</p>
            <details>
              <summary>摘要</summary>
              <p>内容</p>
            </details>
            <details open>
              <summary>摘要</summary>
              <p>内容</p>
            </details>
          </section>

          <br />
          <section>
            <h3>dialog</h3>
            <p style="color: blue">dialog 描述文档或者文档某个部分的细节 块级标签</p>
            <button onclick="test.showModal()">显示模态框</button>
            <dialog id="test">
              <form method="dialog" id="form">
                <h4>新增input类型</h4>
                email:<input type="email" name="email" /><small>表单提交时验证格式,输入为空则不验证</small><br />
                url:<input type="url" name="url" /><small>表单提交时验证格式,输入为空则不验证</small><br />
                number<input type="number" name="number" /><small>表单提交时验证格式,输入为空则不验证</small><br />
                search:<input type="search" name="search" /><small>表单提交时不验证格式</small><br />
                tel:<input type="tel" name="tel" /><small>表单提交时不验证格式</small><br />
                range:<input type="range" name="range" /><small>默认值为50,表单提交时不验证格式</small><br />
                color:<input type="color" name="color" /><small>默认值为黑色,表单提交时不验证格式</small><br />
                date:<input type="date" name="date" /><small>默认值为空,表单提交时不验证格式</small><br />
                month:<input type="month" name="month" /><small>默认值为空,表单提交时不验证格式</small><br />
                week:<input type="week" name="week" /><small>默认值为空,表单提交时不验证格式</small><br />
                time:<input type="time" name="time" /><small>默认值为空,表单提交时不验证格式</small><br />
                datetime-local:<input type="datetime-local" name="datetime-local" /><small>默认值为空,表单提交时不验证格式</small><br />

                <br />
                <h4>新增属性</h4>
                <input type="text" name="name" required autofocus placeholder="请输入用户名" /> <br />
                <input type="file" name="file[]" multiple accesskey="s" /><small>快捷键,alt+字母触发</small><br />
                <input list="cities" name="cities" /><br />
                <datalist id="cities">
                  <option value="BJ">北京</option>
                  <option value="SH">上海</option>
                </datalist>
              </form>
              <button value="ok" onclick="submitFormData()">确定</button>
              <button onclick="this.parentNode.close()">取消</button>
              <script>
                async function submitFormData() {
                  const formData = new FormData(document.querySelector("#form"));
                  for (let [name, value] of formData) {
                    console.log(name, value);
                  }
                  let response = await fetch("./demo.php", {
                    method: "post",
                    body: formData,
                  });
                  let res = await response.json();
                  console.log(res);
                }
              </script>
            </dialog>
          </section>
        </article>

        <article id="text">
          <h2>文本标签</h2>

          <br />
          <section>
            <h3>ruby</h3>
            <p style="color: blue">ruby标签 用于文本注音,搭配rt标签使用 都是行内元素</p>
            <ruby> 漢 <rt>Kan</rt> 字 <rt>ji</rt></ruby>
          </section>

          <br />
          <section>
            <h3>mark</h3>
            <p style="color: blue">mark标签 定义重要的或强调的文本 行内元素</p>
            <p><mark>HTML</mark>是一种<mark>超文本标记语言</mark></p>
          </section>
        </article>

        <article id="media">
          <h2>多媒体标签</h2>

          <br />
          <section>
            <h3>canvas</h3>
            <p style="color: blue">canvas 元素使用 JavaScript 在网页上绘制图像</p>
            <canvas id="myCanvas" width="200" height="100" style="border: 1px solid silver"></canvas>
            <script type="text/javascript">
              var c = document.getElementById("myCanvas");
              var cxt = c.getContext("2d");
              cxt.fillStyle = "#FF0000";
              cxt.fillRect(0, 0, 150, 75);
            </script>
          </section>

          <br />
          <section>
            <h3>svg</h3>
            <p style="color: blue">SVG 指可伸缩矢量图形 (Scalable Vector Graphics), 用于定义用于网络的基于矢量的图形</p>
            <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
              <polygon points="100,10 40,180 190,60 10,60 160,180" style="fill: lime; stroke: purple; stroke-width: 5; fill-rule: evenodd" />
            </svg>
          </section>

          <br />
          <section>
            <h3>figure</h3>
            <p style="color: blue">figure 规定自包含内容,比如图示、图表、照片、代码清单等 块级标签</p>
            <figure>
              <figcaption>图片</figcaption>
              <img src="../images/1.jpg" alt="" style="height: 100px" />
            </figure>
          </section>

          <br />
          <section>
            <h3>video</h3>
            <p style="color: blue">video标签 视频</p>
            <pre>
              muted:视频静音    
              loop:循环播放    
              autoplay:自动播放,只有设置muted才生效    
              poster:视频封面图片的url地址    
              preload:视频预加载    
                  preload:none 不预加载视频     
                  preload:metadata 预加载视频的元数据    
                  preload:auto 让浏览器自动选择    
              controls:显示视频控件的其它功能:如播放 进度条、音量大小、全屏化等功能    
              disablepictureinpicture:禁用 画中画 功能    
              controlslist:禁用视频控件的一些功能    
                  nodownload 不要视频下载按钮    
                  nofullscreen 不要视频全屏播放按钮    
                  noremoteplayback 不要远程回放按钮    
                  noplaybackrate 不要播放速度按钮    
            </pre>
            <video src="../images/1.jpg" controls muted autoplay preload="metadata" controlslist="nofullscreen,noremoteplayback,nodownload"></video>
            <video controls preload="metadata">
              <source src="../images/1.jpg" />
              <source src="../images/1.jpg" />
              <p>浏览器不支持视频播放,请下载最新浏览器</p>
            </video>
          </section>

          <br />
          <section>
            <h3>audio</h3>
            <p style="color: blue">audio标签 音频</p>
            <pre>
              muted:音频静音    
              loop:循环播放    
              autoplay:取决于浏览器    
              controls:显示音频控件的其它功能:如播放\进度条、音量大小等功能    
              preload:音频预加载    
                  preload:none 不预加载音频     
                  preload:metadata 预加载音频的元数据     
                  preload:auto 让浏览器自动选择     
            </pre>
            <audio src="../images/1.jpg"></audio>
            <audio controls preload="metadata">
              <source src="../images/1.jpg" />
              <source src="../images/1.jpg" />
              <p>浏览器不支持音频播放,请下载最新浏览器</p>
            </audio>
          </section>
        </article>

        <article id="api">
          <h2>HTML5 API</h2>
          <section>
            <h3>HTML5 地理定位</h3>
            <p style="color: blue">HTML5 Geolocation(地理定位)用于定位用户的位置</p>
            <p>位置:<span id="loc"></span></p>
            <button onclick="getLocation()"></button>
            <script>
              const locEl = document.querySelector("#loc");
              function getLocation() {
                if (navigator.geolocation) {
                  navigator.geolocation.getCurrentPosition(showPosition, showError);
                } else {
                  locEl.innerText = "Geolocation is not supported by this browser.";
                }
              }
              function showPosition(position) {
                locEl.innerText = "Latitude: " + position.coords.latitude + " , Longitude: " + position.coords.longitude;
              }
              function showError(error) {
                let error_msg = "";
                switch (error.code) {
                  case error.PERMISSION_DENIED:
                    error_msgL = "User denied the request for Geolocation.";
                    break;
                  case error.POSITION_UNAVAILABLE:
                    error_msg = "Location information is unavailable.";
                    break;
                  case error.TIMEOUT:
                    error_msg = "The request to get user location timed out.";
                    break;
                  case error.UNKNOWN_ERROR:
                    error_msg = "An unknown error occurred.";
                    break;
                }
                locEl.innerText = "error:" + error_msg;
              }
              getLocation();
            </script>
          </section>

          <br />
          <section>
            <h3>HTML5 拖放</h3>
            <p style="color: blue">
              拖放(Drag 和 Drop)是很常见的特性。它指的是您抓取某物并拖入不同的位置。<br />
              拖放是 HTML5 标准的组成部分:任何元素都是可拖放的。
            </p>
            <script>
              function allowDrop(ev) {
                ev.preventDefault();
              }

              function drag(ev) {
                ev.dataTransfer.setData("text", ev.target.id);
              }

              function drop(ev) {
                ev.preventDefault();
                var data = ev.dataTransfer.getData("text");
                ev.target.appendChild(document.getElementById(data));
              }
            </script>
            <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)" style="height: 100px; border: 1px solid silver"></div>
            <img id="drag1" src="../images/1.jpg" draggable="true" ondragstart="drag(event)" height="100" />
          </section>

          <br />
          <section>
            <h3>HTML 本地存储</h3>
            <p style="color: blue">
              通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储。<br />
              HTML 本地存储提供了两个在客户端存储数据的对象:<br />
              window.localStorage - 存储没有截止日期的数据<br />
              window.sessionStorage - 针对一个 session 来存储数据(当关闭浏览器标签页时数据会丢失)
            </p>
            <p><span id="name"></span></p>
            <script>
              // 存储
              localStorage.setItem("name", "rose");
              // 取回
              document.getElementById("name").innerHTML = localStorage.getItem("name");
              // 删除
              localStorage.removeItem("name");
            </script>
          </section>

          <br />
          <section>
            <h3>HTML5 应用程序缓存</h3>
            <p style="color: blue">使用应用程序缓存,通过创建 cache manifest 文件,可轻松创建 web 应用的离线版本。</p>
            <pre>
              HTML5 引入了应用程序缓存(Application Cache),这意味着可对 web 应用进行缓存,并可在没有因特网连接时进行访问。
              应用程序缓存为应用带来三个优势:
                离线浏览 - 用户可在应用离线时使用它们;
                速度 - 已缓存资源加载得更快; 
                减少服务器负载- 浏览器将只从服务器下载更新过或更改过的资源
              启用应用程序缓存,在文档的html标签中包含 manifest 属性:
              manifest 文件的建议文件扩展名是:".appcache"。
              注意:manifest 文件需要设置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置。
              manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。
              manifest 文件有三个部分:
                CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存 
                NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存 
                FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
            </pre>
            <p>完整的 Cache Manifest 文件</p>
            <pre>
              CACHE MANIFEST
              # 2012-02-21 v1.0.0
              /theme.css
              /logo.gif
              /main.js

              NETWORK:
              login.asp

              FALLBACK:
              /html/ /offline.html
            </pre>
          </section>

          <br />
          <section>
            <h3>HTML Web Workers</h3>
            <p style="color: blue">Web worker 是运行在后台的 JavaScript,不会影响页面的性能。</p>
            <p>Count numbers: <output id="worker_result"></output></p>
            <button onclick="startWorker()">Start Worker</button>
            <button onclick="stopWorker()">Stop Worker</button>
            <script>
              var w;

              function startWorker() {
                if (typeof Worker !== "undefined") {
                  if (typeof w == "undefined") {
                    w = new Worker("demo_workers.js");
                  }
                  w.onmessage = function (event) {
                    document.getElementById("worker_result").innerHTML = event.data;
                  };
                } else {
                  document.getElementById("worker_result").innerHTML = "Sorry! No Web Worker support.";
                }
              }

              function stopWorker() {
                w.terminate();
                w = undefined;
              }
            </script>
          </section>

          <br />
          <section>
            <h3>HTML Server-Sent 事件</h3>
            <p style="color: blue">Server-Sent 事件允许网页自动从服务器获得更新。</p>
            <div id="sse_result">a</div>
            <script>
              var source = new EventSource("demo_sse.php");
              source.onopen = function (event) {
                console.log("建立连接");
              };
              source.onmessage = function (event) {
                document.getElementById("sse_result").innerHTML = event.data + "<br>";
              };
              source.onerror = function (event) {
                console.log("error");
              };
            </script>
          </section>
        </article>
      </main>

      <!--footer 定义文档或节的页脚 块级元素 -->
      <footer class="footer">
        <menu style="text-align: center">
          <!--small 一小段文本 行内元素 -->
          <small>联系我们</small>
          <small>意见反馈</small>
        </menu>
      </footer>
    </div>
  </body>
</html>

 demo.php

<?php
if (isset($_FILES['file']['name'])) {
    foreach ($_FILES['file']['name'] as $index => $name) {
        if ($_FILES['file']['error'][$index] == 0) {
            move_uploaded_file($_FILES['file']['tmp_name'][$index], $name);
        }
    }
}

echo json_encode($_POST);

demo_sse.php

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();

demo_workers.js

var i = 0;

function timedCount() {
  i = i + 1;
  postMessage(i);
  setTimeout("timedCount()", 500);
}

timedCount();

 

标签:function,标签,表单,API,grid,HTML5,error
From: https://www.cnblogs.com/caroline2016/p/17916678.html

相关文章

  • APIView源码分析
    1.和CBV源码执行流程相似,请求来了先走路由层:path('books/',views.BookView.as_view()) 2.走APIView的as_view方法,代码如下:@classmethoddefas_view(cls,**initkwargs):view=super().as_view(**initkwargs)#调用父类的as_view,view还是View的as_view......
  • api熔断
    简介:在C#中,API熔断是指在使用某个API时,如果该API的响应时间或错误率超过了预设的阈值,系统会自动停止对该API的请求,并返回一个预设的错误信息,以防止由于API的故障或超时导致整个系统出现故障或降级。具体实现方式可以采用以下几种方法:计数器熔断:在客户端维护一个计......
  • 前端标签
    前端标签是用于描述网页结构和内容的标签。它们可以分为以下几类:文档声明、文档结构、功能标签这类标签用于描述文档的类型、结构和功能。例如:<!DOCTYPEhtml>:声明文档的类型<html>:定义文档的根元素<head>:定义文档的头部<body>:定义文档的主体<title>:定义文档的标题<link>:......
  • Midjourney模拟API生图调用
    目前Midjourney没有对外开放API接口,所以通过MJ自动化生图的主要方式是,集成Discord应用机器人,通过机器人与MJ机器人进行交互,并监听频道内的生图结果,最终拿到图片地址。简单介绍下步骤一、购买MJ账号二、获取账号Authorization在网页中向MidjourneyBot发送/imagine进行生图我......
  • API 接口设计最佳实践
    前言 最近团队内部在做故障复盘的时候发现有很多故障都是因为接口设计不当导致的,这里我就整理归纳一下在接口设计层面需要注意的地方。API接口设计Token设计 Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此To......
  • 支持可视化提取变量,Apipost配置变量不要太简单
    在调试接口时我们需要将响应结果中的某个字段配置为环境变量在其他接口中引用,之前在Apipost中需要配置脚本而在最近Apipost后执行操作中可以进行可视化的断言和变量提取,无需配置繁琐脚本。这里我们在登录接口下配置一条Token环境变量,在后执行脚本-添加操作项-选择提取变量 输......
  • 拼多多ID取商品详情API:电商行业的核心价值与实时数据获取策略
    一、引言在当今的电商行业中,数据是驱动业务决策和优化用户体验的关键因素。拼多多作为中国电商市场的主要参与者,其根据ID取商品详情原数据的API在电商行业中具有显著的重要性。本文将深入探讨这个话题,并介绍如何实现实时数据获取。二、拼多多根据ID取商品详情原数据API的重要性1.提......
  • html标签里面修改title样式
    默认的title不能设置样式,但我们可以通过js和css实现title的功能。CSS样式:<style>/*修改提示框*/#mytitle{position:absolute;color:#ffffff;max-width:160px;font-size:14px;padding:4px;background:rgba(......
  • 高德地图api报错 Get geolocation timeout.Get ipLocation failed.
    使用了https报错Getgeolocationtimeout.GetipLocationfailed. 报错是定位超时,由于JSAPI使用的是浏览器提供的定位服务,所以定位的准确度和成功率都会对浏览器有很大的依赖。由于Chrome在国内没有提供服务,因此使用Chrome定位服务的浏览器,比如:Chrome、火狐、安卓原生WebVie......
  • 腾讯云api-python调用
    https://cloud.tencent.com/document/product/1278/46716#-*-coding:utf-8-*-importhashlib,hmac,json,os,sys,timefromdatetimeimportdatetime#密钥参数#需要设置环境变量TENCENTCLOUD_SECRET_ID,值为示例的AKIDz8krbsJ5yK**********mLPx3EXAMPLEsecret_......