js實現(xiàn)櫥窗展示效果
本文實例為大家分享了js實現(xiàn)櫥窗展示的具體代碼,供大家參考,具體內(nèi)容如下
思路
1、獲取需要的標(biāo)簽
2、求出滾動條的長度(公式:滾動條長度 = ( 盒子的寬度 / 內(nèi)容的寬度) * 盒子的寬度)
3、監(jiān)聽鼠標(biāo)按下事件:3 設(shè)置起始位置
4、監(jiān)聽鼠標(biāo)的移動:
4.1求出移動的位置
4.2判斷滾動條的位置(防超出)
4.3 移動滾動條、商品滾動(公式:內(nèi)容走的距離 = (內(nèi)容的長度 - 盒子的長度) / (盒子長度 - 滾動條的長度) * 滾動條走的距離);
5、監(jiān)聽鼠標(biāo)的離開事件:把鼠標(biāo)的移動事件設(shè)置為無即可。
<script>
window.onload = function (){
//1.獲取需要的標(biāo)簽
var box = document.getElementById("box");
var box_top = box.children[0];
var box_bottom = box.children[1];
var mask = box_bottom.children[0];
//2.獲取滾動條長度
// 滾動條長度 = ( 盒子的寬度 / 內(nèi)容的寬度) * 盒子的寬度
var mask_length = (box.offsetWidth /box_top.offsetWidth) * box.offsetWidth;
mask.style.width = mask_length + "px";
//3.監(jiān)聽鼠標(biāo)按下的事件
mask.onmousedown = function (event){
var event = event || window.event;
//3.1設(shè)置起始位置
var beginX = event.clientX - mask.offsetLeft;
//3.2 監(jiān)聽鼠標(biāo)的移動
document.onmousemove =function (event){
var event = event || window.event;
//3.2.1求移動的位置
var endX = event.clientX - beginX;
//3.2.2處理邊界值
if(endX < 0){
endX = 0
}else if(endX >= box.offsetWidth - mask.offsetWidth){
endX = box.offsetWidth - mask.offsetWidth;
}
//3.2.3讓滾動條滾動
mask.style.left = endX + "px";
//3.2.4 讓商品隨著滾動
//公式:內(nèi)容走的距離 = (內(nèi)容的長度 - 盒子的長度) / (盒子長度 - 滾動條的長度) * 滾動條走的距離
var content_len = (box_top.offsetWidth - box.offsetWidth) / (box.offsetWidth - mask.offsetWidth) * endX;
box_top.style.left = -content_len + "px";
return false;
};
document.onmouseup = function (){
document.onmousemove = null;
}
}
}
</script>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript進行數(shù)組追加方法小結(jié)
javascript中給數(shù)組加元素是一個非常簡單的問題,javascript本身就提供了大量這類函數(shù),我們可以使用js自帶函數(shù)快速給數(shù)組增加元素了,本文就javascript進行數(shù)組追加的方法做出如下小結(jié)。2014-06-06
Echarts折線圖實現(xiàn)一條折線顯示不同顏色的方法
這篇文章主要給大家介紹了關(guān)于Echarts折線圖實現(xiàn)一條折線顯示不同顏色的相關(guān)資料,Echarts的折線圖可以通過設(shè)置series中的itemStyle屬性來改變折線的顏色,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
JavaScript利用canvas實現(xiàn)炫酷的碎片切圖效果
這篇文章主要和大家分享一個炫酷的碎片式切圖效果,本文主要利用canvas來實現(xiàn),代碼量不多,但有些地方還是需要花點時間去理解的,感興趣的可以學(xué)習(xí)一下2022-10-10
js change,propertychange,input事件小議
github上關(guān)于mootools一個issue的討論很有意思,所以就想測試記錄下。感興趣的可以點擊原頁面看看2011-12-12

