Web前端之路React Native开发

iscroll - refresh 相关问题

2016-03-24  本文已影响2084人  殷众

之前做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() 写多了真的不爽
所以现在在写 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
上一篇下一篇

猜你喜欢

热点阅读