<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在小說讀書APP中,都會有分頁的功能,那麼前端如何實現這個功能呢?
因為沒有什麼思路,那就只能在前輩的專案中尋找思路了。
這不,直接開啟起點的頁面,按下那個傳說中的F12鍵,開始我傳奇生涯!...不好意思,串臺了
好了,然後在找一本有緣書,跟我一同前往那神祕的未知世界。
就決定是你了,開始免費試讀。
然後我們就可以發現起點是如何實現這個功能的了,原來是使用columns
這個屬性來讓文章自動分頁的昂。
我們現在就去搜尋一下columns
是何方神聖吧。
developer.mozilla.org/zh-CN/docs/… - MDN
通過MDN的範例我們知道了原來columns
是一個簡寫屬性,代表了 column-width
和 column-count
兩個屬性,這兩個屬性又分別代表著:
<'column-width'>
理想的列寬,定義為 或 auto 關鍵字。實際寬度可以更寬或更窄以適合可用空間。See column-width。
<'column-count'>
元素內容應分成的理想列數,定義為 或 auto 關鍵字。如果此值和列的寬度都不是 auto ,則它僅指示允許的最大列數。請參閱 column-count 。 - MDN
然後我們再看回起點中對這個屬性的定義columns: calc(100vw - 32px) 1;
其中calc(100vw - 32px)
這個代表column-width
的值代表了每一列的寬度為整屏的寬度再減去兩邊的間隙各16px
。
這裡一提column-gap
就是列與列的間隙,所以在圖中可以看到這裡的值設定了16px
而代表column-count
這個值的1
就是隻保持一列,並沒有什麼作用,因為100vw - 32px
這個寬度已經不可能讓螢幕中再多一列了,多出的列數將會排列在右側。
當使用 columns 規定兩個值時,如:
columns: 100px 3;
表示:
當每列寬度大於 100px 時,就以 3 列分割顯示;當瀏覽器寬度縮小,導致在 3 列情況下無法滿足每列大於 100px,就開始轉為 2 列;當瀏覽器再縮小,2 列中每列無法再保持 100px 每列時,再次轉為 1 列...
以此類推,"100px" 為每列不可低於的寬值,"3" 表示指定要顯示的列。相對於單獨設定 column-width 或 column-count,columns 要更加靈活。 - 菜鳥教學 - Kai
還有一點需要注意的是,需要將文章的高度設定為螢幕的高度,這樣才會排成多列。
再通過translate
進行平移,以及父級的overflow: hidden
隱藏多餘列,就可以達到分頁的效果了。
最後看看columns
的相容性:
可以看出都支援了這個屬性,可以放心大膽的用。
我們來簡單的實現一下這個效果。
// index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="./style.css" rel="external nofollow" > <script src="./vue.js"></script> </head> <body> <div class="wrapper"> <article> <h3>第一章: 我不是小說</h3> <p>小說真可愛,我要看小說,小說不給看,我就寫小說,寫小說不好寫,我就看小說............</p> <!-- *1000 --> </article> </div> <script src="./app.js"></script> </body> </html>
// style.css * { margin: 0; padding: 0; box-sizing: border-box; } .wrapper{ height: 100vh; overflow: hidden; margin: 0 16px; } article{ columns: calc(100vw - 32px) 1; column-gap: 16px; height: 100%; transition: .4s; }
let i = 0; let article = document.querySelector('article'); setInterval(() => { let width = document.body.offsetWidth; i++; if(i > 3) i = 0; article.style.transform = `translateX(-${(width - 16) * i}px)` }, 1000);
最後實現的效果就是:
以上就是JavaScript前端實現小說分頁功能範例的詳細內容,更多關於JavaScript前端小說分頁的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45