当前位置: 首页 > 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
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【译】理解JavaScript:new 关键字
  • JavaScript-Array类型
  • Java新版本的开发已正式进入轨道,版本号18.3
  • java正则表式的使用
  • JAVA之继承和多态
  • Joomla 2.x, 3.x useful code cheatsheet
  • python 装饰器(一)
  • Redux 中间件分析
  • spark本地环境的搭建到运行第一个spark程序
  • SpiderData 2019年2月16日 DApp数据排行榜
  • VuePress 静态网站生成
  • 第十八天-企业应用架构模式-基本模式
  • 排序(1):冒泡排序
  • 前端技术周刊 2019-01-14:客户端存储
  • 前嗅ForeSpider采集配置界面介绍
  • 小程序button引导用户授权
  • 延迟脚本的方式
  • ​虚拟化系列介绍(十)
  • !!java web学习笔记(一到五)
  • #HarmonyOS:基础语法
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (day 12)JavaScript学习笔记(数组3)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (差分)胡桃爱原石
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (论文阅读30/100)Convolutional Pose Machines
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Google的Objective-C编码规范
  • (转)Linq学习笔记
  • (转)shell中括号的特殊用法 linux if多条件判断
  • *Django中的Ajax 纯js的书写样式1
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net refrector
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net6Api后台+uniapp导出Excel
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @html.ActionLink的几种参数格式