当前位置: 首页 > news >正文

HTML笔记()蜘蛛纸牌之卡牌拖拽

效果在这里插入图片描述

代码

<!DOCTYPE html>
<html><head><style>body{display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #2b2b2b;position: relative;}.card{/*设置卡牌的外观*/width: 150px;height: 200px;background-color: #00ffcc;border-radius: 10px;/*为卡牌中间的图案设置格式*/font-size: 100px;font-weight: bold;display: flex;justify-content: center;align-items: center;/*方便左上角和右下角的数字定位*/position: absolute;/*避免选择到文本*/user-select: none;}/*设置卡牌两个对角的数字格式*/.pos-TL{position: absolute;font-size: 20px;top: 5px;left: 5px;}.pos-BR{position: absolute;font-size: 20px;bottom: 5px;right: 5px;transform: rotateZ(180deg);}</style></head><body><div id="card" class="card">♠️<div class="card-num pos-TL">6</div><div class="card-num pos-BR">6</div></div><script>let offsetX, offsetY, isDragging = false;const card = document.getElementById("card");card.addEventListener("mousedown", (e) => {isDragging = true;const cardrect = card.getBoundingClientRect(); // 每次拖动开始时更新位置offsetX = e.clientX - cardrect.left;offsetY = e.clientY - cardrect.top;});document.addEventListener("mousemove", (e) => {if (isDragging) {card.style.left = `${e.clientX - offsetX}px`;card.style.top = `${e.clientY - offsetY}px`;}});document.addEventListener("mouseup", () => {isDragging = false;});</script></body>
</html>

总结

  • const只能申明单个变量,否则报错
<script>const offsetX,offsetY = false;//❌let offsetX,offsetY = false //✅
</script>
  • 不要实时获取的值赋给其他变量
cardrect = card.getBoundingClientRect();\\之前写了这句,只会获得点击时候的鼠标位置,而无法获取到拖拽过程中的鼠标位置
  • 忘记在<div class = "card">里添加id="card"
  • 属性为absolute的元素的定位不是取决于离他最近的含有relative的父元素,而是取决于离他最近的还有position的父元素。所以我们的代码里既能让card相对body移动,又能让cardnum相对card进行定位。

http://www.mrgr.cn/news/79258.html

相关文章:

  • Linux24.04 安装企业微信
  • Ruby On Rails 笔记5——常用验证下
  • 路径规划 | 改进的人工势场法APF算法进行路径规划(Matlab)
  • 【后端面试总结】HTTPS工作原理详解
  • python脚本将多个txt文件的内容合并为一个
  • Ubuntu 22.04安装Nessus(离线激活模式)
  • 基于STM32F4实现步进电机闭环控制实现(无PID)
  • python 装饰器学习与实践
  • javaScriptDOM获取
  • 源码分析之Openlayers图层篇概览
  • OpenBayes贝式计算创始人受邀参加第九届中国开源年会,分享 AI4S 前沿洞察
  • Elasticsearch 入门
  • 每日速记10道MySQL面试题15
  • UE4_材质节点_有关距离的_流体模拟
  • dbus接口方法的variant类型传参详解
  • hadoop单机安装
  • 二、部署docker
  • 【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)
  • 工作:SolidWorks从3D文件导出2D的DWG或DXF类型文件方法
  • Qt Chart 模块化封装曲线图
  • 【CSS in Depth 2 精译_068】11.2 颜色的定义(下):CSS 中的各种颜色表示法简介
  • Linux镜像文件制作
  • Node-RED系列教程-生成exe
  • 构建个人大模型问答助手(基于Streamlit +gpt-4o/o1-mini):全面解析与实现
  • 小程序 —— Day1
  • 青岛鼎信Java开发面试题及参考答案(3万字长文,多张原理图)