核心组件

核心组件的定义是跟浏览器、Vue 中保持一致,如果只使用这些组件的话,可以直接跨浏览器。


a

该组件目前映射到 Text,目前主要用于在 hippy-vue-router 中进行页面跳转。 一切同 p

事件

事件名称描述类型支持平台
touchstart触屏开始事件,最低支持版本 2.6.2FunctionALL
touchmove触屏移动事件,最低支持版本 2.6.2FunctionALL
touchend触屏结束事件,最低支持版本 2.6.2FunctionALL
touchcancel触屏取消事件,最低支持版本 2.6.2FunctionALL

button

[范例:demo-button.vue]

该组件映射到 View 上是因为它是一个可点击的容器,容器里面可以放图片、也可以放文本。但是因为 View 不能包裹文本,所以需要在 <button> 里包裹其它文本组件才能显示文字,这个跟浏览器不一样,浏览器的 <button> 也可以包裹 <span> 组件,所以这只是需要开发时注意一下。

事件

事件名称描述类型支持平台
click当按钮被点击以后调用此回调函数。 例如, @click=”clickHandler”FunctionALL
longClick当按钮被长按以后调用此回调函数。 例如, @longClick=”longClickHandler”}FunctionALL
touchstart触屏开始事件,最低支持版本 2.6.2FunctionALL
touchmove触屏移动事件,最低支持版本 2.6.2FunctionALL
touchend触屏结束事件,最低支持版本 2.6.2FunctionALL
touchcancel触屏取消事件,最低支持版本 2.6.2FunctionALL

div

[范例:demo-div.vue]

div 组件容器,默认不可以滚动。可以通过增加样式参数 overflow-y: scroll 切换为可以纵向滚动容器,或者增加样式参数 overflow-x: scroll 切换为水平滚动容器。在终端侧会被映射成 ScrollView,因此具备 ScrollView 通用的能力。

参数

参数描述类型支持平台
accessibilityLabel设置当用户与此元素交互时,“读屏器”(对视力障碍人士的辅助功能)阅读的文字。默认情况下,这个文字会通过遍历所有的子元素并累加所有的文本标签来构建。nodeALL
accessible当此属性为 true 时,表示此视图时一个启用了无障碍功能的元素。默认情况下,所有可触摸操作的元素都是无障碍功能元素。booleanALL
style-View StylesALL
opacity配置 View 的透明度,同时会影响子节点的透明度numberALL
overflow指定当子节点内容溢出其父级 View 容器时, 是否剪辑内容enum(visible, hidden)ALL
focusable允许使用遥控器触发 View 的激活状态,改为 true 后使用遥控器将能触发 div 的 @focus 事件,需要通过 nextFocusDownIdnextFocusUpIdnextFocusLeftIdnextFocusRightId 参数指明四个方向键将移动到的的节点 IDbooleanAndroid
scrollEventThrottle指定滑动事件的回调频率,传入数值指定了多少毫秒(ms)组件会调用一次 onScroll 回调事件。(仅在 overflow-y/x: scroll 时适用)numberALL
pagingEnabled当值为 true 时,滚动条会停在滚动视图的尺寸的整数倍位置。这个可以用在水平分页上。default: false(仅在 overflow-y/x: scroll 时适用)booleanALL
scrollEnabled当值为 false 的时候,内容不能滚动。default: true (仅在 overflow-y/x: scroll 时适用)booleanALL
showsHorizontalScrollIndicator当此值设为 false 的时候,ScrollView 会隐藏水平的滚动条。default: true (仅在 overflow-y/x: scroll 时适用)booleaniOS
showsVerticalScrollIndicator当此值设为 false 的时候,ScrollView 会隐藏垂直的滚动条。 default: true (仅在 overflow-y/x: scroll 时适用)boolean

样式内特殊属性

参数描述类型支持平台
collapsable如果一个 div 只用于布局它的子组件,则它可能会为了优化而从原生布局树中移除,因此该节点 DOM 的引用会丢失。。 把此属性设为 false 可以禁用这个优化,以确保对应视图在原生结构中存在。booleanAndroid

事件

事件名称描述类型支持平台
layout这个事件会在布局计算完成后立即调用一次,不过收到此事件时新的布局可能还没有在屏幕上呈现,尤其是一个布局动画正在进行中的时候。FunctionALL
attachedToWindow这个事件会在节点已经渲染并且添加到容器组件中触发,因为 Hippy 的渲染是异步的,这是很稳妥的执行后续操作的事件。FunctionALL
focus该事件在 focusable 置为 true 时触发,通过遥控方向键可以移动活动组件位置,事件回调带有 isFocused 参数用于标记激活和非激活状态FunctionAndroid
momentumScrollBegin在 ScrollView 滑动开始的时候调起。(仅在 overflow-y/x: scroll 时适用)FunctionALL
momentumScrollEnd在 ScrollView 滑动结束的时候调起。(仅在 overflow-y/x: scroll 时适用)FunctionALL
scroll在滚动的过程中,每帧最多调用一次此回调函数。(仅在 overflow-y/x: scroll 时适用)FunctionALL
scrollBeginDrag当用户开始拖拽 ScrollView 时调用。(仅在 overflow-y/x: scroll 时适用)FunctionALL
scrollEndDrag当用户停止拖拽 ScrollView 时调用。(仅在 overflow-y/x: scroll 时适用)FunctionALL
touchstart触屏开始事件,最低支持版本 1.3.3FunctionALL
touchmove触屏移动事件,最低支持版本 1.3.3FunctionALL
touchend触屏结束事件,最低支持版本 1.3.3FunctionALL
touchcancel触屏取消事件,最低支持版本 1.3.3FunctionALL

方法

scrollTo

仅在 overflow-y/x: scroll 时适用

(x: number, y: number, duration: boolean) => void 滚动到指定的 X,Y 偏移值,第三个参数为是否启用平滑滚动动画。

  • x: number - X 偏移值
  • y: number - Y 偏移值
  • duration: number | boolean - 毫秒为单位的滚动时间, 默认 1000ms,false 等同 0ms

form

[范例:demo-div.vue]

别的组件容器。 一切同 div


iframe

[范例:demo-iframe.vue]

内嵌网页容器。

参数

参数描述类型支持平台
src内嵌用的网址stringALL

事件

事件名称描述类型支持平台
load网页加载成功后会触发FunctionALL

img

[范例:demo-img.vue]

图片组件,和浏览器的一样。

  • 注意: 必须指定样式中的宽度和高度,否则无法工作。
  • 注意: Android 端默认会带上灰底色用于图片占位,可以加上 background-color: transparent 样式改为透明背景。

参数

参数描述类型支持平台
src图片地址stringALL

样式内特殊属性

参数描述类型支持平台
resize-mode决定当组件尺寸和图片尺寸不成比例的时候如何调整图片的大小。string(cover, contain, stretch, repeat, center)ALL

事件

事件名称描述类型支持平台
layout当元素挂载或者布局改变的时候调用,参数为: { nativeEvent: { layout: { x, y, width, height } } }FunctionALL
load加载成功完成时调用此回调函数。FunctionALL
loadStart加载开始时调用。FunctionALL
loadEnd加载结束后,不论成功还是失败,调用此回调函数。FunctionALL
error当加载错误的时候调用此回调函数。FunctionALL
progress当加载错误的时候调用此回调函数。FunctionALL
touchstart触屏开始事件,最低支持版本 2.6.2FunctionALL
touchmove触屏移动事件,最低支持版本 2.6.2FunctionALL
touchend触屏结束事件,最低支持版本 2.6.2FunctionALL
touchcancel触屏取消事件,最低支持版本 2.6.2FunctionALL

input

[范例:demo-input.vue]

单行文本组件。

不建议手工双向绑定数据,建议通过 v-model 来绑定视图和数据。

差异性

由于系统组件层的差异,如果 input 处于会被键盘遮住的位置,在呼出键盘后:

  • iOS 则是正常的遮住
  • Android 的表现为页面会被键盘顶起,顶起的幅度取决于 input 的 Y 轴位置决定

关于解决此间的平台差异性,我们仍在讨论。

若有 iOS 对齐 Android 的键盘顶起的需求,建议参考 StackOverflow,在业务层解决。

Android 弹出后盖住界面的解决办法

在部分 Android 机型上,键盘弹出后也可能会产生盖住界面的情况,一般情况下可以通过修改 AndroidMainfest.xml 文件,在 activity 上增加 android:windowSoftInputMode=”adjustPan” 解决。

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="com.tencent.mtt.hippy.example"
  3. >
  4. <application
  5. android:allowBackup="true"
  6. android:label="@string/app_name"
  7. >
  8. <!-- 注意 android:windowSoftInputMode="adjustPan" 写在 activity 的参数里-->
  9. <activity android:name=".MyActivity"
  10. android:windowSoftInputMode="adjustPan"
  11. android:label="@string/activity_name"
  12. android:configChanges="orientation|screenSize"
  13. >
  14. </activity>
  15. </application>
  16. </manifest>

该参数的意义是:

  • adjustResize: resize the page content
  • adjustPan: move page content without resizing page content

详情请参考 Android 开发文档。

参数

参数描述类型支持平台
defaultValue提供一个文本框中的初始值。当用户开始输入的时候,值就可以改变。 在一些简单的使用情形下,如果你不想用监听消息然后更新 value 属性的方法来保持属性和状态同步的时候,就可以用 defaultValue 来代替。stringALL
disabled如果为 truebooleanALL
type决定弹出的何种软键盘的。 注意,password仅在属性 multiline=false 单行文本框时生效。enum(default, numeric, password, email, phone-pad)ALL
maxlength限制文本框中最多的字符数。使用这个属性而不用JS 逻辑去实现,可以避免闪烁的现象。numbersALL
numberOfLines设置 input 的最大行数,在使用的时候必需同时设置 multiline 参数为 truenumberALL
placeholder如果没有任何文字输入,会显示此字符串。stringALL
placeholderTextColor占位字符串显示的文字颜色。colorALL
returnKeyType指定软键盘的回车键显示的样式。enum(done, go, next, search, send)ALL
value指定 input 组件的值。stringALL
autoFocus组件渲染时自动获得焦点。booleanALL

事件

事件名称描述类型支持平台
blur当文本框失去焦点的时候调用此回调函数。FunctionALL
change当文本框内容变化时调用此回调函数。改变后的文字内容会作为参数传递。FunctionALL
keyboardWillShow在弹出输入法键盘时候会触发此回调函数,返回值包含键盘高度 keyboardHeight,样式如 { keyboardHeight: 260}FunctionALL
endEditing当文本输入结束后调用此回调函数。FunctionALL
layout当组件挂载或者布局变化的时候调用,参数为{ x, y, width, height }FunctionALL
selectionChange当输入框选择文字的范围被改变时调用。返回参数的样式如 { nativeEvent: { selection: { start, end } } }FunctionALL

方法

blur

() => void 让指定的 input 组件失去光标焦点,与 focus() 的作用相反。

clear

() => void 清空输入框的内容。

focus

() => void 指派 input 获得焦点。

getValue

() => Promise<string> 获得文本框中的内容。

hideInputMethod

() => void 隐藏软键盘。

setValue

(value: string) => void 设置文本框内容。

  • value: string - 文本框内容

showInputMethod

() => void 显示软键盘。


label

[范例:demo-p.vue]

显示文本。 一切同 p

事件

事件名称描述类型支持平台
touchstart触屏开始事件,最低支持版本 2.6.2FunctionALL
touchmove触屏移动事件,最低支持版本 2.6.2FunctionALL
touchend触屏结束事件,最低支持版本 2.6.2FunctionALL
touchcancel触屏取消事件,最低支持版本 2.6.2FunctionALL

ul

[范例:demo-list.vue]

Hippy 的重点功能,高性能的可复用列表组件。里面第一层只能包含 <li>

参数

参数描述类型支持平台
horizontal指定 ul 是否采用横向布局。default: undefinedanyAndroid
numberOfRows指定列表的行数,一般直接传入数据源条数 length 即可。numberALL
initialContentOffset初始位移值 — 在列表初始化时即可指定滚动距离,避免初始化后再通过 scrollTo 系列方法产生的闪动。numberALL
rowShouldSticky设置 ul 是否需要开启悬停效果能力,与 listicky 配合使用booleanALL
scrollEventThrottle指定滑动事件的回调频率,传入数值指定了多少毫秒(ms)组件会调用一次 onScroll 回调事件,默认 200msnumberALL
showScrollIndicator是否显示垂直滚动条。 因为目前 ListView 其实仅有垂直滚动一种方向,水平滚动会导致 onEndReached 等一堆问题暂不建议使用,所以 showScrollIndicator 也仅用来控制是否显示垂直滚动条。booleanALL
preloadItemNumber指定当列表滚动至倒数第几行时触发 onEndReached 回调。numberALL
exposureEventEnabledAndroid曝光能力启用开关,如果要使用appeardisappear相关事件,Android需要设置(iOS无需设置)booleanAndroid
endReached当所有的数据都已经渲染过,并且列表被滚动到最后一条时,将触发 endReached 回调。FunctionALL

事件

事件名称描述类型支持平台
endReached当所有的数据都已经渲染过,并且列表被滚动到最后一条时,将触发 onEndReached 回调。FunctionALL
momentumScrollBeginScrollView 开始滑动的时候调起FunctionALL
momentumScrollEndScrollView 结束滑动的时候调起FunctionALL
scroll当触发 ListView 的滑动事件时回调,在 ListView 滑动时回调,因此调用会非常频繁,请使用 scrollEventThrottle 进行频率控制。 注意:ListView 在滚动时会进行组件回收,不要在滚动时对 renderRow() 生成的 ListItemView 做任何 ref 节点级的操作(例如:所有 callUIFunction 和 measureInAppWindow 方法),回收后的节点将无法再进行操作而报错。(obj: { contentOffset: { x: number, y: number } }) => anyALL
scrollBeginDrag当用户开始拖拽 ScrollView 时调用。FunctionALL
scrollEndDrag当用户停止拖拽 ScrollView 或者放手让 ScrollView 开始滑动的时候调用FunctionALL
layout当元素挂载或者布局改变的时候调用,参数为: { nativeEvent: { layout: { x, y, width, height } } }FunctionALL

方法

scrollTo

(xOffset: number, yOffset: number: duration: number) => void 通知 ListView 滑动到某个具体坐标偏移值(offset)的位置。

  • xOffset: number - 滑动到 X 方向的 offset
  • yOffset: numbere - 滑动到 Y 方向的 offset
  • number: boolean - 多长事件滚到指定位置

scrollToIndex

(xIndex: number, yIndex: number: animated: boolean) => void 通知 ListView 滑动到第几个 item。

  • xIndex: number - 滑动到 X 方向的第 xIndex 个 item
  • yIndex: number - 滑动到 Y 方向的 yIndex 个 item
  • animated: boolean - 滑动过程是否使用动画

li

ul 的子节点,终端层节点回收和复用的最小颗粒度。

[范例:demo-list.vue]

参数

当设置ul:horizontal=true 启用横向无限列表时,需显式设置 li 样式宽度

参数描述类型支持平台
type指定一个函数,在其中返回对应条目的类型(返回Number类型的自然数,默认是0),List 将对同类型条目进行复用,所以合理的类型拆分,可以很好地提升list 性能。numberALL
key指定一个函数,在其中返回对应条目的 Key 值,详见 Vue 官文stringALL
sticky对应的item是否需要使用悬停效果(滚动到顶部时,会悬停在List顶部,不会滚出屏幕)booleanALL
appear当有li节点滑动进入屏幕时(曝光)触发,入参返回曝光的li节点对应索引值。(index) => anyALL
disappear当有li节点滑动离开屏幕时触发,入参返回离开的li节点对应索引值。(index) => anyALL
willAppear当有li节点至少一个像素滑动进入屏幕时(曝光)触发,入参返回曝光的li节点对应索引值。最低支持版本2.3.0(index) => anyALL
willDisappear当有li节点至少一个像素滑动离开屏幕时触发,入参返回离开的li节点对应索引值。最低支持版本2.3.0(index) => anyALL

p

[范例:demo-p.vue]

显示文本,不过因为 Hippy 下没有 display: inline 的显示模式,默认全部都是 flex 的。

事件

事件名称描述类型支持平台
touchstart触屏开始事件,最低支持版本 2.6.2FunctionALL
touchmove触屏移动事件,最低支持版本 2.6.2FunctionALL
touchend触屏结束事件,最低支持版本 2.6.2FunctionALL
touchcancel触屏取消事件,最低支持版本 2.6.2FunctionALL

参数

参数描述类型支持平台
numberOfLines用来当文本过长的时候裁剪文本。包括折叠产生的换行在内,总的行数不会超过这个属性的限制。numberALL
opacity配置 View 的透明度,同时会影响子节点的透明度。numberALL
ellipsizeMode*当设定了 numberOfLines 值后,这个参数指定了字符串如何被截断。所以在使用 ellipsizeMode 时,必须得同时指定 numberOfLines 数值。enum(head, middle, tail, clip)Android 仅支持 tail 属性,iOS 全支持
  • ellipsizeMode 的参数含义:
    • clip - 超过指定行数的文字会被直接截断,不显示“…”;(仅iOS支持)
    • head - 文字将会从头开始截断,保证字符串的最后的文字可以正常显示在 Text 组件的最后,而从开头给截断的文字,将以 “…” 代替,例如 “…wxyz”;(仅iOS支持)
    • middle - “文字将会从中间开始截断,保证字符串的最后与最前的文字可以正常显示在Text组件的响应位置,而中间给截断的文字,将以 “…” 代替,例如 “ab…yz”;(仅iOS支持)
    • tail - 文字将会从最后开始截断,保证字符串的最前的文字可以正常显示在 Text 组件的最前,而从最后给截断的文字,将以 “…” 代替,例如 “abcd…”;

span

[范例:demo-p.vue]

显示文本。 一切同 p

事件

事件名称描述类型支持平台
touchstart触屏开始事件,最低支持版本 2.6.2FunctionALL
touchmove触屏移动事件,最低支持版本 2.6.2FunctionALL
touchend触屏结束事件,最低支持版本 2.6.2FunctionALL
touchcancel触屏取消事件,最低支持版本 2.6.2FunctionALL

textarea

[范例:demo-p.vue]

多行文本输入框。 一切同 input