前端實(shí)現(xiàn)一個小說分頁的功能

先讓我找找我的思路在哪里?



columns這個屬性來讓文章自動分頁的昂。columns是何方神圣吧。developer.mozilla.org/zh-CN/docs/… - MDN
columns是一個簡寫屬性,代表了 column-width 和 column-count兩個屬性,這兩個屬性又分別代表著:<'column-width'> 理想的列寬,定義為 ?或 auto 關(guān)鍵字。實(shí)際寬度可以更寬或更窄以適合可用空間。See column-width。 <'column-count'> 元素內(nèi)容應(yīng)分成的理想列數(shù),定義為 ?或 auto 關(guān)鍵字。如果此值和列的寬度都不是 auto ,則它僅指示允許的最大列數(shù)。請參閱 column-count 。- MDN
columns: calc(100vw - 32px) 1;calc(100vw - 32px)這個代表column-width的值代表了每一列的寬度為整屏的寬度再減去兩邊的間隙各16px。這里一提 column-gap就是列與列的間隙,所以在圖中可以看到這里的值設(shè)置了16px
column-count這個值的1就是只保持一列,并沒有什么作用,因?yàn)?code>100vw - 32px這個寬度已經(jīng)不可能讓屏幕中再多一列了,多出的列數(shù)將會排列在右側(cè)。當(dāng)使用 columns 規(guī)定兩個值時,如: columns: 100px 3; 表示: 當(dāng)每列寬度大于 100px 時,就以 3 列分割顯示;當(dāng)瀏覽器寬度縮小,導(dǎo)致在 3 列情況下無法滿足每列大于 100px,就開始轉(zhuǎn)為 2 列;當(dāng)瀏覽器再縮小,2 列中每列無法再保持 100px 每列時,再次轉(zhuǎn)為 1 列... 以此類推,"100px" 為每列不可低于的寬值,"3" 表示指定要顯示的列。相對于單獨(dú)設(shè)置 column-width 或 column-count,columns 要更加靈活。- 菜鳥教程 - Kai

translate進(jìn)行平移,以及父級的overflow: hidden隱藏多余列,就可以達(dá)到分頁的效果了。
columns的兼容性:
思路已至,碼來!
// index.htmlDocument 第一章: 我不是小說
小說真可愛,我要看小說,小說不給看,我就寫小說,寫小說不好寫,我就看小說............
// 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);
到這里就結(jié)束了,感謝閱讀。
評論
圖片
表情
