margin溢出問題

前言

很久沒有在簡書上寫blog椅挣,都在github上寫了逗扒,看有點(diǎn)時(shí)間就搬運(yùn)一下
margin-top出現(xiàn)溢出也不是什么新鮮事了,老生常談掰盘,我也不是第一次見到了摄悯,但是以前經(jīng)常會以各種理由安慰自己(比如趕進(jìn)度)會投機(jī)取巧使用padding-top來代替。過后也沒有去找解決溢出的方法愧捕,甚至奢驯,一度認(rèn)為是無法解決的,想想以前面試次绘,就讓人羞紅臉瘪阁,萬惡的面試官撒遣。

什么是margin溢出

我也不多解析,正好在碰到時(shí)我也事先截圖了管跺,一目了然:

  • 先上一張容器的圖(灰色背景即為容器的區(qū)域)


    image
  • 然后看最上面一個(gè)item


    image

    紅框部分即為item的大小义黎,而橙色的部分即為溢出的部分

問題

其實(shí)如果是平時(shí)簡單布局做樣式,這么點(diǎn)高度也無傷大雅豁跑,說不定做出來產(chǎn)品頁不會有感知廉涕,或者向我以往做的那樣,可以用padding-top補(bǔ)回這部分溢出艇拍。

但是狐蜕,在做底部上拉加載更多(還沒有想到其他場景)的時(shí)候,就會出現(xiàn)問題淑倾。
要實(shí)現(xiàn)這功能馏鹤,一般是使用scroll事件,然后監(jiān)聽娇哆,scrollTop, 容器的高度:clientHeight, 產(chǎn)生滾軸body的高度:clientHeight

<div id="container">
  <ul class="body">
    <li class="item">item_0</li>
    <li class="item">item_1</li>
    <li class="item">item_2</li>
    ...
    <li class="item">item_n</li>
  </ul>
</div>

然后湃累,通過判斷是否到達(dá)底部然后出發(fā)加載更多邏輯

document.querySelector('#container').
addEventListener('scroll', function(e) {
  const container = this;
  const body = container.querySelector('ul.body');
  const scrollTop = container.scrollTop;
  const containerHeight = container.clientHeight;
  const bodyHeight = body.clientHeight;
  const isBottom = scrollTop + containerHeight >= bodyHeight;
  
  isBottom && !function(){
    // load more logic
  }();
}, false);

由于溢出,你可知道碍讨,body的高度由于首個(gè)item有部分溢出治力,那么body的高度就會少了一部分。那么就算將滾軸拉倒底部勃黍,scrollTop和containerHeight的總高度總是比bodyHeight的高度要小宵统。換言之,滾軸還沒有到達(dá)底部就會觸發(fā)加載更多的邏輯覆获。當(dāng)然是還是可以使用給body添加padding-top補(bǔ)全margin-top溢出部分马澈,然而有代碼潔癖的你會愿意一直如此屈服?

那么關(guān)于怎么清除margin的溢出就提上日程弄息。

清除溢出

上面說那么多廢話痊班,其實(shí)消除溢出很簡單,簡單得比清除浮動(dòng)還要簡單[捂臉]摹量,然后我之前竟然不知道涤伐。
很簡單!
很簡單缨称!
很簡單凝果!
重要的事說三遍

ul.body{
   border: 1px solid transparent;
   // or
   border-top: 1px solid transparent;
}

就是這么簡單……

  • 這是為加border前的ul.body

    image

  • 這是加了border后的ul.body

    image

小結(jié)

俗話說:路走多了,路邊出來了睦尽;坑遇多了器净,經(jīng)驗(yàn)便來了[捂臉]

導(dǎo)航

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市骂删,隨后出現(xiàn)的幾起案子掌动,更是在濱河造成了極大的恐慌,老刑警劉巖粗恢,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柑晒,死亡現(xiàn)場離奇詭異,居然都是意外死亡眷射,警方通過查閱死者的電腦和手機(jī)匙赞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妖碉,“玉大人涌庭,你說我怎么就攤上這事∨芬耍” “怎么了坐榆?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長冗茸。 經(jīng)常有香客問我席镀,道長,這世上最難降的妖魔是什么夏漱? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任豪诲,我火速辦了婚禮,結(jié)果婚禮上挂绰,老公的妹妹穿的比我還像新娘屎篱。我一直安慰自己,他們只是感情好葵蒂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布交播。 她就那樣靜靜地躺著,像睡著了一般践付。 火紅的嫁衣襯著肌膚如雪堪侯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天荔仁,我揣著相機(jī)與錄音,去河邊找鬼芽死。 笑死乏梁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的关贵。 我是一名探鬼主播遇骑,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼揖曾!你這毒婦竟也來了落萎?” 一聲冷哼從身側(cè)響起亥啦,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎练链,沒想到半個(gè)月后翔脱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡媒鼓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年届吁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绿鸣。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疚沐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出潮模,到底是詐尸還是另有隱情亮蛔,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布擎厢,位于F島的核電站究流,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锉矢。R本人自食惡果不足惜梯嗽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沽损。 院中可真熱鬧灯节,春花似錦、人聲如沸绵估。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽国裳。三九已至形入,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缝左,已是汗流浹背亿遂。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渺杉,地道東北人蛇数。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像是越,于是被迫代替她去往敵國和親耳舅。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355