zoukankan      html  css  js  c++  java
  • 让一个元素相对于父元素固定定位

    之前在项目中,遇到了一个场景,需要实现相对于父元素的fixed定位:在父元素内拖动滚动条时,"fixed"定位的元素不能滑动,在外层拖动滚动条时,父元素及父元素内的所有元素跟着一起滑动。但是position: fixed是相对于窗口进行的定位,不能直接实现我们需要的效果。

    我们想让特定子元素相对于父元素"fixed"定位,也就是说,剩余的子元素不定位。那我们可以分开来想,如果添加一个祖先元素assistor,有两个祖先元素,一个用于辅助定位,一个用于包裹不定位的内容,这个问题不就解决了吗。像这样

    实质上是child相对于assistorabsolute定位,parent内的内容自己负责展示。只要assistor和parent一样大,看起来就像是子元素child相对于父元素parent固定定位了。具体原理是position: absolute;的元素会相对于第一个设置了position: relative;的祖先元素进行定位,我们将assistor设置为position: reletive;,滚动条是在parent中的,这样"fixed"定位和parent内的内容滚动就都实现了。

    <div class="assistor">
      <div class="parent">
        <div class="child"></div>
        <div class="placeholder"></div>
      </div>
    </div>
    

      

    .assistor {
      position: relative; /*关键点*/
      display: block;
       500px;
      height: 300px;
      margin: 100px auto 0 auto;
      background-color: #ddd;
    }
    .parent {
       500px;
      height: 300px;
      background-color: #888;
      overflow: auto; /*关键点*/
    }
    .child {
      position: absolute; /*关键点*/
       120px;
      height: 120px;
      margin: 100px 50px;
      background-color: #333;
    }
    .placeholder {
       1000px;
      height: 1000px;
    }
    

      

  • 相关阅读:
    POJ3213(矩阵乘法)
    jquery:ajax不接收返回值回
    Swift UI学习UITableView and protocol use
    也可以看看GCD(杭州电2504)(gcd)
    数据结构—队列
    HDU 4946 Area of Mushroom 凸包
    UVa 353
    照片教你eclipse通过使用gradle 打包Android
    普林斯顿大学公开课 算法1-8:并检查集合 高速查找
    Codeforces Round #246 (Div. 2)
  • 原文地址:https://www.cnblogs.com/qqfontofweb/p/7813718.html
Copyright © 2011-2022 走看看