AI 摘要
该代码实现了一个商品缓动轮播图,通过定时器控制列表向左平滑滚动,并自动循环。当鼠标悬停在轮播区域或标题上时暂停滚动,移出后恢复。同时实现了可拖拽滑块,滑块位置与轮播滚动距离按比例联动,支持手动控制浏览进度。整体功能完整,交互流畅。
JS 代码
function $(id) {
return document.getElementById(id);
}
//缓动轮播图
var fhTimer;
var fhNum = 0;
var barNum = 0;
fhTimer = setInterval(marquee, 20);
function marquee() {
fhNum--;
barNum = fhNum;
if (fhNum < -2400) {
fhNum = 0;
}
$("fhc_ul").style.left = fhNum + "px";
if (fhNum < -2400) {
barNum = fhNum + 2400;
}
$("fhc_dBar").style.left = -(barNum / 2.75) + "px";
}
$("fhcShow").onmouseover = function () {
$("fhc_d_box").style.display = "block";
clearInterval(fhTimer);
};
$("fhc_d_box").onmouseover = function () {
$("fhc_d_box").style.display = "block";
};
$("fhcShow").onmouseout = function () {
$("fhc_d_box").style.display = "none";
fhTimer = setInterval(marquee, 20);
};
//鼠标悬浮在标题也在暂停滚动
$("fhTit").onmouseover = function () {
clearInterval(fhTimer);
};
$("fhTit").onmouseout = function () {
fhTimer = setInterval(marquee, 20);
};
//滑块
$("fhc_dBar").onmousedown = function (event) {
var event = event || window.event;
var leftValue = event.clientX - this.offsetLeft;
document.onmousemove = function (event) {
var evt = event || window.event;
var locationX = evt.clientX - leftValue;
if (locationX < 0) {
locationX = 0;
} else if (locationX > 960 - 99) {
locationX = 960 - 99;
}
$("fhc_dBar").style.left = locationX + "px";
fhNum = -locationX * 2.75;
//如果选中了,就取消选中,防止出现bug
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
};
document.onmouseup = function () {
document.onmousemove = null; //取消注册的这个事件
};
};
HTML 代码
<div class="fxhh_ctt">
<div class="fh_c_show" id="fhcShow">
<ul class="fh_c_under" id="fhc_ul">
<li>
<a href=" ">
<p class="topTit">商品1</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品2</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品3</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品4</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品5</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品6</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品7</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品8</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品9</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品10</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品11</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品12</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品1</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品2</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品3</p>
<img src="" alt="" />
</a>
</li>
<li>
<a href=" ">
<img src="" alt="" />
<p class="botTit">商品4</p>
</a>
</li>
<li>
<a href=" ">
<p class="topTit">商品5</p>
<img src="" alt="" />
</a>
</li>
</ul>
</div>
<!-- 滑块 -->
<div class="fhc_box" id="fhc_d_box">
<div class="fhc_drop" id="fhc_dBar"></div>
</div>
<!-- 滑块end -->
</div>
CSS 代码
.fxhh .fxhh_ctt {
width: 990px;
background-color: #fff;
float: left;
}
.fxhh .fxhh_ctt .fh_c_show .fh_c_under img {
width: 150px;
height: 150px;
}
.fxhh .fxhh_ctt .fh_c_show {
width: 990px;
height: 260px;
background-color: #fff;
overflow: hidden;
position: relative;
}
.fxhh .fxhh_ctt .fh_c_show .fh_c_under {
width: 2000%;
position: absolute;
}
.fxhh .fxhh_ctt .fh_c_show .fh_c_under li {
float: left;
text-align: center;
width: 150px;
height: 180px;
margin-top: 40px;
margin-right: 50px;
}
.fxhh .fxhh_ctt .fh_c_show .fh_c_under li .topTit {
margin-bottom: 10px;
}
.fxhh .fxhh_ctt .fh_c_show .fh_c_under li .botTit {
margin-top: 10px;
}
.fxhh .fxhh_ctt .fhc_box {
display: none;
width: 960px;
height: 4px;
background-color: #f3f3f3;
margin: 0 auto;
position: absolute;
top: 250px;
left: 210px;
}
.fxhh .fxhh_ctt .fhc_drop {
width: 99px;
height: 9px;
border-radius: 4px;
background-color: #d8d8d8;
position: absolute;
top: -3px;
}文章地址:https://blog.qiyuor2.me/2019/js-move-pic-by-slider
本作品由柒宇采用CC BY-NC-SA 4.0进行许可,转载请注明出处。