当前位置: 首页 > news >正文

微信端页面使用-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;
    width: 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;
    width: 1px;
}
.ele {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 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;
    width: 1px;
    height: 500px;
}

显示的效果是:
图片描述

原因分析

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

(完)

相关文章:

  • mysqldump 数据库备份
  • iOS App 启动页
  • 自己动手写RTP服务器——关于RTP协议
  • [转]ASP.NET 成员资格 Part.1(API)
  • uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
  • Linux用户和权限管理
  • iOS 宏(define)与常量(const)的正确使用
  • linux系统安装python2.7
  • phoenixframework自动化测试平台webUI模块执行js代码示例
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Microphone Array Post-Filtering
  • 团队项目——工大助手界面(查询部分)
  • linux系统调优
  • last命令
  • easyui扩展tabs
  • @jsonView过滤属性
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 03Go 类型总结
  • JavaScript的使用你知道几种?(上)
  • Objective-C 中关联引用的概念
  • spring-boot List转Page
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 多线程事务回滚
  • 记一次和乔布斯合作最难忘的经历
  • 前端代码风格自动化系列(二)之Commitlint
  • 区块链共识机制优缺点对比都是什么
  • 中文输入法与React文本输入框的问题与解决方案
  • 字符串匹配基础上
  • 白色的风信子
  • Spring Batch JSON 支持
  • (12)Linux 常见的三种进程状态
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (ros//EnvironmentVariables)ros环境变量
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (转)Sql Server 保留几位小数的两种做法
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ***利用Ms05002溢出找“肉鸡
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .chm格式文件如何阅读
  • .Family_物联网
  • .net core 连接数据库,通过数据库生成Modell
  • .NET gRPC 和RESTful简单对比
  • .net 简单实现MD5
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NetCore 如何动态路由
  • .Net中间语言BeforeFieldInit
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Builder用法
  • @基于大模型的旅游路线推荐方案
  • [ IO.File ] FileSystemWatcher
  • [APIO2012] 派遣 dispatching
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [BeginCTF]真龙之力
  • [C#] 我的log4net使用手册