[JavaScript] 元素粘滞定位

曾经webkit也支持过position:sticky,但后来的版本中取消了对其的支持。确实用

@media(scroll-top)来实现会灵活的多。但目前的浏览器既不支持position:sticky也

不支持@media(scroll-top)。瞬间觉得回到了解放前,只能用JS去实现。

  position:sticky的作用是普通情况下对元素正常定位,但元素企图滚动到屏幕外

时会以类似fixed的定位方式留在屏幕的边缘。但是sticky的这个行为太奇怪了,而且

功能的适用性太差。实际上要是@media(scroll-top)可以支持的话就可以实现,

而且@media比其它固定的属性要灵活的多,只是目前暂时没有实现。

 

<!DOCTYPE html>
<style>
body {margin:0px;height:2000px;}
a {
  position:absolute;
  top:400px;right:40px;
  width:50px;height:50px;
  text-align:center;
  text-decoration:none;
  font:14px/50px Simsun;
  background:#EEE;
  border:1px solid #CCC;
  color:#000;
  opacity:0.5;
}
a:hover {opacity:1;}
</style>
<a id="init" href="#">顶</a>
<script>
onscroll=function(){
  var v=document.documentElement.scrollTop||document.body.scrollTop;
  if(v>360)
    init.style.position="fixed",
    init.style.top="40px";
  else 
    init.style.position="absolute",
    init.style.top="400px";
}
</script>

 

 

 测试代码一般懒得写,浏览器对有id的元素会自动在全局生成一个引用,虽然是非标准的,但目前全浏览器支持(早起的Firefox版本不支持而已)。

 

转载于:https://www.cnblogs.com/shimily/articles/3749661.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值