之前做React Native 的时候问就遇到过一个问题
通过 web 获取的 image 不能和 浏览器一样通过百分比设置 width 来自适应 height,
(浏览器 默认是先渲染1个 1×1 px 的点)
React Native 官方文档解释, 为了更好的用户体验之类的,
不让页面文档被加载的图片完成时挤压下去,
所以所有非本地 <Image/> 组件必须先指定宽高,
否则无法显示出来 实际就是 0×0px.
(本地图片可以不指定, 它默认会根据自己的图片实际宽高显示)
用过 IScroll 的都知道, 有一个 refresh()
方法, 一般是当 DOM 改变(Ajax 之类的)的时候通过改方法重新计算 scrollHeight
的高度.
这也是为什么 IScroll 官方例子是在 body.onload
事件里 初始化 IScroll
但是 新 DOM 内有图片元素的话, 还需要再次监听 img.onload
事件
再次执行 refresh()
方法
实际操作中就将使用 2次 refresh()
refresh()
refresh()
那么这个 refresh()
写多了真的不爽
所以现在在写 webapp 的时候 推荐使用把 占位容器 高度写死, 这样就可以避免监听img.onload 事件
配合 vw
vh
单位, 这样也能做到自适应高度
当然对图片数据的比例就要求统一了
当然 也可以使用 background-clip
或者 object-fit
属性来使图片相对居中显示
[lang=jade]
.img-box
img(src="...")
[lang=stylus]
.img-box
width 50vw
height 50vw
overflow hidden
backgroun-image url('/*loading图片*/')
img
width 100%
min-height 100%
object-fit cover
2024 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123