拖放与地理定位

HTML5 教程 · 第 8 章 · 6 次浏览

HTML5 的拖放(Drag and Drop)允许用户拖动页面元素到指定区域,常用于文件上传、排序、看板等交互。地理定位(Geolocation)可以获取用户设备的位置信息,做地图、附近门店这类功能。

拖放的基本流程

  1. 给被拖元素设置 draggable="true"
  2. 监听它的 dragstart 事件,用 dataTransfer.setData 携带数据
  3. 在目标区域监听 dragover(要 preventDefault 才能放)和 drop 事件

地理定位

navigator.geolocation.getCurrentPosition 获取位置,成功回调里能拿到经纬度。注意:浏览器会弹窗请求用户授权,且必须 HTTPS 环境下才能使用。

代码示例

<div id="box" draggable="true"
     style="width:120px;padding:16px;background:#7cb342;color:#fff;border-radius:8px;text-align:center;">
  拖动我
</div>
<div id="target" style="margin-top:20px;padding:40px;border:2px dashed #999;border-radius:8px;">
  放到这里
</div>

<script>
var box = document.getElementById("box");
var target = document.getElementById("target");

box.addEventListener("dragstart", function (e) {
    e.dataTransfer.setData("text/plain", "来自盒子的数据");
});

target.addEventListener("dragover", function (e) {
    e.preventDefault();
});

target.addEventListener("drop", function (e) {
    e.preventDefault();
    target.textContent = "收到:" + e.dataTransfer.getData("text/plain");
    target.style.background = "#f1f8e9";
});

// 获取位置
navigator.geolocation.getCurrentPosition(function (pos) {
    console.log("经度:", pos.coords.longitude, "纬度:", pos.coords.latitude);
});
</script>
📚 HTML 标签速查
常用条目速查,完整版见对应教程章节。可复制代码到在线运行中测试。
写法 / 语法作用
&lt;h1&gt;-&lt;h6&gt;标题,h1 最高,每页只用一个 h1
&lt;p&gt;段落,自动加前后间距
&lt;a href=""&gt;链接,href 是目标地址
&lt;img src="" alt=""&gt;图片,src 地址,alt 替代文字
&lt;ul&gt; / &lt;li&gt;无序列表
&lt;ol&gt; / &lt;li&gt;有序列表,数字编号
&lt;dl&gt; / &lt;dt&gt; / &lt;dd&gt;自定义列表:术语 + 说明
&lt;table&gt; / &lt;tr&gt; / &lt;td&gt; / &lt;th&gt;表格:行 / 单元格 / 表头
&lt;form action="" method=""&gt;表单,action 提交地址,method 提交方式
&lt;input type=""&gt;输入控件,type 有 text/password/email/number 等
&lt;textarea&gt;多行文本输入
&lt;select&gt; / &lt;option&gt;下拉框及选项
&lt;button type="submit"&gt;按钮,submit 提交表单
&lt;strong&gt; / &lt;em&gt;加粗(重要)/ 斜体(强调)
&lt;div&gt; / &lt;span&gt;区块容器 / 行内容器
&lt;header&gt; &lt;nav&gt; &lt;main&gt;语义化:页眉 / 导航 / 主体
&lt;section&gt; &lt;article&gt; &lt;aside&gt;语义化:分节 / 独立内容 / 侧栏
&lt;footer&gt;页脚:版权、备案
&lt;video&gt; / &lt;audio&gt;HTML5 视频 / 音频,加 controls 显示控制条
&lt;iframe src=""&gt;嵌入其他网页
&lt;!-- 注释 --&gt;HTML 注释,不显示在页面
&lt;br&gt; / &lt;hr&gt;换行 / 水平分割线
&lt;pre&gt;保留空格和换行,原样显示
&lt;blockquote&gt; / &lt;q&gt;块级引用 / 行内引用
&lt;figure&gt; / &lt;figcaption&gt;图文组合及说明