<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>可拖拽側邊欄</title>
<style type="text/css">
.container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
background-color: rgba(5, 9, 38, .8);
}
.drag-area {
width: 300px;
/*設置拖拽盒子的最小值,當拖拽的值小於這個值,將不再因拖拽而繼續變小*/
min-width: 100px;
height: 100%;
background-color: rgba(22, 22, 22, .3);
position: relative;
}
.drag-tip {
height: 100%;
width: 6px;
position: absolute;
top: 0;
left: 294px;
background-color: transparent;
}
/*鼠標移入顯示可拖動樣式*/
.drag-tip:hover {
cursor: w-resize;
}
</style>
</head>
<body>
<div class="container" id="container">
<!--拖動區域-->
<section class="drag-area" id="drag-area"></section>
<!--拖動按鈕-->
<div class="drag-tip" id="drag-tip"></div>
</div>
<script type="text/javascript">
let dragBtn = document.getElementById('drag-tip'),
dragDom = document.getElementById('drag-area'),
container = document.getElementById('container');
// 鼠標摁下
dragBtn.onmousedown = function (e) {
// 鼠標的X軸座標
let clientX = e.clientX;
// 拖動塊距離屏幕左側的偏移量
let offsetLeft = dragBtn.offsetLeft;
// 鼠標移動
document.onmousemove = function (e) {
let curDist = offsetLeft + (e.clientX - clientX), // 拖動塊的移動距離
maxDist = container.clientWidth - dragBtn.offsetWidth; // 拖動塊的最大移動距離
// 邊界值處理
curDist < 0 && (curDist = 0);
curDist > maxDist && (curDist = maxDist);
// 設置值(保證拖動塊一直在拖動盒子的相對位置)
dragBtn.style.left = dragDom.style.width = curDist + "px";
return false
};
// 鼠標鬆開
document.onmouseup = function (e) {
document.onmousemove = null;
document.onmouseup = null;
// 釋放鼠標
dragBtn.releaseCapture && dragBtn.releaseCapture()
};
// 捕獲鼠標
dragBtn.setCapture && dragBtn.setCapture();
return false
};
</script>
</body>
</html>
js實現側邊欄拖動寬度伸縮
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.