js實(shí)現(xiàn)櫥窗展示效果
本文實(shí)例為大家分享了js實(shí)現(xiàn)櫥窗展示的具體代碼,供大家參考,具體內(nèi)容如下
思路
1、獲取需要的標(biāo)簽
2、求出滾動(dòng)條的長(zhǎng)度(公式:滾動(dòng)條長(zhǎng)度 = ( 盒子的寬度 / 內(nèi)容的寬度) * 盒子的寬度)
3、監(jiān)聽鼠標(biāo)按下事件:3 設(shè)置起始位置
4、監(jiān)聽鼠標(biāo)的移動(dòng):
4.1求出移動(dòng)的位置
4.2判斷滾動(dòng)條的位置(防超出)
4.3 移動(dòng)滾動(dòng)條、商品滾動(dòng)(公式:內(nèi)容走的距離 = (內(nèi)容的長(zhǎng)度 - 盒子的長(zhǎng)度) / (盒子長(zhǎng)度 - 滾動(dòng)條的長(zhǎng)度) * 滾動(dòng)條走的距離);
5、監(jiān)聽鼠標(biāo)的離開事件:把鼠標(biāo)的移動(dòng)事件設(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.獲取滾動(dòng)條長(zhǎng)度
// 滾動(dòng)條長(zhǎng)度 = ( 盒子的寬度 / 內(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)的移動(dòng)
document.onmousemove =function (event){
var event = event || window.event;
//3.2.1求移動(dòng)的位置
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讓滾動(dòng)條滾動(dòng)
mask.style.left = endX + "px";
//3.2.4 讓商品隨著滾動(dòng)
//公式:內(nèi)容走的距離 = (內(nèi)容的長(zhǎng)度 - 盒子的長(zhǎng)度) / (盒子長(zhǎng)度 - 滾動(dòng)條的長(zhǎng)度) * 滾動(dòng)條走的距離
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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript進(jìn)行數(shù)組追加方法小結(jié)
javascript中給數(shù)組加元素是一個(gè)非常簡(jiǎn)單的問題,javascript本身就提供了大量這類函數(shù),我們可以使用js自帶函數(shù)快速給數(shù)組增加元素了,本文就javascript進(jìn)行數(shù)組追加的方法做出如下小結(jié)。2014-06-06
Echarts折線圖實(shí)現(xiàn)一條折線顯示不同顏色的方法
這篇文章主要給大家介紹了關(guān)于Echarts折線圖實(shí)現(xiàn)一條折線顯示不同顏色的相關(guān)資料,Echarts的折線圖可以通過設(shè)置series中的itemStyle屬性來改變折線的顏色,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
一個(gè)通過script自定義屬性傳遞配置參數(shù)的方法
編寫了一個(gè)js插件,要使用該插件需要先在html中引入該插件Js,然后再添加一個(gè)script標(biāo)簽,在里面調(diào)用,需要的朋友可以看看2014-09-09
ES6?class類實(shí)現(xiàn)繼承實(shí)例詳解
傳統(tǒng)的javascript中只有對(duì)象,沒有類的概念,下面這篇文章主要給大家介紹了關(guān)于ES6?class類實(shí)現(xiàn)繼承的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10
JavaScript利用canvas實(shí)現(xiàn)炫酷的碎片切圖效果
這篇文章主要和大家分享一個(gè)炫酷的碎片式切圖效果,本文主要利用canvas來實(shí)現(xiàn),代碼量不多,但有些地方還是需要花點(diǎn)時(shí)間去理解的,感興趣的可以學(xué)習(xí)一下2022-10-10
js change,propertychange,input事件小議
github上關(guān)于mootools一個(gè)issue的討論很有意思,所以就想測(cè)試記錄下。感興趣的可以點(diǎn)擊原頁(yè)面看看2011-12-12

