SNS項目筆記<八>--Slides顯示大圖

slide為ionic專門處理圖片輪播的一個控件,在左右輪滑中,有很多控制双吆,導(dǎo)致一些細(xì)節(jié)上的要求便不可實現(xiàn)在塔,現(xiàn)總結(jié)了一下github上相關(guān)的issuse來完成對應(yīng)的需求實現(xiàn)幻件。

1、slides超出內(nèi)容蛔溃,豎直滾動

在瀏覽大圖的時候绰沥,我們總有些長圖進(jìn)行查看,在查看的過程中贺待,我們難以一次性查看全部內(nèi)容徽曲,于是我們想,如果在slides里面技能橫滑切換麸塞,又能豎滑滾動查看就好了秃臣。這里便研究源碼。

slides依賴.png

這里不難看出在slides里面通過依賴于swiper來實現(xiàn)橫滑縱滑輪播的哪工。這里貼上swiper的官方鏈接:【如果你想了解swipe嘗試動手自定義奥此,請點擊這里】。通過了解源碼雁比,我們知道在slide滑動的時候由“slideTo()”這個方法控制滑動的稚虎。這里貼上源碼:

/**
 * @param {?} s
 * @param {?} plt
 * @param {?=} slideIndex
 * @param {?=} speed
 * @param {?=} runCallbacks
 * @param {?=} internal
 * @return {?}
 */
export function slideTo(s, plt, slideIndex, speed, runCallbacks, internal) {
    if (runCallbacks === void 0) { runCallbacks = true; }
    if (typeof slideIndex === 'undefined')
        slideIndex = 0;
    if (slideIndex < 0)
        slideIndex = 0;
    s._snapIndex = Math.floor(slideIndex / s.slidesPerGroup);
    if (s._snapIndex >= s._snapGrid.length)
        s._snapIndex = s._snapGrid.length - 1;
    var /** @type {?} */ translate = -s._snapGrid[s._snapIndex];
    // Stop autoplay
    if (s.autoplay && s._autoplaying) {
        if (internal || !s.autoplayDisableOnInteraction) {
            pauseAutoplay(s, plt, speed);
        }
        else {
            stopAutoplay(s);
        }
    }
    // Update progress
    updateProgress(s, translate);
    // Directions locks
    if (!s._allowSwipeToNext && translate < s._translate && translate < minTranslate(s)) {
        return false;
    }
    if (!s._allowSwipeToPrev && translate > s._translate && translate > maxTranslate(s)) {
        if ((s._activeIndex || 0) !== slideIndex)
            return false;
    }
    // Update Index
    if (typeof speed === 'undefined')
        speed = s.speed;
    s._previousIndex = s._activeIndex || 0;
    s._activeIndex = slideIndex;
    updateRealIndex(s);
    if ((s._rtl && -translate === s._translate) || (!s._rtl && translate === s._translate)) {
        // Update Height
        if (s.autoHeight) {
            updateAutoHeight(s);
        }
        updateClasses(s);
        if (s.effect !== 'slide') {
            setWrapperTranslate(s, plt, translate);
        }
        return false;
    }
    updateClasses(s);
    onTransitionStart(s, runCallbacks);
    if (speed === 0) {
        setWrapperTranslate(s, plt, translate);
        setWrapperTransition(s, plt, 0);
        onTransitionEnd(s, plt, runCallbacks);
    }
    else {
        setWrapperTranslate(s, plt, translate);
        setWrapperTransition(s, plt, speed);
        if (!s._animating) {
            s._animating = true;
            plt.transitionEnd(s._wrapper, function () {
                if (!s)
                    return;
                onTransitionEnd(s, plt, runCallbacks);
            });
        }
    }
    return true;
}

這里重點是updateClasses(s)這個方法,這個方法讓我們看到了其源碼是在切換的時候通過此方法來改變slides的整體布局的偎捎,源碼中最重要的是這句"addClass"蠢终,這里貼上源碼:

addClass重點方法.png
addClass方法本身.png

也就是說,在整個滑動過程中茴她,變化的樣式是通過s:Slides本身來實現(xiàn)的寻拂,于是我們可以通過查找slides本身的樣式來完成復(fù)用,最終達(dá)到我們理想的效果:

Slides樣式.png

這里我們可以看到败京,我們的img樣式被固定為此樣式兜喻,我們可以在使用slides的頁面樣式中復(fù)用此樣式,就可以讓我們的img擁有更多我們自定義的功能赡麦,從而達(dá)到我們預(yù)期的效果:


我的項目代碼復(fù)用.png

樣式達(dá)到的效果.gif

2朴皆、點擊放大

同樣帕识,研究源碼中,我們可以看到有個zoom選項遂铡,其中與zoom相關(guān)的屬性有以下這么幾個:


關(guān)于zoom的屬性.png

我們不難看出肮疗,在API中隱藏了zoomToogle、zoomMax扒接、zoomMin這三大屬性伪货,zoomToogle是用來判斷是否開啟點擊放大,zoomMax點擊放大后顯示的最大的大小钾怔,zoomMin點擊圖片正常顯示的大小倍率碱呼。我們可以根據(jù)不同的max與min組合來完成我們對圖片放大進(jìn)行的比例控制,不過一般可以不需要改變它們宗侦,它們默認(rèn)即為1與3愚臀,只用給予zoomToogle為true即可實現(xiàn)了。

出錯.gif

可惜的是矾利,在我們進(jìn)行實踐操作的時候姑裂,發(fā)現(xiàn)了出錯,緊接著我們看看cosole.log:

錯誤log.png

我們不難發(fā)現(xiàn)男旗,這個在swiper-zoom里面沒獲取到attribute舶斧,我們肯定在哪里忘了添加一個屬性了,于是博主在這里卡住了察皇,大海撈針茴厉,我們查看一下swiper官網(wǎng)的文檔:

官方文檔說明.png

按照官方的方式我們在img外層加個此class于是我們的寫法如下:

我們自己的寫法.png

于是再次運行便有以下效果:

完善代碼過后的效果.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市让网,隨后出現(xiàn)的幾起案子呀忧,更是在濱河造成了極大的恐慌,老刑警劉巖溃睹,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件而账,死亡現(xiàn)場離奇詭異,居然都是意外死亡因篇,警方通過查閱死者的電腦和手機泞辐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竞滓,“玉大人咐吼,你說我怎么就攤上這事∩逃樱” “怎么了锯茄?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我肌幽,道長晚碾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任喂急,我火速辦了婚禮格嘁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘廊移。我一直安慰自己糕簿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布狡孔。 她就那樣靜靜地躺著懂诗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苗膝。 梳的紋絲不亂的頭發(fā)上响禽,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音荚醒,去河邊找鬼。 笑死隆嗅,一個胖子當(dāng)著我的面吹牛界阁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胖喳,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼泡躯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丽焊?” 一聲冷哼從身側(cè)響起较剃,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎技健,沒想到半個月后写穴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡雌贱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年啊送,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欣孤。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡馋没,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出降传,到底是詐尸還是另有隱情篷朵,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站声旺,受9級特大地震影響笔链,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艾少,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一卡乾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缚够,春花似錦幔妨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雏吭,卻和暖如春锁施,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杖们。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工悉抵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摘完。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓姥饰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親孝治。 傳聞我的和親對象是個殘疾皇子列粪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,756評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,264評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫谈飒、插件岂座、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,117評論 4 61
  • 目錄 佛堂的事情太過繁雜,于是我從素素的小院搬了出來杭措,與初寒住在堂后的院子里费什。素素心腸熱,時常會來幫忙瓤介。 素素人長...
    冷清持閱讀 582評論 7 15
  • 「原創(chuàng)」劉保松 世事洞察皆學(xué)問 感受吕喘、踐行、精進(jìn) 1.樹優(yōu)勢 人區(qū)別于智能機器人的最核心的競爭力是“創(chuàng)意刑桑,靈感”...
    劉保松閱讀 269評論 0 0