zoukankan      html  css  js  c++  java
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题

    -webkit-box 的用法

    通常,在移动端要实现水平方向平分宽度的布局,会使用 -webkit-box 来布局。
    它的使用方法是:

    <div class='parent'>
        <div class='child'></div>
        <div class='child'></div>
        <div class='child'></div>
    </div>
    .parent {
        display: -webkit-box;
    }
    .child {
        -webkit-box-flex: 1;
         1px;
    }

    以上布局会使得三个.child元素平分.parent元素的宽度。

    在.child元素内添加绝对定位的子元素

    <div class='parent'>
        <div class='child'>
            <div class='ele'></div>
        </div>
        <div class='child'>
            <div class='ele'></div>
        </div>
        <div class='child'>
            <div class='ele'></div>
        </div>
    </div>
    .parent {
        display: -webkit-box;
        margin-top: 100px;
        background-color: #ddd;
    }
    .child {
        position: relative;
        -webkit-box-flex: 1;
         1px;
    }
    .ele {
        position: absolute;
        top: 50%;
        left: 50%;
         200px;
        height: 200px;
        margin-top: -100px;
        margin-left: -100px;
        background-color: blue;
    }

    这种定位在chrome浏览器上是显示正常的,ele元素是在child元素的正中间。
    但是,在微信端页面上,ele元素只是在child的水平方向居中,垂直方向上不居中,而是超出child元素,在child上方。

    显示的效果是:
    图片描述

    解决方法

    要解决这个问题,只需要在child元素上添加一个固定的高度即可。代码如下:

    .child {
        position: relative;
        -webkit-box-flex: 1;
         1px;
        height: 500px;
    }

    显示的效果是:
    图片描述

    原因分析

    在浏览器中,绝对定位是脱离文档流的,所以ele元素不能撑起child元素的高度,导致child的高度是0,所以ele会顶到浏览器顶部。
    给child元素设置高度后,ele的绝对定位就能通过child的高度来计算位置。

    (完)

  • 相关阅读:
    不用写代码的框架
    bat执行python脚本,执行多条命令
    VMware-workstation-full-15.1.0-13591040安装破解-附件密钥
    w10谷歌chrome关闭自动更新
    谷歌安装提示已经安装高版本解决
    python项目三方库导出导入 requirements.txt文件
    点阴影
    goto gamedev blog
    20135315-信息安全系统设计基础第五周学习总结
    win10 +python3.6环境下安装opencv以及pycharm导入cv2有问题的解决办法
  • 原文地址:https://www.cnblogs.com/10manongit/p/12941655.html
Copyright © 2011-2022 走看看