美文网首页
CSS粘性定位实现吸顶效果

CSS粘性定位实现吸顶效果

作者: 刘圣凯 | 来源:发表于2020-05-22 15:35 被阅读0次

吸顶效果在项目中并不少见, 通常做法是使用 javascript 监听 scroll,不过今天要说的这个方法,是使用css来完成吸顶效果。
关于 positoin ,CSS3新发布的一个属性 sticky,这个属性很有意思,设置了sticky的元素,在屏幕范围(viewport)时该元素的位置并不受到定位影响,但是当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置,从而达到吸顶的效果,大家可以复制以下demo打开看看效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    .title{
        width: 100%;
        position: sticky;
        top:0px;
        text-align: center;
        background: #ccc;
        color: #fff;
    }
    .title span{
      padding: 8px 12px;
      margin: 0;
    }
    .content{
        height: 3000px;
        padding: 20px;
    }
    </style>
</head>
<body>
    <div>
        <div class="title">
          <span>topbar1</span>
          <span>topbar2</span>
          <span>topbar3</span>
        </div>
        <div class="content"> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
          <p>假装这里是很多内容</p> 
        </div>
    </div>
    
</body>
</html>

简直和 js 控制的一模一样! 看起来是很美好了, 这么方便的属性,是不是马上就get了呢, 先别急,让我们看看兼容性,下图呢就是各大主流浏览器的支持性了


image.png

在 Can I use 的介绍里说到

保持元素定位为“fixed”或“relative”取决于它如何出现在视口。因此,当需要滚动时,元素会“卡住”。

然后往下看,兼容性有点 强差人意,IE完全不支持,edge支持率还好,高版本火狐以及谷歌都支持,以及iOS上的火狐, 各位可以看需求以及使用场景决定是否使用这个属性。

相关文章

网友评论

      本文标题:CSS粘性定位实现吸顶效果

      本文链接:https://www.haomeiwen.com/subject/mqbqahtx.html