zoukankan      html  css  js  c++  java
  • 关于绝对定位那些事儿 —— 与 overflow: hidden

    官方文档直译:

    绝对定位元素不总是被父级 overflow 属性裁剪,尤其当 overflow 在绝对定位元素及其包含块之间的时候。

    <!-- 绝对定位元素不总是被父级 overflow 属性裁剪 -->
    <div class="div1" style="overflow: hidden;">
        <div class="div2" style="position: absolute;">1</div>
    </div>
    
    <!-- 尤其是当 overflow 在绝对定位元素及其包含块之间的时候 -->
    <div class="div3" style="position: relative;">
        <div class="div4" style="overflow: hidden;">
            <div class="div5" style="position: absolute;">2</div>
        </div>
    </div>

     

     overflow 元素同时也是定位元素时,绝对定位的子元素会被裁切; overflow 元素和绝对定位元素之间有定位元素(relative),也会被裁切

    <!-- overflow 元素同时也是定位元素时,子元素会被裁切 -->
    <div class="div1" style="overflow: hidden; position: relative;">
        <div class="div2" style="position: absolute;">3</div>
    </div>
    <!-- overflow 元素和绝对定位元素之间有定位元素,会被裁切 --> <div class="div3" style="overflow: hidden;"> <div class="div4" style="position: relative;"> <div class="div5" style="position: absolute;">4</div> </div> </div>

     

     overflow 对于固定定位的元素鞭长不及..

    <!-- 中间元素是 absolute 亦不可 -->
    <div class="div3" style="overflow: hidden;">
        <div class="div4" style="position: absolute;">
            <div class="div5" style="position: absolute;">5</div>
        </div>
    </div>
    
    <!-- overflow 对于 fixed 的元素是无用的 -->
    <div class="div1" style="overflow: hidden; position: relative;">
        <div class="div6" style="position: fixed;">6</div>
    </div>

    中间不论隔多少层,只要不存在定位元素,那个定位祖先的 overflow 始终可以裁切 absolute 子元素,即使中间元素也添加了 overflow,也只会被定位祖先裁切

    <!-- 中间酱油元素 -->
    <div class="div3" style="overflow: hidden; position: relative;">
        <div class="div4">
            <div class="div5" style="position: absolute;">酱油</div>
        </div>
    </div>
    <!-- 中间酱油元素也添加 overflow -->
    <div class="div3" style="overflow: hidden; position: relative;">
        <div class="div4" style="overflow: hidden;">
            <div class="div5" style="position: absolute;">酱油</div>
        </div>
    </div>

    应用,

    swiper 中实现 swiper-button 显示在 swiper-container 之外

    用两层容器,out-container 作为按钮的定位父级,in-container 作为 swiper 的显示容器,需要属性 overflow: hidden。swiper-button 相对于外层容器(out-)定位,固不受内层容器(in-)的溢出隐藏所限制。

     

    <div class="out-container">
        <div class="in-container">
            <ul class="swiper-wrapper">
                <div class="swiper-slide">slide5</div>
                <div class="swiper-slide">slide6</div>
                <div class="swiper-slide">slide7</div>
                <div class="swiper-slide">slide8</div>
            </ul>
            <div class="swiper-button-next"></div>
            <div class="swiper-button-prev"></div>
        </div>
    </div>
    .out-container {
        position: relative;
        width: 500px;
        height: 200px;
        background: #ddd;
    }
    .in-container {
        width: 400px;
        margin: 0 auto;
        overflow: hidden;
    }    
    .swiper-button {
        position: absolute;
    }    
                    
  • 相关阅读:
    MongoDB索引使用
    ubuntu14.04下CPU的caffe配置,不成功的朋友请与我(lee)联系,后面附带邮箱
    android4.4 evaluateJavascript 到android2.X上不能调用的问题
    LeetCode122:Best Time to Buy and Sell Stock II
    Hdu-1565 方格取数(1) (状态压缩dp入门题
    TI C66x DSP 四种内存保护问题 -之- 针对CPU訪问外存(DDR3 or MSM)时的内存保护问题
    显示和隐藏Mac隐藏文件的命令
    【微软2014实习生及秋令营技术类职位在线測试】题目1 : String reorder
    钟表效果
    hibernate5(10)注解映射[2]一对多单向关联
  • 原文地址:https://www.cnblogs.com/yier0705/p/9182262.html
Copyright © 2011-2022 走看看