HTML5 —— 拖放、地理位置、视频和音频的基本使用

简介: HTML5 —— 拖放、地理位置、视频和音频的基本使用

拖放

拖放(Drag 和 drop)即抓取对象以后拖到另一个位置,是 HTML5 标准的组成部分。


注:


使元素可拖动,把 draggable 属性设置为 true

ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。

dataTransfer.setData() 方法设置被拖数据的数据类型和值

Text 是一个 DOMString 表示要添加到 drag object 的拖动数据的类型。值是可拖动元素的 id (“drag1”)。

ondragover 事件规定在何处放置被拖动的数据。默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置要通过调用 ondragover 事件的 event.preventDefault() 方法阻止对元素的默认处理方式

当放置被拖数据时,会发生 drop 事件。

dataTransfer.getData(“Text”) 方法获得被拖的数据

把被拖元素追加到放置元素(目标元素)中

(drop 事件的默认行为是以链接形式打开)

  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style type="text/css">
          #div1, #div2 {
              float:left; 
              width:100px; 
              height:100px; 
              margin:10px;
              padding:10px;
              border:1px solid #aaaaaa;
          }
          </style>
  </head> 
  <body>
      <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
          <img src="xxx.png" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="88"></div>
      <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
      <script>
          function allowDrop(ev) {
              ev.preventDefault();
          }
          function drag(ev) {
              ev.dataTransfer.setData("Text",ev.target.id);
          }
          function drop(ev) {
              ev.preventDefault();
              let data = ev.dataTransfer.getData("Text");
              ev.target.appendChild(document.getElementById(data));
          }
      </script>
  </body>
  </html>

https://www.bilibili.com/video/BV1hF411N7yE?t=1.2

拖放


Geolocation(地理定位)

Geolocation API 用于获得用户的地理位置。


注:


getCurrentPosition() 方法来获得用户的位置

coords.latitude 表示十进制的纬度

coords.longitude 表示十进制数的经度

错误代码:


Permission denied - 用户不允许地理定位

Position unavailable - 无法获取当前位置

Timeout - 操作超时

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <p id="demo">获取坐标</p>
        <button onclick="getLocation()">点我</button>
        <script>
            let x = document.getElementById("demo")
            function getLocation() {
                if(navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(showPosition, showError)
                } else {
                    x.innerHTML = "该浏览器不支持获取地理位置"
                }   
            }
            function showPosition(position) {
                x.innerHTML = '纬度:' + position.coords.latitude + '<br>经度:' + position.coords.longitude 
            }
            function showError(error)
            {
                switch(error.code) 
                {
                    case error.PERMISSION_DENIED:
                        x.innerHTML = "用户拒绝对获取地理位置的请求。"
                        break;
                    case error.POSITION_UNAVAILABLE:
                        x.innerHTML = "位置信息是不可用的。"
                        break;
                    case error.TIMEOUT:
                        x.innerHTML = "请求用户地理位置超时。"
                        break;
                    case error.UNKNOWN_ERROR:
                        x.innerHTML = "未知错误。"
                        break;
                }
            }
        </script>
    </body>
    </html>

位置没获取到:

de78e33bb91147fc9929687b9dc62d7b.png

百度位置:

  <!DOCTYPE html>
  <html>
  <head>
      <meta charset="utf-8" />
      <title></title>
      <!--引入百度 API,"ak=" 后面一串码是密钥,最好自己申请-->
      <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=7a6QKaIilZftIMmKGAFLG7QT1GLfIncg"></script>
  </head>
  <body>
      <div id="position"></div><br>
      <input type="button" onclick="getLocation()" value="点我" />
      <script type="text/javascript">
      var x = document.getElementById('position');
      function getLocation() {
          // 创建百度地理位置实例,代替 navigator.geolocation
          var geolocation = new BMap.Geolocation();
          geolocation.getCurrentPosition(function(e) {
              if(this.getStatus() == BMAP_STATUS_SUCCESS){
                  // 百度 geolocation 的经纬度属性不同,此处是 point.lat 而不是 coords.latitude
                  x.innerHTML = '纬度:' + e.point.lat + '<br/>经度:' + e.point.lng;
              } else {
                  x.innerHTML = 'failed' + this.getStatus();
              }
          });
      }
      </script>
  </body>
  </html>

位置成功获取:

7b9124680956468793bf59f6e7d47c95.png

Video 视频

注:controls:向用户显示控件,比如播放按钮

  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
  </head>
  <body>
      <video src="xxx.mp4" width="320" height="240"  controls></video>
  </body>
  </html>

9e9f9601c56342a59415d70a27d22de4.png

Audio 音频

audio:音频

  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
  </head>
  <body>
      <audio src="xxx.mp3" width="320" height="240"  controls></audio>
  </body>
  </html>

c72444112ed1407884f513fd60b9b87c.png

不积跬步无以至千里 不积小流无以成江海

相关文章
|
7月前
|
Web App开发 数据采集 移动开发
提升Selenium在Chrome上的HTML5视频捕获效果的五个方法
在Selenium中优化Chrome的HTML5视频捕获涉及更新Chrome和ChromeDriver、配置浏览器选项、使用代理IP、调整加载策略及确保安装了正确编解码器。例如,更新驱动程序,添加如`--autoplay-policy`和`--proxy-server`的命令行参数,使用代理以防止被封,设置页面加载策略为&#39;eager&#39;,并安装必要的编解码器来确保视频播放。代码示例展示了如何集成这些优化措施。
262 2
提升Selenium在Chrome上的HTML5视频捕获效果的五个方法
|
3月前
|
移动开发 JavaScript 前端开发
HTML5 Video(视频)2
HTML5 `&lt;video&gt;` 标签及其相关属性和方法简介:支持 MP4、WebM 和 Ogg 视频格式。通过 JavaScript 控制播放、暂停、加载及设置属性如音量、尺寸等。示例展示了如何使用 `play()`、`pause()` 方法及 `paused`、`width` 属性创建基本的播放/暂停和调整尺寸控件。
|
3月前
|
Web App开发 移动开发 iOS开发
HTML5 Audio(音频)
HTML5 Audio 标准允许网页直接播放音频文件,无需依赖插件。通过 `&lt;audio&gt;` 标签,开发者可以在网页中嵌入音频,支持多种格式如 MP3、WAV 和 Ogg。主流浏览器如 IE9+、Firefox、Chrome、Safari 和 Opera 均支持此功能,但不同浏览器对音频格式的支持存在差异。使用 `&lt;source&gt;` 标签可指定多个源文件,确保兼容性。
|
3月前
|
Web App开发 移动开发 iOS开发
HTML5 Video(视频)1
HTML5引入了&lt;video&gt;元素,为网页视频播放提供标准方法。它支持播放、暂停和音量控制,以及视频尺寸设置。主要浏览器如IE9+、Firefox、Opera、Chrome和Safari均支持此元素。&lt;video&gt;元素可通过多个&lt;source&gt;子元素链接不同格式的视频文件,以确保兼容性。当前支持的视频格式包括MP4、WebM和Ogg。
|
3月前
|
移动开发 HTML5
HTML5 拖放(Drag 和 Drop)2
为了实现元素的可拖放功能,首先需将元素的 `draggable` 属性设为 `true`。接着,使用 `ondragstart` 事件指定拖动开始时的动作,通过 `dataTransfer.setData()` 设置拖动数据的类型和值。`ondragover` 事件用于确定放置位置,并通过 `event.preventDefault()` 允许放置。最后,`ondrop` 事件触发时执行放置操作,使用 `dataTransfer.getData()` 获取拖动数据并将其追加到目标元素中。
|
3月前
|
Web App开发 移动开发 iOS开发
HTML5 拖放(Drag 和 Drop)1
HTML5拖放功能是标准的一部分,允许用户将任何元素从一个位置拖放到另一个位置。此功能在主流浏览器如IE、Firefox、Chrome和Safari中得到支持(注意Safari 5.1.2除外)。通过拖放,可以实现更直观的交互体验,例如将RUNOOB.COM图标拖入指定矩形框内。
|
4月前
|
移动开发 HTML5
在HTML5中嵌入视频和音频
【10月更文挑战第5天】在HTML5中嵌入视频和音频。
57 3
|
4月前
|
Web App开发 移动开发 JavaScript
HTML 音频(Audio)详解
HTML5通过`&lt;audio&gt;`元素为网页音频播放提供了丰富支持。本文将介绍其基本用法、属性(如`controls`、`autoplay`)、事件监听、格式兼容性(MP3、OGG、WAV、AAC),并提供JavaScript控制示例。此外,还将讨论优化技巧,如使用CDN、懒加载及提升用户体验的方法。
|
5月前
|
移动开发 编解码 监控
HTML5 Video(视频)作为背景的优化方案
使用 HTML5 `&lt;video&gt;` 标签作为网页背景视频可以提升视觉效果,但需优化以确保性能和用户体验。主要方法包括:选择合适的视频格式(MP4、WebM、Ogg)和分辨率(720p 或更低),压缩文件大小,确保视频静音和循环播放,使用 CSS 设置全屏样式,根据设备和网络条件加载视频或静态图像,使用 `playsinline` 属性和延迟加载技术提高性能,确保无障碍性,并监控页面加载时间。合理应用背景视频可增强网站视觉效果而不影响用户体验。
|
5月前
|
移动开发 编解码 前端开发
HTML5 <video>视频详解
HTML5引入了内置的`&lt;video&gt;`标签,简化了网页中视频的嵌入与播放。本文详细介绍了HTML5视频的基本语法、常用属性(如controls、autoplay等)、示例代码及使用注意事项,包括浏览器兼容性、跨域请求处理和响应式设计。通过JavaScript还可实现对视频播放的动态控制。掌握这些技巧,有助于提升网站的多媒体体验。

热门文章

最新文章