swiper的一些應(yīng)用經(jīng)驗(yàn)

最近做了個(gè)用swiper切換四個(gè)tab無(wú)線滾動(dòng)的需求,之前沒(méi)用過(guò)swiper蛔钙,使用過(guò)程中遇到一些問(wèn)題去件,解決完后還是很好用的,記錄下就缆。

<div class="GJ_Gp gp-health-list container swiper-container" data-module="vue2,swiper,modules/newlist2" id="content">
<div class="tab" id="tab">
<div class="inner">
<span :class="{active: tabIndex == 0}" @click="set(0)" id="tj" class="tabs">推薦</span>
<span :class="{active: tabIndex == 1}" @click="set(1)" id="jk" class="tabs">健康</span>
<span :class="{active: tabIndex == 2}" @click="set(2)" id="qw" class="tabs">趣味</span>
<span :class="{active: tabIndex == 3}" @click="set(3)" id="fx" class="tabs">患病風(fēng)險(xiǎn)</span>
</div>
</div>
<div class="wrap swiper-wrapper">
<ul class="swiper-slide" id="tuijian" data-hash="slide1">
<li v-for="list in list1">
<a :href="list.accessUrl">
<img alt="" :src="list.listPic">
</a>
<div class="didTest" v-cloak><span v-text="list.testCount + '人已測(cè)試'"></span></div>
</li>
<#--tuijian-->
</ul>

頁(yè)面結(jié)構(gòu)大概是帖渠,頂部一個(gè)fixed定位的tab用來(lái)充當(dāng)pageination的作用,每個(gè)span下面用偽元素來(lái)做小藍(lán)條竭宰,綁定active 來(lái)切換顯示空郊,當(dāng)頁(yè)面進(jìn)來(lái)mounted之后發(fā)起四個(gè)請(qǐng)求分別將請(qǐng)求回來(lái)的數(shù)據(jù)灌滿四個(gè)ul(分別對(duì)應(yīng)4個(gè)swiper-slide) ,然后就是需求中有兩個(gè)swiper-slide是有直接的入口鏈接的,從鏈接處點(diǎn)擊進(jìn)來(lái)要求直接定位到當(dāng)前tab下切揭,這里就涉及到swiper的兩個(gè)特殊屬性了狞甚,一個(gè)是hashnav,一個(gè)是initialSlide廓旬, 第一個(gè)是代表啟用swiper的瀏覽器hash特性哼审,如果設(shè)置hashnav:true,需要配合在每個(gè)swiper-slide上添加data-hash="slide1" data-hash="slide2" 這樣當(dāng)跳轉(zhuǎn)進(jìn)來(lái)的時(shí)候只要在鏈接后面加上對(duì)應(yīng)的哈希,我們就可以直接定位到對(duì)應(yīng)的tab下了棺蛛,但是這里有一個(gè)問(wèn)題怔蚌,就是如果我們使用了這個(gè)屬性,當(dāng)我們?cè)?個(gè)tab之間來(lái)回切換的話旁赊,會(huì)對(duì)應(yīng)的修改瀏覽器的hash,并且每次切換都會(huì)新增window.location.history中的記錄桦踊,這就導(dǎo)致了我們?cè)谇袚Q過(guò)tab之后點(diǎn)擊返回按鈕無(wú)法返回當(dāng)時(shí)進(jìn)入tab頁(yè)的上一個(gè)頁(yè)面,所以其實(shí)這個(gè)屬性在這里我是不可以用的终畅,那咋辦呢籍胯? 額,其實(shí)我覺得吧离福,swiper提供的這個(gè)屬性根本就不是給我們直接來(lái)使用的杖狼,并swiper不可能只有一個(gè),而如果有多個(gè)的話妖爷,你切換完跳不回去這肯定是不行的蝶涩,所以這個(gè)屬性提供給我們就要看我們自己如何使用。
醬紫絮识,在入口鏈接處依然加hash帶入绿聘,進(jìn)入頁(yè)面獲取URL的var hashString = window.location.hash 然后將hash中的值提取出來(lái)賦值給 initialSlide這個(gè)屬性
initialSlide:hashNum || 0,(這樣寫如果有哈希就優(yōu)先取哈希,如果沒(méi)有就默認(rèn)設(shè)置0 顯示第一個(gè)tab),這樣就實(shí)現(xiàn)了如果帶哈希進(jìn)入頁(yè)面可以直接定位到正確的tab下的需求次舌,但是啊熄攘,產(chǎn)品的要求遠(yuǎn)遠(yuǎn)不止于此。彼念。挪圾。。逐沙。在進(jìn)入這個(gè)有4個(gè)swiper-slide的頁(yè)面之后每個(gè)swiper-slide是一個(gè)ul列表哲思,列表中的每個(gè)li都是可以點(diǎn)擊進(jìn)去另一個(gè)頁(yè)面的,當(dāng)你點(diǎn)擊進(jìn)去后再返回要求還能再返回當(dāng)前tab,意思就是說(shuō)酱吝,我們?cè)谇袚Q四個(gè)tab的時(shí)候不能更改瀏覽器的記錄但是有改變當(dāng)前URL也殖,所以用到的historyApI中的replace屬性,來(lái)動(dòng)態(tài)的替換URL中的哈希部分

onSlideChangeEnd: function (mySwiper) {
var newHash = '#slide' + secindex
var header = window.location.href.split('#')[0]
window.location.replace(header + newHash)
}
將替換的代碼寫在onSlideChangeEnd: 監(jiān)聽函數(shù)中务热,這樣每次當(dāng)tab做了切換之后,就會(huì)更改當(dāng)前的URL的hash部分己儒,然后當(dāng)你點(diǎn)擊進(jìn)入其中一個(gè)li元素后再返回的時(shí)候就會(huì)返回一個(gè)帶hash的URL崎岂,正好跟頁(yè)面進(jìn)來(lái)的時(shí)候獲取哈希定位tab的方法對(duì)上了,從而實(shí)現(xiàn)了功能闪湾。

另外還有一個(gè)有關(guān)swiper-slide高度的冲甘,問(wèn)題,因?yàn)樗膫€(gè)swiper的內(nèi)容高度是不固定的,有的內(nèi)容可能多有的少江醇,但是swiper默認(rèn)是使所有的swiper-slide的高度都等于其中最大的那個(gè)的高度濒憋,這就導(dǎo)致了有些內(nèi)容很少的tab下面出現(xiàn)很大的空白,這不是我們想要的陶夜,解決的辦法也很簡(jiǎn)單凛驮,以為swiper給每個(gè)tab設(shè)置的類名是swiper-slide 而給當(dāng)前激活tab會(huì)動(dòng)態(tài)設(shè)置swiper-slide-active類名,所以我們只需要設(shè)置一個(gè)
.swiper-slide{
height: 10px;
}
.swiper-slide-active{
height: auto;
}

即可達(dá)到高度自適應(yīng)了条辟。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末黔夭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子羽嫡,更是在濱河造成了極大的恐慌本姥,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杭棵,死亡現(xiàn)場(chǎng)離奇詭異婚惫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)魂爪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門辰妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人甫窟,你說(shuō)我怎么就攤上這事密浑。” “怎么了粗井?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵尔破,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我浇衬,道長(zhǎng)懒构,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任耘擂,我火速辦了婚禮胆剧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醉冤。我一直安慰自己秩霍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布蚁阳。 她就那樣靜靜地躺著铃绒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪螺捐。 梳的紋絲不亂的頭發(fā)上颠悬,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天矮燎,我揣著相機(jī)與錄音,去河邊找鬼赔癌。 笑死诞外,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的灾票。 我是一名探鬼主播峡谊,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼铝条!你這毒婦竟也來(lái)了靖苇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤班缰,失蹤者是張志新(化名)和其女友劉穎贤壁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埠忘,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脾拆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了莹妒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片名船。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旨怠,靈堂內(nèi)的尸體忽然破棺而出渠驼,到底是詐尸還是另有隱情,我是刑警寧澤鉴腻,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布迷扇,位于F島的核電站,受9級(jí)特大地震影響爽哎,放射性物質(zhì)發(fā)生泄漏蜓席。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一课锌、第九天 我趴在偏房一處隱蔽的房頂上張望厨内。 院中可真熱鬧,春花似錦渺贤、人聲如沸雏胃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丑掺。三九已至,卻和暖如春述雾,著一層夾襖步出監(jiān)牢的瞬間街州,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工玻孟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唆缴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓黍翎,卻偏偏與公主長(zhǎng)得像面徽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匣掸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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