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

做视频上传多少个网站百度网页推广费用

做视频上传多少个网站,百度网页推广费用,隐形眼镜网站开发的经济效益,即时通讯网站开发源码在前端开发中&#xff0c;实现一个可拖动的固定位置 <div>&#xff0c;并且根据拖动的状态控制其显示和隐藏&#xff0c;同时在特定条件下显示悬浮按钮&#xff0c;涉及以下技术和原理&#xff1a; 技术细节和实现步骤&#xff1a; 1. HTML 结构&#xff1a; <!DOC…

在前端开发中,实现一个可拖动的固定位置 <div>,并且根据拖动的状态控制其显示和隐藏,同时在特定条件下显示悬浮按钮,涉及以下技术和原理:

技术细节和实现步骤:

1. HTML 结构:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Draggable Fixed Div with Auto Hide and Floating Button</title>
<style>/* CSS 样式,定义拖拽元素和悬浮按钮的样式 */
</style>
</head>
<body><!-- 拖拽的固定位置的 div -->
<div id="draggable"><p>Drag me!</p><button>Click me</button>
</div><!-- 默认显示的悬浮按钮 -->
<div id="dragButton">Show</div><!-- JavaScript 脚本,实现拖拽、自动隐藏和按钮显示逻辑 -->
<script>// JavaScript 代码部分
</script></body>
</html>

2. CSS 样式:

#draggable {width: 200px;height: 200px;background-color: #ccc;position: fixed;top: 50px;left: 50px;touch-action: none; /* 禁止浏览器默认行为,如滚动 */transition: transform 0.3s ease;
}#draggable.hidden {transform: scale(0);visibility: hidden;
}#dragButton {position: fixed;bottom: 20px;right: 20px;background-color: #007bff;color: white;padding: 10px 20px;cursor: pointer;
}

        • #draggable 样式:定义拖拽元素的基本样式,包括固定位置、尺寸、背景色等。

        • .hidden 类样式:用于控制拖拽元素隐藏时的动画效果。

        • #dragButton 样式:定义悬浮按钮的基本样式,包括位置、背景色、文字颜色等。

3. JavaScript 交互:

const draggable = document.getElementById('draggable');
const dragButton = document.getElementById('dragButton');
let offsetX, offsetY;
let isDragging = false;
let autoHideTimeout;
let lastVisiblePosition = { top: 50, left: 50 }; // 初始位置// 触摸事件处理
draggable.addEventListener('touchstart', touchStart);
draggable.addEventListener('touchmove', touchMove);
draggable.addEventListener('touchend', touchEnd);// 鼠标事件处理
draggable.addEventListener('mousedown', mouseDown);
document.addEventListener('mousemove', mouseMove);
document.addEventListener('mouseup', mouseUp);// 初始隐藏拖拽元素
draggable.classList.add('hidden');function touchStart(e) {const touch = e.touches[0];offsetX = touch.clientX - draggable.getBoundingClientRect().left;offsetY = touch.clientY - draggable.getBoundingClientRect().top;isDragging = true;
}function touchMove(e) {if (!isDragging) return;e.preventDefault(); // 阻止默认的滚动行为const touch = e.touches[0];let newX = touch.clientX - offsetX;let newY = touch.clientY - offsetY;// 限制拖动范围在可视区域内const maxX = document.documentElement.clientWidth - draggable.offsetWidth;const maxY = document.documentElement.clientHeight - draggable.offsetHeight;newX = Math.max(0, Math.min(newX, maxX));newY = Math.max(0, Math.min(newY, maxY));draggable.style.left = `${newX}px`;draggable.style.top = `${newY}px`;// 判断靠近边缘并自动贴边if (newX < 10) {draggable.style.left = '0';} else if (newX > maxX - 10) {draggable.style.left = `${maxX}px`;}if (newY < 10) {draggable.style.top = '0';} else if (newY > maxY - 10) {draggable.style.top = `${maxY}px`;}// 更新最后显示位置lastVisiblePosition = { top: parseInt(draggable.style.top), left: parseInt(draggable.style.left) };// 自动隐藏计时器重置clearTimeout(autoHideTimeout);draggable.classList.remove('hidden');dragButton.style.display = 'none';
}function touchEnd() {isDragging = false;// 设置自动隐藏autoHideTimeout = setTimeout(() => {draggable.classList.add('hidden');// 固定悬浮按钮位置dragButton.style.top = '20px';dragButton.style.right = '20px';dragButton.style.display = 'block';}, 5000); // 5秒后自动隐藏
}function mouseDown(e) {offsetX = e.clientX - draggable.getBoundingClientRect().left;offsetY = e.clientY - draggable.getBoundingClientRect().top;isDragging = true;
}function mouseMove(e) {if (!isDragging) return;e.preventDefault(); // 阻止默认的拖动行为let newX = e.clientX - offsetX;let newY = e.clientY - offsetY;// 限制拖动范围在可视区域内const maxX = document.documentElement.clientWidth - draggable.offsetWidth;const maxY = document.documentElement.clientHeight - draggable.offsetHeight;newX = Math.max(0, Math.min(newX, maxX));newY = Math.max(0, Math.min(newY, maxY));draggable.style.left = `${newX}px`;draggable.style.top = `${newY}px`;// 判断靠近边缘并自动贴边if (newX < 10) {draggable.style.left = '0';} else if (newX > maxX - 10) {draggable.style.left = `${maxX}px`;}if (newY < 10) {draggable.style.top = '0';} else if (newY > maxY - 10) {draggable.style.top = `${maxY}px`;}// 更新最后显示位置lastVisiblePosition = { top: parseInt(draggable.style.top), left: parseInt(draggable.style.left) };// 自动隐藏计时器重置clearTimeout(autoHideTimeout);draggable.classList.remove('hidden');dragButton.style.display = 'none';
}function mouseUp() {isDragging = false;// 设置自动隐藏autoHideTimeout = setTimeout(() => {draggable.classList.add('hidden');// 固定悬浮按钮位置dragButton.style.top = '20px';dragButton.style.right = '20px';dragButton.style.display = 'block';}, 5000); // 5秒后自动隐藏
}dragButton.addEventListener('click', () => {draggable.classList.remove('hidden');dragButton.style.display = 'none';
});

技术和原理分析:

• HTML 结构:使用 <div> 元素创建拖拽的固定位置容器和悬浮按钮,配合 CSS 控制其样式。

• CSS 样式:定义了拖拽元素和悬浮按钮的基本样式,包括位置、背景色等,利用 transition 属性实现元素显示隐藏的动画效果。

• JavaScript 交互:

• 拖拽实现:通过 touchstart, touchmove, touchend, mousedown, mousemove, mouseup 等事件监听器,实现移动设备和桌面设备上的拖拽功能。在拖动过程中,更新拖拽元素的位置,并根据距离屏幕边缘的距离自动贴边。

• 自动隐藏和按钮显示逻辑:利用 setTimeout 实现拖拽元素在一定时间内无操作后自动隐藏,并显示固定位置的悬浮按钮。点击悬浮按钮则重新显示拖拽元素。可以根据需要选择显示固定位置或者根据最后显示位置动态调整的悬浮按钮。

最后完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Draggable Fixed Div with Auto Hide and Floating Button</title>
<style>#draggable {width: 200px;height: 200px;background-color: #ccc;position: fixed;top: 50px;left: 50px;touch-action: none; /* 禁止浏览器默认行为,如滚动 */transition: transform 0.3s ease;}#draggable.hidden {transform: scale(0);visibility: hidden;}/* 默认固定悬浮按钮 */#dragButton {position: fixed;bottom: 20px;right: 20px;background-color: #007bff;color: white;padding: 10px 20px;cursor: pointer;}/* 根据最后显示位置调整的悬浮按钮 *//*#dragButton.dynamic {position: fixed;background-color: #007bff;color: white;padding: 10px 20px;cursor: pointer;display: none;}*/
</style>
</head>
<body><div id="draggable"><p>Drag me!</p><button>Click me</button>
</div><div id="dragButton" class="fixed">Show</div>
<!-- <div id="dragButton" class="dynamic">Show</div> --><script>const draggable = document.getElementById('draggable');const dragButton = document.getElementById('dragButton');let offsetX, offsetY;let isDragging = false;let autoHideTimeout;let lastVisiblePosition = { top: 50, left: 50 }; // 初始位置// 触摸事件处理draggable.addEventListener('touchstart', touchStart);draggable.addEventListener('touchmove', touchMove);draggable.addEventListener('touchend', touchEnd);// 鼠标事件处理draggable.addEventListener('mousedown', mouseDown);document.addEventListener('mousemove', mouseMove);document.addEventListener('mouseup', mouseUp);draggable.classList.add('hidden');function touchStart(e) {const touch = e.touches[0];offsetX = touch.clientX - draggable.getBoundingClientRect().left;offsetY = touch.clientY - draggable.getBoundingClientRect().top;isDragging = true;}function touchMove(e) {if (!isDragging) return;e.preventDefault(); // 阻止默认的滚动行为const touch = e.touches[0];let newX = touch.clientX - offsetX;let newY = touch.clientY - offsetY;// 限制拖动范围在可视区域内const maxX = document.documentElement.clientWidth - draggable.offsetWidth;const maxY = document.documentElement.clientHeight - draggable.offsetHeight;newX = Math.max(0, Math.min(newX, maxX));newY = Math.max(0, Math.min(newY, maxY));draggable.style.left = `${newX}px`;draggable.style.top = `${newY}px`;// 判断靠近边缘并自动贴边if (newX < 10) {draggable.style.left = '0';} else if (newX > maxX - 10) {draggable.style.left = `${maxX}px`;}if (newY < 10) {draggable.style.top = '0';} else if (newY > maxY - 10) {draggable.style.top = `${maxY}px`;}// 更新最后显示位置lastVisiblePosition = { top: parseInt(draggable.style.top), left: parseInt(draggable.style.left) };// 自动隐藏计时器重置clearTimeout(autoHideTimeout);draggable.classList.remove('hidden');dragButton.style.display = 'none';}function touchEnd() {isDragging = false;// 设置自动隐藏autoHideTimeout = setTimeout(() => {draggable.classList.add('hidden');// 固定悬浮按钮位置dragButton.style.top = '20px';dragButton.style.right = '20px';dragButton.style.display = 'block';// 动态悬浮按钮位置/*dragButton.classList.add('dynamic');dragButton.style.top = `${lastVisiblePosition.top}px`;dragButton.style.left = `${lastVisiblePosition.left}px`;*/}, 5000); // 5秒后自动隐藏}function mouseDown(e) {offsetX = e.clientX - draggable.getBoundingClientRect().left;offsetY = e.clientY - draggable.getBoundingClientRect().top;isDragging = true;}function mouseMove(e) {if (!isDragging) return;e.preventDefault(); // 阻止默认的拖动行为let newX = e.clientX - offsetX;let newY = e.clientY - offsetY;// 限制拖动范围在可视区域内const maxX = document.documentElement.clientWidth - draggable.offsetWidth;const maxY = document.documentElement.clientHeight - draggable.offsetHeight;newX = Math.max(0, Math.min(newX, maxX));newY = Math.max(0, Math.min(newY, maxY));draggable.style.left = `${newX}px`;draggable.style.top = `${newY}px`;// 判断靠近边缘并自动贴边if (newX < 10) {draggable.style.left = '0';} else if (newX > maxX - 10) {draggable.style.left = `${maxX}px`;}if (newY < 10) {draggable.style.top = '0';} else if (newY > maxY - 10) {draggable.style.top = `${maxY}px`;}// 更新最后显示位置lastVisiblePosition = { top: parseInt(draggable.style.top), left: parseInt(draggable.style.left) };// 自动隐藏计时器重置clearTimeout(autoHideTimeout);draggable.classList.remove('hidden');dragButton.style.display = 'none';}function mouseUp() {isDragging = false;// 设置自动隐藏autoHideTimeout = setTimeout(() => {draggable.classList.add('hidden');// 固定悬浮按钮位置      dragButton.style.right = '20px';dragButton.style.display = 'block';// 动态悬浮按钮位置/*dragButton.classList.add('dynamic');dragButton.style.top = `${lastVisiblePosition.top}px`;dragButton.style.left = `${lastVisiblePosition.left}px`;*/}, 5000); // 5秒后自动隐藏}dragButton.addEventListener('click', () => {draggable.classList.remove('hidden');dragButton.style.display = 'none';// 动态悬浮按钮位置的显示控制// dragButton.classList.remove('dynamic');});
</script></body>
</html>

这篇博客文章介绍了如何利用 HTML、CSS 和 JavaScript 实现一个具有拖拽、自动隐藏和悬浮按钮的交互效果,适用于创建可定制的用户界面体验。

http://www.yayakq.cn/news/789528/

相关文章:

  • 完全菜鸟七天学会建网站wordpress 加载排版
  • 漂亮网站欣赏格拉苏蒂手表网站
  • 做竞价网站服务器多少钱ip域名查询地址
  • 网站开发人员主要干什么的安装完成wordpress后如何使用
  • 济宁房产网站建设银川网站建设哪家好叫啥名字
  • 企业网站用什么套站百度商城官网首页
  • 制作天下网站wordpress备份文件
  • 购物网站开发一般使用什么语言docker运行wordpress
  • 快速优化网站建设中国电子网
  • 潍坊住房和城乡建设局招标网站网站备案换接入商
  • 做网页设计卖钱的网站深圳建设网站推荐
  • 网站 申请建设教育工程网站
  • 流行用什么做网站玩游戏的网页
  • 优化企业门户网站网页浏览器软件有哪些
  • 专门做衬衣网站wordpress php调优
  • 房地产建设企业网站国外app推广平台有哪些
  • 网站建设深圳给原码获取网页 代码 做网站
  • 河南营销型网站江苏优质网站制作公司
  • 怎么开通个人网站请人做网站设计的方案
  • 丰台企业网站建设wordpress登陆访问
  • 五指山网站开发价格保定手机网站制作
  • 企业网站计划书wordpress做双语网站
  • 济南市网站建设做网站珊瑚橙颜色怎么搭配好看
  • 网站的二维码怎么做网站建设咨询云尚网络
  • 个人网站的名称j2ee网站开发参考文献
  • 彩票网站搭建 做网站天津微信网站建设
  • 最好茶叶网站建设推广图片设计如何简洁好看
  • 校园网站建设培训体会厂家营销型网站建设
  • 延安免费做网站界面设计论文
  • 360网站做推广建站源码程序