纯JS实现拖动进度条及数字显示功能
"这个资源提供了一个纯JavaScript实现的拖动或点击选择的进度条功能,具有动画效果,视觉上较为美观。" 在JavaScript中,创建一个可拖动或点击的进度条涉及到几个关键点,这些点在提供的代码片段中有所体现: 1. **DOM操作**:首先,通过jQuery库选择元素并设置样式,例如设置主容器`.main`的宽度为视口宽度的98%。这确保了进度条适应浏览器窗口大小。 2. **事件监听**:为了实现拖动功能,代码监听了鼠标滚轮事件(`DOMMouseScroll` 和 `onmousewheel`)。在Firefox浏览器中,使用`DOMMouseScroll`,在其他浏览器中则使用`onmousewheel`。这是因为不同浏览器对滚动事件的支持不同。 3. **鼠标位置检测**:`mousePosition`函数用于获取鼠标在页面上的位置,这是实现拖动功能的关键。它检查鼠标是否在进度条区域内,以便在正确的位置处理拖动事件。 4. **进度条更新**:当鼠标在进度条区域内时,需要计算鼠标相对于进度条的位置,并据此更新进度值。代码中未直接给出这部分,但通常会有一个函数来计算新的进度值,并根据这个值更新进度条的样式(如宽度或填充)。 5. **动画效果**:虽然代码没有显示具体的动画实现,但提到进度条带有动画效果。这通常通过CSS3的`transition`属性或JavaScript的定时器来实现,平滑地改变进度条的状态。 6. **兼容性处理**:代码通过检测浏览器类型(使用`navigator.userAgent`)来确定使用哪种滚动事件监听器,以确保在不同的浏览器中都能正常工作。 7. **交互设计**:除了拖动外,描述中还提到可以点击选择进度。这可能涉及到监听`click`事件,然后根据点击位置计算相应的进度值。 为了完全实现这个功能,你需要补充进度更新逻辑,以及可能的动画实现代码。同时,确保在用户释放鼠标时停止拖动,以及在点击时正确计算新的进度值。这个进度条组件可以用于各种场景,比如视频播放进度控制、加载进度指示等。
Layout = "移动条";
Layout = "~/Views/Shared/LS.cshtml";
}
<!DOCTYPE html>
<html>
<head>
<title>MoveLine</title>
<script src="/Scripts/jquery-1.7.1.js"></script>
<script>
var read = 0;
$(function () {
var Bheight = document.documentElement.clientHeight;///浏览器的高 宽
var Bwidth = document.documentElement.clientWidth;
$(".main").css("width", Bwidth * 0.98 + "px");
$(".test").unbind();
//$(".main").css("height", Bheight * 0.98 + "px");
var agent = navigator.userAgent;
if (/.*Firefox.*/.test(agent)) {
document.addEventListener("DOMMouseScroll", function (e) {
Mousegd(e, agent);
});
} else {
document.onmousewheel = function (e) {
Mousegd(e, agent);
}
}
});
evt = evt || window.event;
var xPos = evt.pageX || evt.clientX || evt.offsetX || evt.x;//鼠标在页面上X的坐标
var yPos = evt.pageY || evt.clientY || evt.offsetY || evt.y;//鼠标在页面上的y坐标
var oneX = $(".single").offset().left; ///黄条的X坐标
var oneWidth = $(".single").width(); ///黄条的宽度 - 30 是圆标的宽度
var oneY = $(".single").offset().top; ///黄条的X坐标
var oneHeight = $(".single").height(); ///黄条的宽度 - 30 是圆标的宽度
if (xPos >= (oneX-15) && xPos <= (oneX + oneWidth) && yPos >= (oneY-5) && yPos <= (oneY + oneHeight+5)) {
JSSB(xPos,0);
}
}
function MOVE(evt) {
evt = evt || window.event;
var xPos = evt.pageX || evt.clientX || evt.offsetX || evt.x;//鼠标在页面上X的坐标
var yPos = evt.pageY || evt.clientY || evt.offsetY || evt.y;//鼠标在页面上的y坐标
if (read == 1) {
JSSB(xPos,1);
}
}
//根据鼠标的X坐标计算宽度
function JSSB(X,p) {
var oneX = $(".single").offset().left; ///黄条的X坐标
var oneWidth = $(".single").width(); ///黄条的宽度
var XX = (X - oneX) <= 0 ? 0 : ((X - oneX) >= (oneWidth) ? oneWidth : (X - oneX)); //鼠标在黄条上的X坐标
var BFB = XX/oneWidth; //计算出的黄条宽度百分比结果
var XS = Math.ceil(BFB * 100);
if (!$(".single .one").is(":animated"))
{
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展