一個(gè)簡(jiǎn)單輪播

1. 準(zhǔn)備圖片屎开,最好是寬高一樣的。設(shè)置圖片的寬度

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <div class="images">
    <img src="https://i.loli.net/2018/10/13/5bc1604f2a255.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f3b560.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f83051.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f836b9.jpg" width=480 alt="">
  </div>
</body>
</html>

2. 設(shè)置一個(gè)窗口马靠;讓圖片橫向顯示奄抽;設(shè)置邊框,然后觀察

<div class="window">
  <div class="images">
    <img src="https://i.loli.net/2018/10/13/5bc1604f2a255.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f3b560.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f836b9.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f83051.jpg" width=480 alt="">
  </div>
</div>
<style>
  .images{ 
    display: flex;
    align-items: flex-start;/*交叉軸的起點(diǎn)對(duì)齊*/
  }
  .window{
    border: 3px solid green;
  }
</style>

圖片超出了綠色邊框的寬度甩鳄,綠色邊框的寬度是和頁(yè)面寬度相同逞度。

3. 設(shè)置窗口的寬高,和第一個(gè)圖片寬高相同妙啃,然后設(shè)置 overflow: hidden 档泽;

<style>
  .images{ 
    display: flex;
    align-items: flex-start;
  }
  .window{
    border: 3px solid green;
    width: 480px;
    height: 320px;
    overflow: hidden;
  }

此時(shí)顯示的只有第一張圖片,只需要改變images 的水平位置揖赴,就可以看到其他圖片:

  <div class="window">
    <div class="images" style="transform: translateX(-480px)">
      <img src="https://i.loli.net/2018/10/13/5bc1604f2a255.jpg" width=480 alt="">
      <img src="https://i.loli.net/2018/10/13/5bc1604f3b560.jpg" width=480 alt="">
      <img src="https://i.loli.net/2018/10/13/5bc1604f836b9.jpg" width=480 alt="">
      <img src="https://i.loli.net/2018/10/13/5bc1604f83051.jpg" width=480 alt="">
    </div>
  </div>

4. 添加 button 馆匿,通過(guò) js 控制使點(diǎn)擊顯示相應(yīng)圖片,初步實(shí)現(xiàn)輪播

<div class="window">
  <div class="images" id="images">
    <img src="https://i.loli.net/2018/10/13/5bc1604f2a255.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f3b560.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f836b9.jpg" width=480 alt="">
    <img src="https://i.loli.net/2018/10/13/5bc1604f83051.jpg" width=480 alt="">
  </div>
</div>
<button id="p1">第1張</button>
<button id="p2">第2張</button>
<button id="p3">第3張</button>
<button id="p4">第4張</button>
<style>
  .images{ 
    display: flex;
    align-items: flex-start;
    transition: transform 0.5s;
  }
  .window{
    width: 480px;
    height: 320px;
    overflow: hidden;
  }
</style>
$(p1).on('click',function(){
  $(images).css({
  transform: 'translateX(0)'})
})
$(p2).on('click',function(){
  $(images).css({
    transform: 'translateX(-480px)'
  })
})
$(p3).on('click',function(){
  $(images).css({
    transform: 'translateX(-960px)'
  })
})
$(p4).on('click',function(){
  $(images).css({
    transform: 'translateX(-1440px)'
  })
})

5. 調(diào)整代碼燥滑,可以支持更多張圖片輪播

<div class="window">
    <div class="images" id="images">
      <img src="https://i.loli.net/2018/10/13/5bc1604f2a255.jpg" width=480 alt="">
      <img src="https://i.loli.net/2018/10/13/5bc1604f3b560.jpg" width=480 alt="">
      <img src="https://i.loli.net/2018/10/13/5bc1604f836b9.jpg" width=480 alt="">
      <img src="https://i.loli.net/2018/10/13/5bc1604f83051.jpg" width=480 alt="">
    </div>
  </div>
  <span id="buttons">
    <span>第1張</span>
    <span>第2張</span>
    <span>第3張</span>
    <span>第4張</span>
  </span>
var allButtons = $('#buttons > span')
for( let i=0; i<allButtons.length; i++){
  $(allButtons[i]).on('click',function(x){
    var index = $(x.currentTarget).index()
//index()可以得到當(dāng)前元素在父元素下所有子元素中排在第幾個(gè)渐北,并返回這個(gè)值
    var n = index*-480
    $('#images').css({
      transform: 'translateX('+ n + 'px)'
    })
  })
}

6. 實(shí)現(xiàn)輪播自動(dòng)播放

var allButtons = $('#buttons > span')
for( let i=0; i<allButtons.length; i++){
  $(allButtons[i]).on('click',function(x){
    var index = $(x.currentTarget).index()
    var n = index*-480
    $('#images').css({
      transform: 'translateX('+ n + 'px)'
    })
  })
}

var a = 0
var size = allButtons.length
allButtons.eq(a%size).trigger('click')
//eq()找出對(duì)應(yīng)的dom,封裝成對(duì)應(yīng)的 jQuery铭拧;trigger用于觸發(fā)事件
setInterval(()=>{
  a += 1
  allButtons.eq(a%size).trigger('click')
},1000) // 實(shí)現(xiàn)自動(dòng)輪播

7. 文字高亮

.red{
  color: red;
}
var a = 0
var size = allButtons.length
allButtons.eq(a%size).trigger('click')
  .addClass('red')
  .siblings('.red').removeClass('red')
setInterval(()=>{
  a += 1
  allButtons.eq(a%size).trigger('click')
  .addClass('red')
  .siblings('.red').removeClass('red')
},1000) // 實(shí)現(xiàn)自動(dòng)輪播赃蛛;添加和刪除class實(shí)現(xiàn)相應(yīng)文字的高亮

8. 鼠標(biāo)移入圖片時(shí)自動(dòng)輪播停止,移開(kāi)時(shí)恢復(fù)自動(dòng)輪播

var a = 0
var size = allButtons.length
allButtons.eq(a%size).trigger('click')
  .addClass('red')
  .siblings('.red').removeClass('red')
var timerId = setInterval(()=>{
  a += 1
  allButtons.eq(a%size).trigger('click')
  .addClass('red')
  .siblings('.red').removeClass('red')
},1000) 

$('.window').on('mouseenter',function(){
  window.clearInterval(timerId)
})
$('.window').on('mouseleave',function(){
  timerId = setInterval(()=>{
    a += 1
    allButtons.eq(a%size).trigger('click')
    .addClass('red')
    .siblings('.red').removeClass('red')
  },1000)
})

9. 點(diǎn)擊文字時(shí)文字高亮

var allButtons = $('#buttons > span')
for( let i=0; i<allButtons.length; i++){
  $(allButtons[i]).on('click',function(x){
    var index = $(x.currentTarget).index()
    var n = index*-480
    $('#images').css({
      transform: 'translateX('+ n + 'px)'
    })
    a = index
    allButtons.eq(a)
    .addClass('red')
    .siblings('.red').removeClass('red') 
  })
}

var a = 0
var size = allButtons.length
allButtons.eq(a%size).trigger('click')
  .addClass('red')
  .siblings('.red').removeClass('red')
var timerId = setInterval(()=>{
  a += 1
  allButtons.eq(a%size).trigger('click')
  .addClass('red')
  .siblings('.red').removeClass('red')
},3000) 

$('.window').on('mouseenter',function(){
  window.clearInterval(timerId)
})
$('.window').on('mouseleave',function(){
  timerId = setInterval(()=>{
    a += 1
    allButtons.eq(a%size).trigger('click')
    .addClass('red')
    .siblings('.red').removeClass('red')
  },3000)
})

10. 簡(jiǎn)化代碼

var allButtons = $('#buttons > span')
for( let i=0; i<allButtons.length; i++){
  $(allButtons[i]).on('click',function(x){
    var index = $(x.currentTarget).index()
    var n = index*-480
    $('#images').css({
      transform: 'translateX('+ n + 'px)'
    })
    a = index
    activeButtons(allButtons.eq(a))
  })
}

var a = 0
var size = allButtons.length
playSlide(a%size)

var timerId = setTimer()

function playSlide(index){
  allButtons.eq(index).trigger('click')
}

function setTimer(){
  return setInterval(()=>{
    a += 1
    playSlide(a%size)
  },3000)
}

function activeButtons($buttons){
  $buttons.addClass('red')
  .siblings('.red').removeClass('red')
}

$('.window').on('mouseenter',function(){
  window.clearInterval(timerId)
})
$('.window').on('mouseleave',function(){
  timerId = setTimer()
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搀菩,一起剝皮案震驚了整個(gè)濱河市呕臂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肪跋,老刑警劉巖歧蒋,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異澎嚣,居然都是意外死亡疏尿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門易桃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)褥琐,“玉大人,你說(shuō)我怎么就攤上這事晤郑〉谐剩” “怎么了贸宏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)磕洪。 經(jīng)常有香客問(wèn)我吭练,道長(zhǎng),這世上最難降的妖魔是什么析显? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任鲫咽,我火速辦了婚禮,結(jié)果婚禮上谷异,老公的妹妹穿的比我還像新娘分尸。我一直安慰自己,他們只是感情好歹嘹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布箩绍。 她就那樣靜靜地躺著,像睡著了一般尺上。 火紅的嫁衣襯著肌膚如雪材蛛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天怎抛,我揣著相機(jī)與錄音卑吭,去河邊找鬼。 笑死抽诉,一個(gè)胖子當(dāng)著我的面吹牛陨簇,可吹牛的內(nèi)容都是我干的吐绵。 我是一名探鬼主播迹淌,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼己单!你這毒婦竟也來(lái)了唉窃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纹笼,失蹤者是張志新(化名)和其女友劉穎纹份,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體廷痘,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔓涧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笋额。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片元暴。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兄猩,靈堂內(nèi)的尸體忽然破棺而出茉盏,到底是詐尸還是另有隱情鉴未,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布鸠姨,位于F島的核電站铜秆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏讶迁。R本人自食惡果不足惜连茧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望巍糯。 院中可真熱鬧梅屉,春花似錦、人聲如沸鳞贷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)搀愧。三九已至惰聂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咱筛,已是汗流浹背搓幌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迅箩,地道東北人溉愁。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像饲趋,于是被迫代替她去往敵國(guó)和親拐揭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1奕塑、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,981評(píng)論 3 119
  • 母親大人對(duì)我的教育方式或者說(shuō)我們家對(duì)我的教育方式是屬于放養(yǎng)式教育堂污。家里面從不會(huì)對(duì)我施加什么壓力,在家里屬于我想干什...
    最喜不過(guò)淡雅閱讀 150評(píng)論 2 1
  • 接受我的矯揉造作 卻不接受我的真心實(shí)意 原諒我的粗心大意 卻不原諒我的愚昧無(wú)知 分享我的閑情逸致 卻不分享我的淚眼...
    阿琰小可愛(ài)閱讀 173評(píng)論 0 0
  • 生活中的種種龄砰,我們不能聽(tīng)信他人的一面之詞盟猖,但從話中不妨能知道些什么,人都是自私的换棚,所以你可以依靠的除了父母只有你自...
    Sweet雪x閱讀 190評(píng)論 0 0
  • 《六韜.龍韜.立將》:見(jiàn)其虛則進(jìn)式镐,見(jiàn)其實(shí)則止。勿以三軍為眾而輕敵固蚤,勿以受命為重而必死娘汞,勿以身貴而賤人,勿以獨(dú)見(jiàn)而違...
    禪師虎閱讀 506評(píng)論 0 1