❶ js圖片無縫滾動的原理是什麼
不斷減少圖片距離外面容器的間距,然後在間距為0的剎那將圖片重新回到初始位置。為了版不至於看出權破綻,滾動圖片要弄雙份兒,比如你需要滾動的是AB,那麼在容器里放的就是ABAB。那個外面的容器還要設置大小,然後將超出的內容隱藏。
這是我當年自己分析某人的JS圖片滾動代碼時總結的。
現在嘛都直接整jquery的插件了
❷ javascript實現平滑無縫滾動
本文我們實現純JS方式的滾動廣告效果,供大家參考,具體內容如下
先show一下成品:
首先是網頁樣式:
#demo
{
background:
#FFF;
overflow:hidden;
border:
1px
dashed
#CCC;
width:
1280px;
height:200px;
}
#demo
img
{
border:
3px
solid
#F2F2F2;
}
#indemo
{
float:
left;
width:
800%;
}
#demo1
{
float:
left;
}
#demo2
{
float:
left;
}
布局如下:
<div
id="demo">
<div
id="indemo">
<div
id="demo1">
<a
href="#"><img
src="banner.jpg"
border="0"
/></a>
<a
href="#"><img
src="banner2.jpg"
border="0"
/></a>
</div>
<div
id="demo2"></div>
</div>
</div>
具體的JS實現:
<script>
var
speed=10;
var
tab=document.getElementById("demo");
var
tab1=document.getElementById("demo1");
var
tab2=document.getElementById("demo2");
tab2.innerHTML=tab1.innerHTML;
function
Marquee(){
if(tab2.offsetWidth-tab.scrollLeft==0)
tab.scrollLeft-=tab1.offsetWidth
else{
tab.scrollLeft++;
}
}
var
MyMar=setInterval(Marquee,speed);
tab.onmouseover=function()
{clearInterval(MyMar)};
tab.onmouseout=function()
{MyMar=setInterval
(Marquee,speed)};
</script>
這里要注意的是:
scrollLeft代表頁面利用滾動條滾動到右側時,隱藏在滾動條左側的頁面的寬度。
offsetWidth
是對象的可見寬度,包滾動條等邊線,會隨窗口的顯示大小改變。
setInterval()
方法可按照指定的周期(以毫秒計)來調用函數或計算表達式。setInterval()
方法會不停地調用函數,直到
clearInterval()
被調用或窗口被關閉。
明白了這個具體的實現就好理解了。
實現的原理是這樣的:首先將需要滾動的內容復制一份。當右側的div顯示的內容與左側影藏的內容寬度相同時將父容器左側影藏的內容顯示出來,這樣就實現了將左側影藏的內容顯示出來同時將右側內容重新隱藏。如果右側內容顯示的部分少於左側影藏的內容就繼續講父容器想左側移動,實現隱藏。其中有一點需要注意的是,由於這里是將兩張圖片同時放入左側,當右側顯示了一半時會將左側影藏的完全顯示出來,又因為右側顯示的內容與左側的左邊內容相同所以實現了循環滾動的效果。
這樣平滑的滾動就實現了。
以上就是本文的全部內容,希望對大家的學習有所幫助。
❸ 圖片循環滾動 無縫滾動 用JS
<MARQUEE behavior="scroll" contenteditable="true" onstart="this.firstChild.innerHTML+=this.firstChild.innerHTML;" scrollamount="3" width="100"><SPAN unselectable="on"></SPAN></MARQUEE>
<DIV id="scrollobj" style="white-space:nowrap;overflow:hidden;width:500px;" onmouseover="aa()" onmouseout="b()" >
[CROSSSELLING3]
[CROSSSELLING4]
[CROSSSELLING5]
[CROSSSELLING6]
[CROSSSELLING7]
[CROSSSELLING8]
[CROSSSELLING9]
[CROSSSELLING10]</DIV>
<script language="javascript" type="text/javascript">
<!--
function scroll(obj) {
var tmp = (obj.scrollLeft)++;
//當滾動條到達右邊頂端時
if (obj.scrollLeft==tmp) obj.innerHTML += obj.innerHTML;
//當滾動條滾動了初始內容的寬度時滾動條回到最左端
if (obj.scrollLeft>=obj.firstChild.offsetWidth) obj.scrollLeft=0;
}
var a = setInterval("scroll(document.getElementById('scrollobj'))",20);
function aa(){
clearInterval(a);
}
function b(){
a=setInterval("scroll(document.getElementById('scrollobj'))",10);
}
//-->
</script>
❹ 使用JS如何實現文字無縫滾動
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
.wrap{width:800px;height:500px;margin:200px auto 0;position: relative;border:1px solid #000;overflow: hidden;}
h1{position: absolute;left:800px;word-break: keep-all;}
</style>
<body>
<div class="wrap">
<h1>這是無縫滾動</h1>
<h1>這是無縫滾動</h1>
</div>
<script>
var wenzi=document.querySelectorAll("h1");
var speed1=0;
var speed2=0;
var flag=false;
setInterval(function(){
speed1-=10;
wenzi[0].style.left=800+speed1+"px";
wenzi[1].style.left=800+speed2+"px";
if(wenzi[0].offsetLeft==0){
flag=true;
}
if(flag){
speed2-=10;
}
if(wenzi[0].offsetLeft==0){
speed2=0;
}
if(wenzi[1].offsetLeft==0){
speed1=0;
}
},60)
</script>
</body>
</html>
純手敲 覺得有用可以點個贊啊
❺ js實現圖片滾動效果
<SCRIPT language="JavaScript">
var speed=50; //設置滾動速度
demo2.innerHTML=demo1.innerHTML //復制dome1為dome2
function Marquee(){
if(demo2.offsetTop-demo.scrollTop<=0) //當滾動至dome1與dome2交界時
demo.scrollTop-=demo1.offsetHeight //dome跳到最頂端
else{
demo.scrollTop++
}
}
var MyMar=setInterval(Marquee,speed) //設置定時器
demo.onmouseover=function() {clearInterval(MyMar)}//滑鼠移上時清除定時器達到滾動停止的目的
demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}//滑鼠移開時重設定時器,繼續滾動
</SCRIPT>
<div id="demo" style="overflow: hidden; height: 600; width: 180; background: #214984; color: #ffffff">
<div id="demo1" align="center">
<!-- 定義圖片 -->
</div>
<div id="demo2" align="center"></div>
</div>
❻ js圖片無縫滾動的原理是什麼
以垂直滾動為例:一組圖片
控制它的滾動條進行滾動
且此時對這組圖片進行專復制並添加進屬原圖片組中,現在就有兩組圖片了。你可以想像一下,現在滾動條繼續滾動,原來那組圖片最後一張圖片已經滾至頂端且消失,復制的那組圖片的第一張跟在原圖最後一張圖片後出現,此時你就能感覺到無縫滾動了,而就在此刻我們將滾動條高度設置為0(因為速度很快,所以不會出現停頓感),你感覺圖片就這樣一直不停的滾動下去了。關鍵點在於元素的復制、添加,以及滾動條距離的獲取和修改。網上代碼很多,都是基於這類構思
❼ js中無縫滾動輪播圖有多少種做法
還有就是用原生js模仿jQuery寫一個動畫函數,最簡單版的就是:
var timer = null;
function ani(ele,target) {
clearInterval(ele.timer);
ele.timer = setInterval(function() {
var step = (target - ele.offsetLeft)/10;
step = step>0?Math.ceil(step):Math.floor(step);
ele.style.left = ele.offsetLeft + step + "px";
console.log(1);
if (Math.abs(target - ele.offsetLeft) <= Math.abs(step)) {
ele.style.left = target + "px";
clearInterval(ele.timer);
}
},30);
}
利用動畫實現圖片位置的移動,也是放一個圖片到前面。
第二個就是還是放一張圖到前面,然後把帶圖片的li定位;用一個arr[{left:0},{left:"200px"},{left:"400px"},{left:"600px"}];這樣的數組把值分別賦給li;要滾動的時候把arr的最後一項放到最前面,再依次賦值給li,加上過渡就是輪播了,當然直接跳的那一下把過渡關了才是無縫輪播。
❽ js圖片無縫滾動的原理是什麼
以垂直滾動為例:一組圖片
控制它的滾動條進行滾動
且此時對這組圖片進行復制並添加進原圖片組中,現在就有兩組圖片了。你可以想像一下,現在滾動條繼續滾動,原來那組圖片最後一張圖片已經滾至頂端且消失,復制的那組圖片的第一張跟在原圖最後一張圖片後出現,此時你就能感覺到無縫滾動了,而就在此刻我們將滾動條高度設置為0(因為速度很快,所以不會出現停頓感),你感覺圖片就這樣一直不停的滾動下去了。關鍵點在於元素的復制、添加,以及滾動條距離的獲取和修改。網上代碼很多,都是基於這類構思
❾ js實現圖片自動的滾動效果
自動滾動,主要思路是用js自帶的setInterval方法。
定義和用法
setInterval() 方法可按照指定的周期(以毫秒計)來調用函數或計算表達式。
setInterval() 方法會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的參數。
語法
setInterval(code,millisec[,"lang"])
參數
code 必需。要調用的函數或要執行的代碼串。
millisec 必須。周期性執行或調用 code 之間的時間間隔,以毫秒計。
返回值
一個可以傳遞給 Window.clearInterval() 從而取消對 code 的周期性執行的值。
簡單的例子,僅供參考:
<style>
*{margin:0;padding:0;list-style:none;}
#box{width:840px;border:1pxsolid#000;height:210px;margin:30pxauto;position:relative;overflow:hidden;}
#boxul{position:absolute;left:0;top:0;}
#boxulli{width:200px;height:200px;float:left;padding:5px;}
</style>
<script>
window.onload=function(){
varoBox=document.getElementById('box');
varoUl=oBox.children[0];
varaLi=oUl.children;
//復制一份內容
oUl.innerHTML+=oUl.innerHTML;
oUl.style.width=aLi.length*aLi[0].offsetWidth+'px';
setInterval(function(){
varl=oUl.offsetLeft+10;
if(l>=0){
l=-oUl.offsetWidth/2;
}
oUl.style.left=l+'px';
},30);
};
</script>
</head>
<body>
<divid="box">
<ul>
<li><imgsrc="img/1.jpg"width="200"></li>
<li><imgsrc="img/2.jpg"width="200"></li>
<li><imgsrc="img/3.jpg"width="200"></li>
<li><imgsrc="img/4.jpg"width="200"></li>
</ul>
</div>
</body>
❿ JS無縫滾動圖片的代碼 麻煩大神幫我解釋下每句的含義
var speed=10; ///圖片左移速度時間毫秒數字越大速度越慢
var tab=document.getElementById("demo");
var tab1=document.getElementById("demo1");
var tab2=document.getElementById("demo2");
tab2.innerHTML=tab1.innerHTML; //克隆demo1為demo2
tab.scrollTop=tab.scrollHeight
function Marquee(){
if(tab2.offsetWidth-tab.scrollLeft<=0)// //當demo滾動至demo2的交界處。與就是與demo2重合時。offsetWidth與scrollLeft剛好相等
tab.scrollLeft-=tab1.offsetWidth //demo跳回初始位置
else{
tab.scrollLeft++;//demo開始重新移動
}
}
//setInterval讓MyMar方法每隔多少秒執行一次,並把返回的調用次數ID
var MyMar=setInterval(Marquee,speed);
tab.onmouseover=function() {clearInterval(MyMar)}; //當滑鼠移動demo上面時。調用clearInterval清除MyMar1.這樣圖片便不會在移動了。移到圖片時,第一行和第二行的圖片都會停止
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};重新setInterval讓方法執行,這樣圖片會繼續移動