原生JS實現輪播+學前端的感受(防止走火入魔)

来源:http://www.cnblogs.com/susufufu/archive/2016/08/19/5787267.html
-Advertisement-
Play Games

插件!插件!天天聽到有人求這個插件,那個插件的,當然,用第三方插件可以大幅提高開發效率,但作為新手,我還是喜歡自己來實現,主要是我有時間! 今天我來給大家分享下用原生JS實現圖片輪播的寫法 前輩們可以無視下麵這段廢話: 在開始之前,先說下我學前端到現在的一點感受。到今天應該有兩個月左右了吧,基本每天 ...


插件!插件!天天聽到有人求這個插件,那個插件的,當然,用第三方插件可以大幅提高開發效率,但作為新手,我還是喜歡自己來實現,主要是我有時間!

今天我來給大家分享下用原生JS實現圖片輪播的寫法

前輩們可以無視下麵這段廢話:
在開始之前,先說下我學前端到現在的一點感受。到今天應該有兩個月左右了吧,基本每天6-10小時的學習時間,純自學,據說培訓不靠譜!本人目前的階段是只會三大件(HTML5、CSS3、javascript),其它所有知識都還排在學習計劃後面....現在正處在迷茫期,不知道下麵該先學什麼了!不管了,先把三大件整溜一點再說吧,前輩們若有什麼好的建議,希望指點!

從HTML5到CSS3,一路過來,感覺前端挺簡單的,就有點信心滿滿,動力十足,接著學JS,以前學過C#、蘋果的swift,都是面向對象的強類型的語言,比較先進,不過我還是喜歡前端,所以轉到這裡來了,開始學JS也覺得挺容易的,就是感覺這門語言有點亂,跟別人不太一樣!而權威指南有些東西不容易弄明白,沒辦法,就多百度,多看別人對一些比如閉包、原型等概念的理解,慢慢的也就能掌握的7788了,到了這個階段,你也許已經慢慢的瞭解到,原來前端它包括很多東西!一堆的第三方類庫、框架等等,還有很多其它東西,總之,新名詞不斷的在你眼前冒出來,有的說這個要過時了,那個即將是主流,好亂!好亂!接下去我該怎麼走?先學什麼?後學什麼?

我目前就處在這個階段,有時候會連續兩天什麼都看不下去,也睡不著覺,心煩意亂,就是:走火入魔了!

我就想啊,我這是怎麼了?想不明白啊!算了,先休息下,鍛煉下身體吧!就去跑步,瞎逛!一邊思考:怎麼讓自己重新進入狀態!

後來我是這麼做的:給自己點糖吃!(自己先動手做一些比較簡單的實例)

我發現,這糖還真甜,我居然能做出來!成就感悠然而生,動力也就十足了!我就一個實例接著一個實例的寫,不懂、對API不熟悉就翻文檔(在看別人的代碼之前自己先寫,實在不會了再看),慢慢的,我感覺自己真的又回來了,開始步入正軌了!

我還特地看了下,目前大部分招前端的公司都需要什麼樣的人,然後重新給自己制定了學習計劃,當然,因為眼下我有時間,所以我想拿一段時間出來先鞏固下3大基礎,多練習,然後回頭再過一遍文檔,多瞭解它們的基本的、內在的原理!下一步不管學什麼,就容易上手的多了!同時,繼續多瞭解前端!多瞭解這個職業的前景和走向,就是給自己建立一個前端的世界觀,這樣,學起來才不會迷失方向!

至於該學哪些第三方類庫、框架,我目前也不知道,JQ過時了嗎?需不需學?我也不知道,也先不管了,就先玩玩原生吧!以後應該自然就知道了吧!

實戰開始,下麵是代碼和演示,寫法參考了這位前輩:仿QQ輪播圖
前輩的面向對象寫法,目前本人還學不來,我只會寫一些函數,呵呵!(圖片來自網路,也可自己切個300*200圖片來查看效果,點擊‘漸進漸出’按鈕開始)

一開始,先想,該怎麼實現:不就利用定時器改變圖片,過場改變圖片的opacity嗎?

一、html排版比較簡單:
`

 <ul id="slide-nav">
 </ul>

<div id="slide-main" class="slide-content1">
        <a class="a-img" title="" href="" target="_blank">
            <div>
                <img src="lg1.png">
            </div>
        </a>
        ...
</div>
...

`
slide-info用來顯示圖片標題,slide-nav是數字按鈕,slide-main就是圖片容器了,裡面放圖片鏈接,

    標簽裡面沒寫li,因為它是通過JS動態創建的;

    二、CSS樣式的設置,只要你親自去體驗,就都能明白了,註意點:

    1. 自己佈局前,先最好把父元素加border,這樣一幕瞭然,最後再去掉
    2. ul li 等很多標簽預設是有padding的,所有要把它設為0;
      *{ margin: 0; padding: 0; list-style: none; text-decoration: none; }
    3. height: 25px;line-height: 25px;兩個相等,可以讓字居中
    4. z-index只相對於你的兄弟和子輩,對於旁系的親戚無效,如果想讓它顯示在旁系的親戚前面,就設置旁系的親戚的祖先,比如你的爺爺是宰相,你的二爺是農民,那麼你們家所有人身份都比你二爺家的所有人的身份都尊貴
    5. position: absolute;也是和他的父輩有關係的,父輩沒設置定位,靠不住啊,那就繼續往上找依靠,直到找到為止,然後依靠他來定位!
    6. 如果你要實現從右向左的效果,記住font-size:0;清楚圖片之間的間距,讓圖片肩並肩!

    俗話說,熟能生巧,只有CSS基礎扎實,才能把控好佈局!比如下麵這個雙飛翼佈局,不需要定位就能實現:

    三、代碼的實現

    先寫大綱:
    var sufuImageScrooller = function(){
    function getById(id){...} //通用獲取元素對象
    function setOpacity(elem,level){...} //設置透明度
    function hide(img){...} //淡入
    function show(omg){...} //淡出
    function inOutModel(nums,navId,imgContainerId,imgInfoId,delay){ ... } //主函數體
    return {
    inOutModel: inOutModel,
    ...
    }
    }();

    這樣的寫法就可以通過sufuImageScrooller來調用inOutModel方法了,sufuImageScrooller. inOutModel(5,'slide-nav','slide-main','slide-info',3500);

    inOutModel(nums,navId,imgContainerId,imgInfoId,delay)參數:nums創建li數量,必須和圖片數量對應,navId數字按鈕容器id,imgContainerId圖片容器id,imgInfoId顯示圖片title信息id,delay指定切換圖片延遲時間;

    大綱寫出來了,就完成了一大半了,其它就是具體細節代碼的實現了,我寫的不是很好,只能說實現了這個功能,大家自己琢磨,如果有好的建議歡迎提出;
    從inOutModel函數開始切入,然後步步深入,關鍵在於動手打出來,光看的話體會沒那麼深刻!

    好了,就介紹到這一步了,不會的自己多翻文檔API,也可留言問我


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一直對移動項目不是很熟悉,做的很少,用的都是一些百分比,惡補了一下。 一.首先看下頭部。 format-detection翻譯成中文的意思是“格式檢測”,顧名思義,它是用來檢測html里的一些格式的,那關於meta的format-detection屬性主要是有以下幾個設置:meta name="fo ...
  • 前言 隨著移動設備的普及,移動web在前端工程師們的工作中占有越來越重要的位置。移動設備更新速度頻繁,手機廠商繁多,導致的問題是每一臺機器的屏幕寬度和解析度不一樣。這給我們在編寫前端界面時增加了困難,適配問題在當下顯得越來越突出。記得剛剛開始開發移動端產品的時候向設計MM要了不同屏幕的設計圖,結果可 ...
  • 話說App一般都帶有分享到社交平臺的入口,web網頁的分享也有很不錯的框架,但是隨著HTML5的不斷發展,手機web頁面越來越多的進入到我們的生活中,那如何在我們的手機上完成分享呢?話說各大分享平臺都有針對Android、Ios的SDK,作為開發者,我們只需要將SDK集成的我們的項目中即可,通過提供 ...
  • 標簽頁的切換方式 1、控制tab的顯示與隱藏 2、tab不切換,數據載入 控制tab的顯示與隱藏 前端腳本: 1、jquery實現: 引入jquery文件,代碼簡潔 jquery文件較大,瀏覽器不相容 2、js 實現 無需引入jquery文件代碼量大,需每個標簽添加函數及ID 3、插件實現 無需引入 ...
  • let與塊級作用域 在代碼中,使用var申明的變數在代碼塊外面能被識別,但是let命令卻不能被識別,這樣就實現了js的塊級作用域,我們在使用條件語句 迴圈語句等就會不擔心變數污染的問題了,以下是兩種寫法等對比: es6: es5: 在{}用let聲明的變數只有在{}內是有效的 let不會有變數提升 ...
  • 以下的分享是本人最近幾天學習了margin知識後,大有啟發,感覺以前對margin的瞭解簡直太淺薄。所以寫成以下文章,一是供自己整理思路;二是把知識分享出來,避免各位對margin屬性的誤解。內容可能會有點多,但都是精華,希望大家耐心學習。 以下的分享會分為如下內容: 1.margin 屬性的簡單介 ...
  • 在我電腦屏幕上顯示的 電腦是 1920*1080這是在document.compatMode:css1Compat模式 現在是document.compatMode:BackCompat:頁面沒有!doctype聲明 以上紅色部分就是說document.compatMode模式的區別下的網頁可視區域 ...
  • 定義 JavaScript定義正則表達式有兩種方法。 1.RegExp構造函數 它接收兩個參數:一個是要匹配的字元串模式,另一個是可選的標誌字元串。 2.字面量 正則表達式的匹配模式支持三種標誌字元串: g:global,全局搜索模式,該模式將被應用於所有字元串,而並非搜索到第一個匹配項就停止搜索; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...