关于前端:css使用position-sticky实现粘性布局

定位罕用的4种属性如下:

{
//1.定位的默认值,没有定位,等同于规范流
 position:static;
 
 //2.绝对定位,绝对于元素本人一开始的地位,个别会给relative的父元素的子元素设置absolute(相对定位)
 position:relative;
 
 //3.相对定位,绝对于离本人最近的定位父级(除了static定位)的定位
 position:absolute;
 
 //4.固定定位,绝对于浏览器窗口进行定位,不会追随页面的滚动,而滚动。
 position:fixed;
}

处于试验阶段的属性:

{
    //5.元素的体现为在逾越指定的阀值(top,bottom,left,right)之前(大于)是绝对定位,之后(小于)是固定定位。
    position: sticky;
}
//该属性失效又一些限度,
//1.必须指定阀值才会失效,优先级 top > bottom , left > right;
//2.达到设定阀值,如果没有达到,大于阀值,显示为绝对定位,如果达到阀值,且小于的状况显示为固定定位
//3.如果父元素设置overflow 就必须是visible,如果是hidden父容器也就没有方法滚动,所以sticky的元素也不会滚动
//4.sticky的任一父元素如果设置了定位则这个sticky元素是绝对于父元素进行定位,不会绝对于视口定位

应用示例如下:

//html
 <div class="container">
     <ul>
         <li>
            <span>导航1</span>
         </li>
         <li>
            <span>导航2</span>
         </li>
         <li>
            <span>导航3</span>
         </li>
     </ul>
 </div>
 
 //css
  <style>
     .container {
         width: 50vw;
         margin: 0 auto;
     }
     .container ul {
         width: 100%;
         margin: 0 auto;
     }
     .container ul li {
         height: 400px;
         width: 100%;
         overflow: visible;
     }
     .container ul li span{
         display: block;
         height: 40px;
         background-color: pink;
         position: -webkit-sticky;
         position: sticky;
         top: 20px;
     }
     .container ul li:last-child {
        margin-bottom: 1000px;
     }
 </style>

定位不罕用4种属性:

//说是position的属性,其实是css属性的关键字
//1.inherit规定从父元素继承position的属性,当然他的局限也不是只有position属性,能够用在任何html元素的css属性。
//2.initial意思是默认值,也是能够用在任何html元素的css属性上,不会继承父元素的属性。
//3.unset示意不设置position,也是能够用在其余的css属性上。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理