IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Web和Flutter盒模型不一致导致的尺寸渲染差异问题 -> 正文阅读

[移动开发]Web和Flutter盒模型不一致导致的尺寸渲染差异问题

问题定位

在测试flutter动态化引擎过程中发现相同width的CSS样式下发到flutter到时渲染和web端不一致,明显感觉端上的宽高要多出一部分,但是宽度和margin的值完全一样。

花了一些时间排查这个问题,基本定位到问题来源于两者使用的盒模型不一致所导致的。

盒模型

盒模型最直观的就是下面这张图片:

image

标准的W3C盒模型由4部分组成:content,padding,border和margin。对应box-sizing的value为content-box

简单来说元素的宽度=content width + padding + border + margin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ar6dN5Fa-1634466666021)(http://img-03.proxy.5ce.com/view/image?&type=2&guid=f344b4bf-2433-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-c7f922f0331e06afff9f7e8ed5949d9c_b.jpg)]

IE6以下还有另一种盒模型,该模型下元素的宽度则为Width + margin,此时的Width是包含了元素的content width + padding + border的,对应box-sizing的value为border-box

image

上面两张图片的CSS都为:


div {
    width: 200px;
    height: 100px;
    margin: 40px;
    padding: 20px;
    border: 10px solid blue;
}

解决问题

看了上面盒模型的介绍相信大家对问题原因应该都比较清楚了,很可能是两者盒模型不一致导致相同CSS但是渲染效果截然不同

但是Web端默认的盒模型(box-sizing属性)value是content-box,而flutter也是一样,为什么会出现盒模型不一致呢?

后面检查了代码后发现我这里Web端工具的渲染CSS全局被reset为border-box(即另一种盒模型,width算上了padding和border)

咨询了相关同事后将对应Web端的渲染元素box-sizing修改回content-box后重新配置相关布局属性后最终解决了该问题

回顾

  • Web端盒模型的理解和不同盒模型的渲染方式
  • 了解width/height多端渲染差异的一个可能原因
  • box-sizing属性
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:30:27  更:2021-10-18 17:30:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:06:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码