js手機輪播代碼是什麼(JavaScript輪播)

  • 1、手機app滑動輪播原生js怎麼寫
  • 2、圖片自動播放輪播JQ,js代碼。
  • 3、js實現輪播代碼怎麼寫?
  • 4、JS輪播彈窗代碼

下面是提供的一個demo:

1、html

!DOCTYPE HTML

html

head

meta charset=”utf-8″/

meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″ /

meta name=”viewport” content = “width=device-width, target-densitydpi=high-dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=no” /

meta name=”apple-mobile-web-app-capable” content=”yes” /

meta name=”apple-mobile-web-app-status-bar-style” content=”black” /

meta content=”telephone=no” name=”format-detection” /

meta name=”keywords” content=”seokeywords”/

meta name=”description” content=”seodescription”/

titlemggScrollImg demo 作者:js明哥哥/title

style

ul,li{margin:0;padding:0;}

@media screen and (min-width:240px) {

html, body{

font-size:9px;

}

}

@media screen and (min-width:320px) {

html, body{

font-size:12px;

}

}

@media screen and (min-width:480px) {

html, body{

font-size:18px;

}

}

@media screen and (min-width:640px) {

html, body{

font-size:24px;

}

}

@media screen and (min-width:960px) {

html, body{

font-size:36px;

}

}

div.imgbox{width:25rem;height:16.5rem;overflow:hidden;margin:0 auto;}

div.imgbox ul{clear:both;width:75rem;}

div.imgbox ul li{float:left;width:25rem;height:16.5rem;overflow:hidden;text-align:center;}

div.imgbox ul li img{width:24rem;height:16.5rem;}

#page{color:red;}

/style

/head

body

div class=”imgbox”

ul

lia href=””img src=””/img/a/li

lia href=””img src=””/img/a/li

lia href=””img src=””/img/a/li

/ul

/div

div這裡通過回調顯示當前滾動到多少頁:span id=”page”0/span/div

script src=””/script

script src=”mggScrollImg.js”/script

script

(function(){

/*

注意:$.mggScrollImg返回的scrollImg對象上有

next,prev,go三個方法,可以實現外部對滾動索引的控制。

如:scrollImg.next();//會切換到下一張圖片

scrollImg.go(0);//會切換到第一張圖片

*/

var scrollImg = $.mggScrollImg(‘.imgbox ul’,{

loop : true,//循環切換

auto : true,//自動切換

callback : function(ind){//這裡傳過來的是索引值

$(‘#page’).text(ind+1);

}

});

})()

/script

/body

/html

2、核心滑動腳本代碼

(function($){

/*

圖片滾動效果

add 2014-05-14 by js明哥哥

博客地址:

@jQuery or @String box : 滾動列表jQuery對象或者選擇器 如:滾動元素為li的外層ul

@object config : {

@Number width : 一次滾動寬度,默認為box裡面第一個一級子元素寬度[如果子元素寬度不均勻則滾動效果會錯亂]

@Number size : 列表長度,默認為box裡面所有一級子元素個數[如果size不等於一級子元素個數,則不支持循環滾動]

@Boolean loop : 是否支持循環滾動 默認 true

@Boolean auto : 是否自動滾動,支持自動滾動時必須支持循環滾動,否則設置無效,默認為true

@Number auto_wait_time : 自動輪播一次時間間隔,默認為:3000ms

@Function callback : 滾動完回調函數,參入一個參數當前滾動節點索引值

}

*/

function mggScrollImg(box,config){

this.box = $(box);

this.config = $.extend({},config||{});

this.width = this.config.width||this.box.children().eq(0).width();//一次滾動的寬度

this.size = this.config.size||this.box.children().length;

this.loop = this.config.loop||true;//默認能循環滾動

this.auto = this.config.auto||true;//默認自動滾動

this.auto_wait_time = this.config.auto_wait_time||3000;//輪播間隔

this.scroll_time = 300;//滾動時長

this.minleft = -this.width*(this.size-1);//最小left值,注意是負數[不循環情況下的值]

this.maxleft =0;//最大lfet值[不循環情況下的值]

this.now_left = 0;//初始位置信息[不循環情況下的值]

this.point_x = null;//記錄一個x坐標

this.point_y = null;//記錄一個y坐標

this.move_left = false;//記錄向哪邊滑動

this.index = 0;

this.busy = false;

this.timer;

this.init();

}

$.extend(mggScrollImg.prototype,{

init : function(){

this.bind_event();

this.init_loop();

this.auto_scroll();

},

bind_event : function(){

var self = this;

self.box.bind(‘touchstart’,function(e){

if(e.touches.length==1 !self.busy){

self.point_x = e.touches[0].screenX;

self.point_y = e.touches[0].screenY;

}

}).bind(‘touchmove’,function(e){

if(e.touches.length==1 !self.busy){

return self.move(e.touches[0].screenX,e.touches[0].screenY);//這裡根據返回值覺得是否阻止默認touch事件

}

}).bind(‘touchend’,function(e){

!self.busy self.move_end();

});

},

/*

初始化循環滾動,當一次性需要滾動多個子元素時,暫不支持循環滾動效果,

如果想實現一次性滾動多個子元素效果,可以通過頁面結構實現

循環滾動思路:複製首尾節點到尾首

*/

init_loop : function(){

if(this.box.children().length == this.size this.loop){//暫時只支持size和子節點數相等情況的循環

this.now_left = -this.width;//設置初始位置信息

this.minleft = -this.width*this.size;//最小left值

this.maxleft = -this.width;

this.box.prepend(this.box.children().eq(this.size-1).clone()).append(this.box.children().eq(1).clone()).css(this.get_style(2));

this.box.css(‘width’,this.width*(this.size+2));

}else{

this.loop = false;

this.box.css(‘width’,this.width*this.size);

}

},

auto_scroll : function(){//自動滾動

var self = this;

if(!self.loop || !self.auto)return;

clearTimeout(self.timer);

self.timer = setTimeout(function(){

self.go_index(self.index+1);

},self.auto_wait_time);

},

go_index : function(ind){//滾動到指定索引頁面

var self = this;

if(self.busy)return;

clearTimeout(self.timer);

self.busy = true;

if(self.loop){//如果循環

ind = ind0?-1:ind;

ind = indself.size?self.size:ind;

}else{

ind = ind0?0:ind;

ind = ind=self.size?(self.size-1):ind;

}

if(!self.loop (self.now_left == -(self.width*ind))){

self.complete(ind);

}else if(self.loop (self.now_left == -self.width*(ind+1))){

self.complete(ind);

}else{

if(ind == -1 || ind == self.size){//循環滾動邊界

self.index = ind==-1?(self.size-1):0;

self.now_left = ind==-1?0:-self.width*(self.size+1);

}else{

self.index = ind;

self.now_left = -(self.width*(self.index+(self.loop?1:0)));

}

self.box.css(this.get_style(1));

setTimeout(function(){

self.complete(ind);

},self.scroll_time);

}

},

complete : function(ind){//動畫完成回調

var self = this;

self.busy = false;

self.config.callback self.config.callback(self.index);

if(ind==-1){

self.now_left = self.minleft;

}else if(ind==self.size){

self.now_left = self.maxleft;

}

self.box.css(this.get_style(2));

self.auto_scroll();

},

next : function(){//下一頁滾動

if(!this.busy){

this.go_index(this.index+1);

}

},

prev : function(){//上一頁滾動

if(!this.busy){

this.go_index(this.index-1);

}

},

move : function(point_x,point_y){//滑動屏幕處理函數

var changeX = point_x – (this.point_x===null?point_x:this.point_x),

changeY = point_y – (this.point_y===null?point_y:this.point_y),

marginleft = this.now_left, return_value = false,

sin =changeY/Math.sqrt(changeX*changeX+changeY*changeY);

this.now_left = marginleft+changeX;

this.move_left = changeX0;

if(sinMath.sin(Math.PI/3) || sin-Math.sin(Math.PI/3)){//滑動屏幕角度範圍:PI/3 — 2PI/3

return_value = true;//不阻止默認行為

}

this.point_x = point_x;

this.point_y = point_y;

this.box.css(this.get_style(2));

return return_value;

},

move_end : function(){

var changeX = this.now_left%this.width,ind;

if(this.now_leftthis.minleft){//手指向左滑動

ind = this.index +1;

}else if(this.now_leftthis.maxleft){//手指向右滑動

ind = this.index-1;

}else if(changeX!=0){

if(this.move_left){//手指向左滑動

ind = this.index+1;

}else{//手指向右滑動

ind = this.index-1;

}

}else{

ind = this.index;

}

this.point_x = this.point_y = null;

this.go_index(ind);

},

/*

獲取動畫樣式,要兼容更多瀏覽器,可以擴展該方法

@int fig : 1 動畫 2 沒動畫

*/

get_style : function(fig){

var x = this.now_left ,

time = fig==1?this.scroll_time:0;

return {

‘-webkit-transition’:’-webkit-transform ‘+time+’ms’,

‘-webkit-transform’:’translate3d(‘+x+’px,0,0)’,

‘-webkit-backface-visibility’: ‘hidden’,

‘transition’:’transform ‘+time+’ms’,

‘transform’:’translate3d(‘+x+’px,0,0)’

};

}

});

/*

這裡對外提供調用介面,對外提供介面方法

next :下一頁

prev :上一頁

go :滾動到指定頁

*/

$.mggScrollImg = function(box,config){

var scrollImg = new mggScrollImg(box,config);

return {//對外提供介面

next : function(){scrollImg.next();},

prev : function(){scrollImg.prev();},

go : function(ind){scrollImg.go_index(parseInt(ind)||0);}

}

}

})(Zepto)

//輪播器

var crs_num=1

function interval(){

carousel=setInterval(function(){

num2=crs_num*-800

$(‘.crs_img’).animate({

attr:’x’,

target:num2,

time:50,

speed:10,

})

$(‘.crs_words p’).html($(‘.crs_img img’).getnum(crs_num).attr(‘alt’))

$(‘#carousel li’).css(‘color’,’#999′)

$(‘#carousel li’).getnum(crs_num).css(‘color’,’#333′)

crs_num++;

if(crs_num==3)crs_num=0;

},3000)

}

interval();

$(‘#carousel li’).hover(function(){

var num=$(this).childNum()*-800

clearInterval(carousel)

$(‘.crs_img’).animate({

attr:’x’,

target:num,

time:50,

speed:5,

})

$(‘.crs_words p’).html($(‘.crs_img img’).getnum($(this).childNum()).attr(‘alt’))

$(‘#carousel li’).css(‘color’,’#999′)

$(this).css(‘color’,’#333′)

},function(){

interval()

})

animate是自己封裝的,可能和jq不兼容

!DOCTYPE html

html

head

meta charset=”UTF-“

title最簡單的輪播廣告/title

style

body, div, ul, li {

margin: ;

padding: ;

}

ul {

list-style-type: none;

}

body {

background: #;

text-align: center;

font: px/px Arial;

}

#box {

position: relative;

width: px;

height: px;

background: #fff;

border-radius: px;

border: px solid #fff;

margin: px auto;

}

#box .list {

position: relative;

width: px;

height: px;

overflow: hidden;

border: px solid #ccc;

}

#box .list li {

position: absolute;

top: ;

left: ;

width: px;

height: px;

opacity: ;

transition: opacity .s linear

}

#box .list li.current {

opacity: ;

}

#box .count {

position: absolute;

right: ;

bottom: px;

}

#box .count li {

color: #fff;

float: left;

width: px;

height: px;

cursor: pointer;

margin-right: px;

overflow: hidden;

background: #F;

opacity: .;

border-radius: px;

}

#box .count li.current {

color: #fff;

opacity: .;

font-weight: ;

background: #f

}

/style

/head

body

div id=”box”

ul

li style=”opacity: ;”img src=”img/images/.jpg” width=”” height=””/li

li style=”opacity: ;”img src=”img/images/.jpg” width=”” height=””/li

li style=”opacity: ;”img src=”img/images/.jpg” width=”” height=””/li

li style=”opacity: ;”img src=”img/images/.jpg” width=”” height=””/li

li style=”opacity: ;”img src=”img/images/.jpg” width=”” height=””/li

/ul

ul

li/li

li class=””/li

li class=””/li

li class=””/li

li class=””/li

/ul

/div

script

var box=document.getElementById(‘box’);

var uls=document.getElementsByTagName(‘ul’);

var imgs=uls[].getElementsByTagName(‘li’);

var btn=uls[].getElementsByTagName(‘li’);

var i=index=; //中間量,統一聲明;

var play=null;

console.log(box,uls,imgs,btn);//獲取正確

//圖片切換, 淡入淡出效果我是用(transition: opacity .s linear)做的,不糾結、簡單 在css裡面

function show(a){    //方法定義的是當傳入一個下標時,按鈕和圖片做出對的反應

for(i=;ibtn.length;i++ ){

btn[i].className=”;  //很容易看懂吧?每個按鈕都先設置成看不見,然後把當前按鈕設置成可見。

btn[a].className=’current’;

}

for(i=;iimgs.length;i++){ //把圖片的效果設置和按鈕相同

imgs[i].style.opacity=;

imgs[a].style.opacity=;

}

}

//切換按鈕功能,響應對應圖片

for(i=;ibtn.length;i++){

btn[i].index=i; //不知道你有沒有發現,循環里的方法去調用循環里的變數體i,會出現調到的不是i的變動值的問題。所以我先在循環外保存住

btn[i].onmouseover=function(){

show(this.index);

clearInterval(play); //這就是最後那句話追加的功能

}

}

//自動輪播方法

function autoPlay(){

play=setInterval(function(){ //這個paly是為了保存定時器的,變數必須在全局聲明 不然其他方法調不到 或者你可以調用auto.play 也許可以但是沒時間試了

index++;

index=imgs.length(index=);//可能有優先順序問題,所以用了括弧,沒時間測試了。

show(index);

},)

}

autoPlay();//馬上調用,我試過用window.onload調用這個方法,但是調用之後影響到了其他方法,使用autoPlay所以只能這樣調用了

//div的滑鼠移入移出事件

box.onmouseover=function(){

clearInterval(play);

};

box.onmouseout=function(){

autoPlay();

};

//按鈕下標也要加上相同的滑鼠事件,不然圖片停止了,定時器沒停,會突然閃到很大的數字上。 貌似我可以直接追加到之前定義事件中。

/script

/body

/html

//時間控制的廣告代碼

var cookie = {

ad0:30,//時間控制第一個廣告30分鐘輪播

ad1:60,//時間控制第二個廣告60分鐘輪播

ad_num : 2,

get_cookie : function(Name){var search = Name + “=”; var returnvalue = “”;if (document.cookie.length 0) {offset = document.cookie.indexOf(search);if (offset != -1) {offset += search.length;end = document.cookie.indexOf(“;”, offset);if (end == -1)end = document.cookie.length;returnvalue=unescape(document.cookie.substring(offset, end));}}return returnvalue;},

init : function(){

for(var i=0; icookie.ad_num; i++){

if(cookie.get_cookie(‘ppad_cookie_’+i)){

continue;

}else{

var Then = new Date();current_time = eval(‘cookie.ad’+i);Then.setTime(Then.getTime() + current_time*60*1000);document.cookie=’ppad_cookie_’+i+’=1;expires=’+ Then.toGMTString()+’;path=/;’;

switch(i){

case 0:

廣告代碼一 break;

case 1:

廣告代碼二 break;

}

break;

}

}

}

}

cookie.init();

//直接就放JS文件裡面

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126141.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:06
下一篇 2024-10-03 23:06

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • 手機杜比音效有必要開嗎?

    杜比音效是一個在影音領域中非常知名的品牌。許多手機都已經將杜比音效作為一個賣點來進行推廣。那麼,手機杜比音效有必要開嗎?本文將從多個方面進行闡述。 一、杜比音效的介紹 杜比音效是一…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 如何設置chrome不同步手機歷史記錄

    使用chrome瀏覽器時,在登錄chrome賬號的情況下,由於默認同步功能,瀏覽器歷史記錄等數據都會同步到其他設備上,但是有時候我們並不想這麼做,比如為了保護隱私、避免干擾等等。所…

    編程 2025-04-29

發表回復

登錄後才能評論