寫給代碼小白:運(yùn)用JavaScirpt實(shí)現(xiàn)大圖滾動(dòng)

在大家平時(shí)瀏覽網(wǎng)頁(yè)時(shí),一定經(jīng)澈砹担看到許多首頁(yè)都會(huì)布置一些精美粪摘、酷炫的帶有滾動(dòng)效果的圖片,使網(wǎng)站更具有吸引力(如圖)。今天給大家分享一些簡(jiǎn)單的運(yùn)用H5和css3的內(nèi)容配合原生JS來實(shí)現(xiàn)大圖滾動(dòng)的方法. (由于本人也是剛剛接觸H5和JS,許多東西都是最基礎(chǔ)的,希望來往的大神輕點(diǎn)噴?? )

大圖滾動(dòng).png


準(zhǔn)備過程

新建文件夾,并命名,暫時(shí)命名為"滾動(dòng)"即可.另外新建文件夾"imgs",選幾張自己喜歡的圖片放到里面苔悦。
然后打開你的代碼編輯器,(本人用的 Hbuidler,功能足夠強(qiáng)大,在這里也推薦給大家...),新建HTML文件,命名為"index.html",同時(shí)新建css和js文件,命名為"sroll",至此準(zhǔn)備工作結(jié)束玖详。

HBuilder.png

準(zhǔn)備工作

簡(jiǎn)單布局

切換到html頁(yè)面,編輯代碼如下:

<div class="wrap">
   <div class="middle">
       <div><img src="imgs/1.jpg"/></div>
       <div><img src="imgs/2.jpg"/></div>
       <div><img src="imgs/3.jpg"/></div>
       <div><img src="imgs/4.jpg"/></div>
   </div>
   <div class="page_move" id="next" style="top: 950px">  >  </div>
   <div class="page_move" id="last" style="top: 0"><</div>
   <input type="button" class="pageBtn" value="1" />
   <input type="button" class="pageBtn" value="2" />
   <input type="button" class="pageBtn" value="3" />
   <input type="button" class="pageBtn" value="4" />
</div>

添加css樣式

編輯下方的代碼保存至.css文件中蟋座。
在設(shè)置樣式時(shí),采用了定位,通過改變left值,實(shí)現(xiàn)滾動(dòng)的效果向臀。

//清除樣式
*{
    margin: 0;
    padding: 0;
    border: 0;
}
//簡(jiǎn)單設(shè)置最外層屬性诸狭。值得注意的是這里用到'overflow:hidden'使超出div部分圖片隱藏。
.wrap{
    width: 1000px;
    height: 550px;
    position: relative;
    overflow: hidden;
    margin: 0 auto;
}
//給".middle"設(shè)置定位而且在這用到'transition',使圖片在移動(dòng)時(shí)有滾動(dòng)的效果芹彬。
.middle{
    height: 550px;
    position: absolute;
    top: 0;
    left: 0;
    transition: all 0.5s;
}
// 在內(nèi)層div處設(shè)置浮動(dòng),讓所有圖片排成一列叉庐。
.middle>div{
    width: 1000px;
    height: 550px;
    text-align: center;
    line-height: 350px;
    float: left;
    font-size: 50px;
}
.middle>div>img{
    width:100%;
// 由于只是簡(jiǎn)單的實(shí)現(xiàn)一下,這里的方向直接用尖括號(hào)代替了,畢竟程序猿都不喜歡麻煩??。
.page_move{
    width: 25px;
    height: 50px;
    color: white;
    text-align: center;
    line-height: 100px;
    background-color: #000000;
    opacity: 0.4;
    position: absolute;
    top: 150px;
}
.pageBtn{
    position: relative;
}
.wrap>input{
    width: 50px;
    height: 20px;
    color: white;
    background-color: rgba(0,0,0,0.3);
}

注意:給".middle"設(shè)置定位時(shí)要給left和top初始值,否則在第一張圖片移動(dòng)時(shí),不會(huì)產(chǎn)生滾動(dòng)效果玩郊。其次其width是在JS中給出,這一點(diǎn)就根據(jù)個(gè)人喜好,本人覺得放到JS會(huì)比較方便日后修改瓦宜。
添加完樣式后,效果如下圖:

scroll.png

scroll_html.png

JS部分

原生JS代碼:

//  獲取各項(xiàng)變量
var wrapDiv = document.querySelector(".wrap");
var middleDiv = document.querySelector(".middle")
var divs = document.querySelectorAll(".middle>div");
var nextBtn = document.getElementById("next");
var lastBtn = document.getElementById("last");
var pageBtn = document.querySelectorAll(".pageBtn");
// 設(shè)置定時(shí)器,和頁(yè)碼page
var page = 0;
var timer = null;
// middle 寬
// 獲取到wrap的寬度保存到變量里
var w = wrapDiv.offsetWidth;
middleDiv.style.width = w * divs.length + "px";
// middle移動(dòng)
function pageTurn() {
    middleDiv.style.left = -w * page + "px";
}
// 滾動(dòng):這里的direction是自己設(shè)置的參數(shù),用來判斷是向左滾動(dòng)還是向右滾動(dòng)
function scroll(direction) {
    if (direction == "next") {
        page++;
        if (page > divs.length - 1) {
            page = 0;
        }
    } else {
        page--;
        if (page < 0) {
            page = divs.length - 1;
        }
    }
    pageTurn();
}
// 利用定時(shí)器實(shí)現(xiàn)自動(dòng)滾動(dòng)
function autoScroll() {
    clearInterval(timer)
    timer = setInterval(function() {
        scroll("next");
    }, 1500)
}
nextBtn.onclick = function() {
    clearInterval(timer);
    scroll("next");
}
nextBtn.onmouseout = function() {
    autoScroll();
}
lastBtn.onclick = function() {
    clearInterval(timer);
    scroll();
}
lastBtn.onmouseout = function() {
    autoScroll();
}
window.onload = function() {
    autoScroll();
}
wrapDiv.onmouseover = function() {
    clearInterval(timer);
}
wrapDiv.onmouseout = function() {
    autoScroll();
}
// 利用for循環(huán),實(shí)現(xiàn)點(diǎn)擊頁(yè)碼來切換圖片
for (var i = 0; i < divs.length; i++) {
    pageBtn[i].index = i;//給input設(shè)置一個(gè)index屬性,將input下標(biāo)保存起來
    pageBtn[i].onmouseover = function() {
        page = this.index;//將input的下標(biāo)傳遞給page 
        pageTurn();
    }
    pageBtn[i].onmouseout = function() {
        autoScroll();
    }
}

將以上代碼保存在.js文件中反璃。

引用css文件和js文件

在html文件中添加css文件需要輸入的代碼:
"<link rel="stylesheet" type="text/css" href="scroll.css"/>"
其中"href"的等號(hào)后面索要添加的就是你css文件的相對(duì)路徑假夺。


css文件引用.png

在html文件中添加js文件需要輸入的代碼:
<script src="scroll.js" type="text/javascript" charset="utf-8"></script>
js文件的相對(duì)路徑要添加自"src"的等號(hào)后面


js文件的引用.png

到此為止利用原生js來實(shí)現(xiàn)圖片滾動(dòng)的方法就介紹完畢,效果圖發(fā)給大家已卷。
滾動(dòng).gif

運(yùn)用jquery實(shí)現(xiàn)大圖滾動(dòng)

如果覺得原生js很麻煩的話,大家也可以用jquery來實(shí)現(xiàn)侧蘸。
首先到官網(wǎng)去下載jquery庫(kù)文件,下載頁(yè)面:http://jquery.com/download/

jquery-download.png

進(jìn)入官方的下載頁(yè)面后點(diǎn)擊紅色框的鏈接即可下載了,當(dāng)然若是不打算兼容IE瀏覽器選擇黃色框會(huì)是更好的選擇。
以下是運(yùn)用jQuery庫(kù)寫的圖片滾動(dòng):

$(function(){
    $('.middle').css('width', function(){
        return $('.wrap').width() * $('img').length;
    })
    function scroll(){
        page++;
        if (page > $('img').length - 1) {
            page = 0;
        }
        $('.middle').animate({
            left: -$('.wrap').width() * page
        }, 1000)
    }
   var timer = null;
   function autoscroll(){
       timer = setInterval(function(){
           scroll();
       },2000)
   }
   autoscroll();
   var page = 0;
   $('.next').click(function (){
       clearInterval(timer);
       scroll();
   }).mouseout(function(){
       autoscroll();
   })
   $('.last').click(function(){
       clearInterval(timer);
       page--;
       if (page < 0) {
           page = $('img').length - 1;
       }
       $('.middle').animate({
           left: -$('.wrap').width() * page
       }, 1000)
   }).mouseout(function(){
       autoscroll();
   })
})```
由于本篇文章主要介紹的是運(yùn)用原生JS實(shí)現(xiàn)大圖滾動(dòng)的效果,jQuery方面便無須贅述,有興趣的可以
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市逢艘,隨后出現(xiàn)的幾起案子骤菠,更是在濱河造成了極大的恐慌,老刑警劉巖商乎,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹉戚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)踩官,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颖系,“玉大人,你說我怎么就攤上這事信粮〕眯ィ” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵旅掂,是天一觀的道長(zhǎng)访娶。 經(jīng)常有香客問我崖疤,道長(zhǎng),這世上最難降的妖魔是什么劫哼? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任沦偎,我火速辦了婚禮,結(jié)果婚禮上豪嚎,老公的妹妹穿的比我還像新娘。我一直安慰自己舌涨,他們只是感情好扔字,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布革为。 她就那樣靜靜地躺著,像睡著了一般震檩。 火紅的嫁衣襯著肌膚如雪蜓堕。 梳的紋絲不亂的頭發(fā)上博其,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天慕淡,我揣著相機(jī)與錄音,去河邊找鬼傻寂。 笑死儿普,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的眉孩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼巴柿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼死遭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呀潭,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤钠署,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谐鼎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡身害,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年塌鸯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唐片。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丢习。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揽思,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羹令,我是刑警寧澤损痰,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站肪凛,受9級(jí)特大地震影響辽社,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滴铅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一汉匙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧噩翠,春花似錦、人聲如沸浦妄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阅懦。三九已至徘铝,卻和暖如春惯吕,著一層夾襖步出監(jiān)牢的瞬間怕午,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工堡距, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兆蕉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓易稠,卻偏偏與公主長(zhǎng)得像包蓝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衬吆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,377評(píng)論 24 450
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評(píng)論 25 707
  • 看“零極限”的書兩年了,很難相信四句簡(jiǎn)單的話就能讓生活發(fā)生變化零酪,因?yàn)楹?jiǎn)單,偶爾也會(huì)使用孝凌,然而月腋,正如內(nèi)心認(rèn)為的那樣,...
    希木易陽(yáng)999閱讀 1,399評(píng)論 0 1
  • 投射:1希望客人送手機(jī)給我 2希望和她有進(jìn)一步發(fā)展 3希望吸引更多金錢片拍。 感賞:1很多貴人在幫助我業(yè)績(jī) 2每天都遵...
    謝奕鋒閱讀 128評(píng)論 0 0
  • 最近碉钠,看到一個(gè)曾經(jīng)喜歡了接近4年代額男孩子卷拘,一個(gè)人背著背包坐了57小時(shí)火車到拉薩祝高,心里一種莫名其妙的感動(dòng)。 我記得...
    一個(gè)喜歡孤獨(dú)的怪人兒閱讀 669評(píng)論 0 0