HarmonyOS轻量JS开发框架与W3C标准差异分析
HarmonyOS轻量JS应用开发框架(下文简称“框架”),是HarmonyOS为开发者提供的一套开发JS应用的开发框架。开发框架采用类小程序的web开发方式,其实现大部分遵循W3C标准(主流web开发标准),但由于设备条件限制(例如,ROM和RAM大小),“框架”中部分组件和属性与W3C标准存在差异,需要开发者在开发过程中了解和掌握。
本文将会梳理当前“框架”已有的组件和属性与W3C标准相对应组件和属性的主要差异点,并配以示例说明,供开发者在开发过程中参考。
主要差异点包括:width和height属性、绝对定位和相对定位、文字显示、页面滑动和长按事件。
width和height属性
作为一个前端开发者,在开发网页或者应用的过程中,我们一般不会手动设置组件的高度和宽度,而是希望元素的大小根据窗口或者子元素自动调整,这就是自适应能力。
自适应能力使得布局更灵活,可适应不同设备、不同窗口和不同分辨率下的显示。
但是,“框架”当前提供的组件除text外,皆不支持内容高度和宽度的自适应能力,必须由开发者明确指定高度和宽度,否则组件不会显示。
以一段简单的代码为例:
<div style="background-color: red;"> <div style="width: 100px;height: 100px;background-color: yellow;"></div> </div>
根组件div未设置高宽属性,子组件div设置了高宽属性,在“框架”和W3C标准中其运行效果图分别如图1和图2所示:从图1和图2可以看出,“框架”中根组件必须设置高度和宽度,否则无法显示,即使根组件的子组件设置了高宽度属性,界面也无法显示。另外由于W3C标准的div组件是块状元素,如果没有设置宽度,会独占一行,所以在图2中,没有设置宽度,其显示范围为一整行。
“框架”中设置根组件的高度和宽度,则正常显示,效果如图3所示:
<div style="width:200px;height:200px;background-color: red;"> <div style="width: 100px;height: 100px;background-color: yellow;"></div> </div>
针对text组件,不设置高宽属性的条件下,“框架”和W3C标准下web开发界面显示效果一致,如图4和图5所示:
<text> Hello World! </text>
绝对定位和相对定位
如何实现绝对定位和相对定位?如果你常用html语言开发,你可能会首先想到设置position属性为absolute和relative,然后通过left和top设置距离即可实现绝对定位和相对定位的效果,其实现代码如下所示:
<html> <head> <style type="text/css"> h2.left { position: relative; left: 30px; top: 30px; } h2.right { position: absolute; left: 90px; top: 160px; } </style> </head> <body> <h2>这是位于正常位置的标题</h2> <h2 class="left">这个标题相对于其正常位置向右向下移动</h2> <h2 class="right">这个标题相对于其页面左上角位置向右向下移动</h2> </body> </html>
但是在“框架”中,我们查看HarmonyOS官网JS API文档后发现,position属性是不支持设置absolute和relative,那该如何实现绝对定位和相对定位这两种效果呢?
如果我们仔细阅读HarmonyOS官网文档,我们会发现“框架”提供了一个新组件stack,借助这个组件我们可以实现绝对定位的效果,示例代码如下所示,添加一个stack根组件(同时也作为父组件),其子组件为div,然后设置其left和top的值为50px来实现绝对定位的效果,其效果如图6所示,子组件div相对于父组件stack向下、向右各偏移50px。
<stack style="width: 200px; height: 200px; background-color: red;"> <div style=" left: 50px; top: 50px; width: 100px; height: 100px; background-color: yellow;" > </div></stack>
另外,绝对定位存在一种特殊场景:如果是根组件,直接设置top和left属性即可实现绝对定位功能;非根组件,其父组件必须是stack,才能通过设置top和left属性来实现绝对定位功能。根组件绝对定位是相对于页面左上角做偏移,非根组件绝对定位是相对于父组件做偏移。
如下代码所示,根组件直接设置top和left属性实现绝对定位,由于此时根组件作为父组件不是stack,所以设置子组件的绝对定位无效,如图7中所示,子组件黄色div相对于父组件红色div未实现绝对定位的效果。
文章后续内容和相关附件可以点击下面的原文链接前往学习
原文链接:https://harmonyos.51cto.com/posts/4465#bkwz
https://harmonyos.51cto.com/#bkwz

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
iOS开发逆向之应用重签名(下)
本文主要介绍通过shell脚本进行应用重签名 补充知识 在利用shell脚本重签名之前,需要了解以下知识:脚本常用命令+权限相关 脚本执行相关命令 Shell是一种特殊的交互式工具,它为用户提供了启动程序、管理文件系统中文件以及运行在系统上的进程的途径。 Shell一般是指命令行工具。它允许你输入文本命令,然后解释命令,并在内核中执行。 Shell脚本,也就是用各类命令预先放入到一个文本文件中,方便一次性执行的一个脚本文件。 切换bash 和 zsh chsh -s /bin/bash chsh -s /bin/zsh 常用脚本命令 1、source FileName` 命令可以强行让一个脚本去立即影响当前的环境(一般用于加载配置文件)。 命令会强制执行脚本中的全部命令,而忽略文件的权限。 意思:在当前shell环境中读取并执行FileName中的命令 特点: 例如:source 123.sh,会进入shell目录,停留在脚本执行完后的目录 2、bashFileName+zsh FileName 意思:重新建立一个子shell,在子shell中执行脚本里面的句子。 例如zsh/bash...
- 下一篇
HTTP协议详解
1. HTTP介绍 HTTP是 Hyper Text Transfer Protocol的缩写,即超文本传输协议。它是一种请求/响应式的协议,客户端在与服务器端建立连接后,就可以向服务器端发送请求,这种请求被称作HTTP请求,服务器端接收到请求后会做出响应,称为HTTP响应,客户端与服务器端在HTTP 下的交互过程如图3-1所示。 从图3-1中可以清楚地看到客户端与服务端使用HTTP通信的过程,接下来总结一下HTTP协议的特点,具体如下。 (1) 支持客户端(浏览器就是一种 Web客户端)/服务器模式。 (2) 简单快速:客户端向服务器请求服务时,只需传送请求方式和路径。常用的请求方式有GET、POST等,每种方式规定了客户端与服务器联系的类型不同。由于 HTTP简单,使得HTTP服务器的程序规模小,因而通信速度很快。 (3) 灵活:HTTP 允许传输任意类型的数据,正在传输的数据类型由 Content-Type 加以标记。 (4) 无状态:HTTP是无状态协议。无状态是指协议对于事务处理没有记忆能力,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。 2...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Red5直播服务器,属于Java语言的直播服务器