* { margin: 0; padding: 0; } .box { width: 500px; height: 30px; margin: 200px auto; } .big { width: 400px; height: 100%; background-color: blue; position: relative; box-sizing: border-box; float: left; } .small { width: 0; height: 100%; background-color: deeppink; } </style> </head> <body> <div class="box"> <div class="big"> <div class="small"></div> </div> <span>0%</span> </div>实现拖拽进度条,在后面显示百分比并且保留两位小数
时间: 2024-02-16 17:08:44 浏览: 103
好的,可以使用 JavaScript 和 CSS 来实现拖拽进度条和显示百分比。以下是一个简单的实现:
HTML 代码:
```html
<div class="box">
<div class="big">
<div class="small"></div>
</div>
<span id="percent">0%</span>
</div>
```
CSS 代码:
```css
* {
margin: 0;
padding: 0;
}
.box {
width: 500px;
height: 30px;
margin: 200px auto;
}
.big {
width: 400px;
height: 100%;
background-color: blue;
position: relative;
box-sizing: border-box;
float: left;
}
.small {
width: 0;
height: 100%;
background-color: deeppink;
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
```
JavaScript 代码:
```javascript
const box = document.querySelector('.box');
const big = document.querySelector('.big');
const small = document.querySelector('.small');
const percent = document.querySelector('#percent');
let isDragging = false;
const updatePercent = () => {
const percentValue = (small.clientWidth / big.clientWidth) * 100;
percent.textContent = percentValue.toFixed(2) + '%';
};
small.addEventListener('mousedown', () => {
isDragging = true;
});
document.addEventListener('mousemove', e => {
if (isDragging) {
const x = e.clientX - box.offsetLeft - (small.clientWidth / 2);
const maxX = big.clientWidth - small.clientWidth;
if (x < 0) {
small.style.left = '0';
} else if (x > maxX) {
small.style.left = maxX + 'px';
} else {
small.style.left = x + 'px';
}
updatePercent();
}
});
document.addEventListener('mouseup', () => {
isDragging = false;
});
```
首先,我们在 HTML 中创建了一个包含一个大的蓝色块和一个小的粉色块的进度条。我们还添加了一个用于显示百分比的 `<span>` 元素。
然后,我们使用 CSS 来定义样式。我们将 `.small` 元素定位为绝对位置,使其可以在 `.big` 元素内部移动。我们还将其 `z-index` 属性设置为 1,以确保它显示在 `.big` 元素的顶部。
最后,我们使用 JavaScript 来实现拖拽功能和百分比更新。我们添加了 `mousedown`、`mousemove` 和 `mouseup` 事件监听器来检测鼠标拖拽操作,并更新小块的位置和百分比显示。我们还使用 `toFixed()` 方法将百分比值保留两位小数。
阅读全文