聊聊CSS粘性定位sticky案例解析


Posted in HTML / CSS onJune 01, 2022

背景

最近在做项目迁移,因为技术不同,导致某些功能的问题需要手动解决;如何在居位在主体区域底部不随内容而滚动;
OK进入正体这期分享的是CSS粘性定位属性sticky来解决上面的问题

粘性定位:

粘性定位可以被认为是相对定位和固定定位的混合。是 position:sticky是css定位新增属性;它主要用在对 scroll 事件的监听上;简单来说,在滑动过程中,某个元素距离其父元素的距离达到 sticky粘性定位的要求时(比如top:100px);position:sticky这时的效果相当于fixed定位,固定到适当位置

案例:

我们先来看个案例及最终的效果

聊聊CSS粘性定位sticky案例解析

实现的代码

通过一个简单案例去带大家粗略了解粘性布局更容易更好理解,东西本身不负载但存在一些问题需要去进一步了解

问题探索及项目中的坑

  • 如果发现sticky粘性定位失效,如何解决
    解决方案: 一般sticky粘性定位失效,我们需要去找他的父元素看他的父亲元素是否设置overflow,一般都以滚动条那个父元素为主
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div class="aside-warp">
    <div>1</div>
    <div>2</div>
    <div class="icon">图标</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>10</div>
    <div>11</div>
    <div>12</div>
    <div>13</div>
    <div>14</div>
    <div>15</div>
    <div>16</div>
    <div>17</div>
    <div>18</div>
    <div>19</div>
  </div>
</body>
</html>
<style>
  body {
    height: 2000px;
    overflow: auto;
  }
  .aside-warp {
    margin-top: 50px;
    height: 700px;
    width: 500px;
    background-color: aliceblue;
    overflow: hidden; //这里是模仿没有滚动条的效果
  }
  .aside-warp div {
    height: 80px;
    line-height: 80px;
    text-align: center;
    border: 1px solid red;
  }
  .icon {
    position: sticky;
    top: 0px;
    background-color: aquamarine;
  }
</style>

如果能解决上面的案例说明对粘性布局了解;

来说明下上面的案例的问题:为什么此时图标就无法粘性定位了,主要是因为它(子元素)不知道以那个父元素的滚动为准(现在有两个父级元素都产生了滚动),所以我们要对一层层祖级元素检查看是否有overflow属性如果有将元素设置 overflow: visible; body {overflow: visible; }; 简单理解:两个父级body 和div.main 如果同高度宽度的话,子元素就不知道到底以父元素为主,就会出现无法粘性定位的问题,所以避免这个问题我们要将其中不要定位的父元素设置{overflow: visible; }; PS:像这种案例非常常见我只是随机例举,比如像吸顶啊等等都是可以用粘性定位实现的

到此这篇关于关于CSS粘性定位sticky的文章就介绍到这了,更多相关CSS粘性定位sticky内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
纯CSS3实现图片无间断轮播效果
Aug 25 HTML / CSS
CSS3的新特性介绍
Oct 31 HTML / CSS
css3打造一款漂亮的卡哇伊按钮
Mar 20 HTML / CSS
纯CSS3打造属于自己的“小黄人”
Mar 14 HTML / CSS
css3实现动画的三种方式
Aug 24 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
Mar 24 HTML / CSS
HTML5的结构和语义(2):结构
Oct 17 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
Dec 13 HTML / CSS
HTML5 实现一个访问本地文件的实例
Dec 13 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
May 07 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
Jan 01 HTML / CSS
AmazeUI 网格的实现示例
Aug 13 HTML / CSS
HTML5之高度塌陷问题的解决
Jun 01 #HTML / CSS
使用CSS实现黑白格背景效果
Jun 01 #HTML / CSS
HTML中实现音乐或视频自动播放案例详解
May 30 #HTML / CSS
CSS文本阴影 text-shadow 悬停效果详解
May 25 #HTML / CSS
HTML页面中使两个div并排显示的实现
May 15 #HTML / CSS
html中相对位置与绝对位置的具体使用
CSS 左边固定宽右边自适应的6种方法
May 15 #HTML / CSS
You might like
PHP 实例化类的一点摘记
2008/03/23 PHP
php session应用实例 登录验证
2009/03/16 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
Python查找相似单词的方法
2015/03/05 Python
python通过ssh-powershell监控windows的方法
2015/06/02 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
致铅球运动员广播稿精选
2014/01/12 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
四年大学自我鉴定
2014/02/17 职场文书
绿色学校实施方案
2014/03/31 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技