html盒子向上浮动bootstrap,当 position:sticky 遇到 bootstrap 浮动布局时候的踩坑记录...

今天要说的是文章详情页右侧的目录栏,当页面下滑的时候,它也会固定到页面顶部,之前是用js去监听scroll事件,然后根据位置进行判断,togglefixed的方案,出于一些原因,决定对它用sticky去重写。

几下就写完了,去掉滚动事件监听,然后将菜单元素.post-nav加上position:sticky;top:0样式,但是,不起效!

wtf!百思不得其解,我开始搜索原因。在so搜到了这个,说到可能是元素的父级元素有对overflow属性进行处理,比如加了什么overflow:hidden啥的,但是看了下,并没有这种情况。

然后我猜想会不会是bootstrap布局的问题(事实上确实有关系),写下demo:

body{font-size:50px;font-weight:900;}

.main{height:2000px;background:#eee}

.menu{height:200px;background:yellow}

.ad{height:200px;background:red;position:sticky;top:0px;}

.guess{height:200px;background:blue;}

content

menu

ad

others

但是没问题,突然想到网站用的bootstrap版本是3.x,然后改成3.3.7的版本,这时候问题就出来了。

这时候问题就比较好定位了,4.x用的是flex布局,而3.x还是float浮动布局,问题应该是出在这里了。

最终代码(参考这个issue):

body{font-size:50px;font-weight:900;}

.main{height:2000px;background:#eee}

.side{height:2000px;}

.menu{height:200px;background:yellow}

.ad{height:200px;background:red;position:sticky;top:0px;}

.guess{height:200px;background:blue;}

content

menu

ad

others

对应到开始的问题上,因为menu是属于.col-md-3元素的,所以右边的.col-md-3需要和左边的.col-md-9保持高度一致即可,加上这行代码:

$('.side').height($('.main').height())

因为左边的内容区域有图片的延迟加载,所以这行代码需要持续执行:

$(window).scroll(function(){

$('.side').height($('.main').height())

//othercode

//...

})

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问HTML视频教程!

c410d0facd4d7e6bd095b1aba1e7ff19.png

5117d6714d1ef5b720147da765793469.png

本文转载自中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值