问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么说HTML5是为移动互联网而生的开发语言

发布网友 发布时间:2022-04-20 20:19

我来回答

3个回答

懂视网 时间:2022-05-12 04:38

这篇文章给大家介绍的内容是关于HTML5结合互联网+ 实现的3D隧道(附代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下降,隧道产业的“互联网+”迫在眉睫。隧道业的机械化程度高,机械制造和采购成本非常大,此外,隧道业的发展还面临建筑市场的严峻考验。“互联网+”提供大数据、信息流,为传统隧道企业由机械化向数字化挺进提供了机遇,隧道产业的建设工程需要持续的技术支持,也需要经验分享,如果可以借助互联网整理和分享相关经验,将为隧道产业发展带来智慧动力。

通过视频监控图像与语音录像系统,就能随时掌握各工点的施工情况,及时解决施工遇到的问题,从而提高管理效率;在比较特殊的地段,比如大山沟里,点多线长,交通不便,施工组织管理难度大,在传统的施工过程中,基本靠人来回穿梭于各工点之间或电话沟通,检查、监督施工,往往需要很多人参与管理,但仍然管不好,经常出现信息不对称,管理不到位等问题,基于“互联网+”的视频监控图像与语音录像系统应运而生。

代码生成

场景搭建

首先创建 3D 场景,HT(http://hightopo.com) 有 3D 组件,可以直接通过 new ht.graph3d.Graph3dView 3D 组件(https://hightopo.com/guide/gu...)来创建一个实例,然后通过 getView() 函数获取组件的底层 p,既然是 p,那位置显示控制就容易得多了:

dm = new ht.DataModel();// 数据容器,可以将显示在界面上的所有数据通过 dataModel.add 存储在数据容器中
g3d = new ht.graph3d.Graph3dView(dm);// 3D 组件
g3d.addToDOM();// 将 3D 组件的底层 p 添加到 body 中

HT 的组件一般都会嵌入 BorderPane、SplitView 和 TabView 等容器中使用,而最外层的 HT 组件则需要用户手工将 getView() 返回的底层 p元素添加到页面的 DOM 元素中,这里需要注意的是,当父容器大小变化时,如果父容器是 BorderPane 和 SplitView 等这些HT预定义的容器组件,则HT的容器会自动递归调用孩子组件 invalidate 函数通知更新。但如果父容器是原生的 html 元素, 则HT组件无法获知需要更新,因此最外层的 HT 组件一般需要监听 window 的窗口大小变化事件,调用最外层组件 invalidate 函数进行更新。

为了最外层组件加载填充满窗口的方便性,HT 的所有组件都有 addToDOM 函数,其实现逻辑如下,其中 iv 是 invalidate 的简写:

addToDOM = function(){ 
 var self = this,
 view = self.getView(),// 获取组件的底层 p
 style = view.style;
 document.body.appendChild(view);// 将组件的底层 p 添加进 body 中  
 style.left = '0';// HT 组件默认设置 position 样式属性为 absolute 绝对定位方式
 style.right = '0';
 style.top = '0';
 style.bottom = '0'; 
 window.addEventListener('resize', function () { self.iv(); }, false);  
}

场景序列化

最让我开心的应该是我的开发基本上跟设计部分完全分离了,因为 HT 可以通过 ht.Default.xhrLoad 函数直接加载 json 文件的场景,这样我跟设计师就是双进程了,非常开心呢~加载场景有三个步骤,如下:

ht.Default.xhrLoad('scenes/隧道.json', function(text){// 加载 json 场景
 var json = ht.Default.parse(text);// 转义 json 文件
 dm.deserialize(json);// 将 json 内容反序列化到场景中
 // 可以在这个里面任意操作 datamodel 数据容器中的数据了
}

2638241182-5b5535bfe12c4_articlex.png

动画

我在场景中添加了一些功能,包括前面提到过的一些动画操作,HT 封装好的 dataModel.addScheduleTask(task) 通过操作数据容器 dataModel 来控制加载动画(https://hightopo.com/guide/gu...),动画部分在参数 task 中声明,task 为 json 对象,可指定如下属性:

  • interval:间隔毫秒数,默认值为 10

  • enabled:是否启用开关,默认为 true

  • action:间隔动作函数,该函数必须设置

  • 我的动画一共三个,两个隧道中各有一个风扇、一个风向仪以及一个卷闸门。设置这三个图元变化即可,我在 json 中分别将这三个图元的 tag 设置为 feng、feng2 以及 door,在代码中我就可以直接调用这三个图元的 tag 属性:

    var task = {
     action: function(data){
     if(!data.getTag()) return;
     var tag = data.getTag();// 获取图元的 tag 属性
     if(tag === 'feng'){
     data.r3(0, (data.r3()[1]+Math.PI/12), 0);// r3 为 3d 中的旋转,这里 y 轴在原来的基础上再旋转 Math.PI/12 角度
     }else if(tag === 'feng2'){
     data.r3(0, 0, data.r3()[2]+Math.PI/12);
     }else if(tag === 'door'){
      if(data.getTall() > 0){// 获取图元的 tall 属性,高度
      data.setTall(data.getTall()-20);// 设置高度为当前高度减去20
      }
     }
     }
    }
    dm.addScheduleTask(task);// 在数据容器 dataModel 中添加调度任务

    接着是创建 form 表单,在表单上添加一些信息,比如交通灯的切换等等,场景默认显示的右上角的 form 表单我们这里不做解释,内容跟点击交通灯出现的 form 表单差不多,所以我们主要说明一下点击交通灯时出现的表单:

    1754837488-5b5535dbe3be4_articlex.gif

    表单中重复的部分比较多,我挑出三个部分来解释一下:文本部分、“当前状态”显示的图标以及下面“修改状态”中的图标点击选择部分:

    form.addRow([// addRow 添加一行 我这个部分是添加一个标题
     {
     element: '交通灯控制',// 这一行第一部分的显示文本
     align: 'center',// 文本对齐方式
     color: 'rgb(0,210,187)',// 文本颜色
     font: 'bold 16px arial, sans-serif'// 文本字体
     }
    ], [0.1]);// 记得要设置这行的宽度
    form.addRow([ // 这行中有两个部分,一个“设备描述”,一个 文本“0”,所以要设置两个宽度,宽度要放在一个数组中 
     '设备描述:',// 第一部分
     {// 第二部分
     element: '0',
     color: 'rgb(0,210,187)'
     }
    ],[80, 0.1], 34);// addRow 函数第二个参数为宽度设置,将上面内容的宽度依次放进这个数组中。第三个参数为高度
    form.addRow([ 
     '当前状态:',
     {// 也可以将数组中的某个部分设置为空字符串,占据一些宽度,这样比例比较好调
     element: ''
     },
     {
     id: '105',// id唯一标示属性,可通过formPane.getItemById(id)获取添加到对应的item对象
     button: {/ /按钮,设置了该属性后HT将根据属性值自动构建ht.widget.Button对象,并保存在element属性上
      icon: 'symbols/隧道用图标/light.json',// 按钮上的显示图标
      background: 'rgba(0,7,26,0.60)',// 按钮背景
      borderColor: 'rgb(0, 7, 26)',// 按钮边框颜色
      clickable: false// 是否可点击
     }
     }
    ],[80, 0.1, 84], 30);
    form.addRow([// 如果和上面一行的距离差别与其它行间距不同,可以通过增加一行空行,设置高度即可   
     '',
     {
     element: ''
     }
    ], [200, 0.1], 10);
    form.addRow([   
     '修改状态:',
     {
     element: ''
     },
     {
     button: {
      icon: 'symbols/隧道用图标/light.json',// 设置按钮的图标
      background: 'rgba(0,7,26,0.60)',
      borderColor: 'rgb(0, 7, 26)',
      groupId: 'btn',// 通过getGroupId和setGroupId获取和设置组编号,属于同组的togglable按钮具有互斥功能。后面的三个按钮也是设置了同一个 groupId
      onClicked: function(e){// 点击后的回调函数
      btnClick('light'); 
      }
     }
     }
    ],[80, 0.1, 84], 30);

    这个 form 表单的背景只是设置了一张图片而已:

    background: url('assets/控制.png') no-repeat;

    上面还有一个部分没有提及,就是点击按钮后调用的 btnClick 函数:

    function btnClick(imageName){
     if(flag === 1){// 做的判断是根据3d的事件来处理的,等下会提
     dm.getDataByTag('light').s({// 通过getDataByTag获取节点,设置节点的style样式
      'back.image': 'symbols/隧道用图标/'+imageName+'.json',// 设置图元的背面图片
      'front.image': 'symbols/隧道用图标/'+imageName+'.json'// 设置图元你的前面图片
     });
     }else if(flag === 2){
     dm.getDataByTag('light1').s({
      'back.image': 'symbols/隧道用图标/'+imageName+'.json',
      'front.image': 'symbols/隧道用图标/'+imageName+'.json'
     });
     }else{}
     form.getViewById(105).setIcon('symbols/隧道用图标/'+imageName+'.json');// 设置id为105的item内容显示的图标为form表单上点击的交通灯的按钮的图标
    }

    最后就是点击事件了,点击交通灯会直接切换交通灯的颜色(实际上是切换模型的贴图):

    929565280-5b55361072ecc_articlex.png

    g3d.mi(function(e){// addInteractorListener 函数 监听场景中的事件
     if(e.kind === 'clickData') {
     if (e.data.getTag() === 'jam') { createDialog(e.data); }
     else if (e.data.getTag() === 'light') {// 如果图元是背面的隧道的灯
      var frontImage = e.data.s('front.image');
      var imageName = frontImage.slice(frontImage.lastIndexOf('/')+1, frontImage.lastIndexOf('.'));
      btnClick('light', imageName);
     }
     else if (e.data.getTag() === 'light1'){// 正面的隧道的灯
      var frontImage = e.data.s('front.image');
      var imageName = frontImage.slice(frontImage.lastIndexOf('/')+1, frontImage.lastIndexOf('.'));
      btnClick('light1', imageName);
     }
     }
    });

    互联网+的概念在新兴产业上能够很好地运营,同时在传统行业中利用得当同样能够产生非常大的效益,比如智慧城市建设,智慧能源管理,智慧工厂,甚至是地铁监管等等都可以结合互联网+的模式来运作,在一定程度上节省了非常多的人力和时间成本。

    247121857-5b55361dde6aa_articlex.png

    3553906322-5b5536287bf76_articlex.png
    3641558473-5b5536379a476_articlex.gif

    相关推荐:

    HTML5互联网:地铁行业新模式

    热心网友 时间:2022-05-12 01:46

      H5e教育HTML5开发解答:
      1.离线缓存为HTML5开发移动应用提供了基础
      HTML5 Web Storage API可以看做是加强版的cookie,不受数据大小*,有更好的弹性以及架构,可以将数据写入到本机的ROM中,还可以在关闭浏览器后再次打开时恢复数据,以减少网络流量。
      同时,这个功能算得上是另一个方向的后台“操作记录”,而不占用任何后台资源,减轻设备硬件压力,增加运行流畅性。
      在线app支持边使用边下载离线缓存,或者不下载离线缓存;而离线app必须是下载完离线缓存才能使用。
      形象点说,cookie就是存了电话和菜单,想吃什么要叫外卖,等多长时间才能吃到就得看交通情况了;离线缓存就是直接在冰箱里存了食物,想吃就能马上吃到(当然,想吃最新的食物同样可以打电话预定)。
      要知道,什么时候让用户下载离线缓存(注意在线和离线app的区别)。
      2.音频视频自由嵌入,多媒体形式更为灵活
      原生开发方式对于文字和音视频混排的多媒体内容处理相对麻烦,需要拆分开文字、图片、音频、视频,解析对应的URL并分别用不同的方式处理。
      HTML5在这个方面完全不受*,可以完全放在一起进行处理。
      要知道,如果新闻类、微博类、社交类应用的信息呈现中实现文字与多媒体混排,而不用专门嵌入webview,将是一件多美好的事情,至少现在原生方式实现起来还有困难。
      3.地理定位,随时随地分享位置
      充分发挥移动设备对定位上的优势,推动LBS应用发展。
      可以综合使用GPS、wifi、手机等方式让定位更为精准、灵活。
      地理位置定位,让定位和导航不再专属导航软件,地图也不用下载非常大的地图包,可以通过缓存来解决,到哪儿下哪儿,更灵活。
      要知道,现在嵌入LBS功能的应用越来越多,这也是移动设备与台式PC相比最大的优势之一,HTML5能把这个优势再度扩大化,好好想想怎么在你设计的应用里用上吧!
      4.Canvas绘图,提升移动平台的绘图能力
      使用Canvas API可以简单绘制热点图收集用户体验资料
      支持图片的移动、旋转、缩放等常规编辑
      Canvas – 2D的绘图功能支持
      Canvas 3D – 3D的绘图功能支持
      SVG – 向量图支援
      要知道,图片的移动、旋转、缩放?那都太基础了,自己画都是小case,至于怎么用,好好想想吧!
      5.专为移动平台定制的表单元素
      浏览器中出现的html5表单元素与对应的键盘:
      类型用途键盘
      Text正常输入内容标准键盘
      Tel电话号码数字键盘
      Email电子邮件地址文本框带有@和.的键盘
      url网页的URL带有.com和.的键盘
      Search用于搜索引擎,比如在站点顶部显示的搜索框标准键盘
      range特定值范围内的数值选择器,典型的显示方式是滑动条滑动条或转盘
      只需要简单的声明 <input type=”email”> 即可完成对不同样式键盘的调用,简捷方便。
      要知道,用的时候记得告诉研发同事一声!
      6.丰富的交互方式支持
      提升互动能力:拖拽、撤销历史操作、文本选择等
      Transition – 组件的移动效果
      Transform – 组件的变形效果
      Animation – 将移动和变形加入动画支持
      要知道,HTML5提供的交互方式是非常丰富的,至于用不用得上,那是你自己的事儿喽!
      7.HTML5使用上的优势
      更低的开发及维护成本;
      使页面变得更小,减少了用户不必要的支出;而且,性能更好使耗电量更低;
      方便升级,打开即可使用最新版本,免去重新下载升级包的麻烦,使用过程中就直接更新了离线缓存。
      要知道,用户想要什么,HTML5能提供给用户什么。
      8.CSS3 视觉设计师的辅助利器
      CSS3支持了字体的嵌入、版面的排版,以及最令人印象深刻的动画功能。
      Selector – 更有弹性的选择器
      Webfonts – 嵌入式字体
      Layout – 多样化的排版选择
      Stlying radius gradient shadow – 圆角、渐变、阴影
      Border background – 边框的背景支持
      使用CSS3来完成部分视觉工作,载入速度快,节省代码及图片,也为用户节约了带宽。
      要知道,一个界面里几十张素材图的方式已经太out啦,赶快让CSS3帮你偷懒。
      9.实时通讯
      以往网站由于HTTP协议以及浏览器的设计,实时的互动性相当的受限,只能使用一些技巧来「仿真」实时的通讯效果,但HTML5提供了完善的实时通讯支持。
      要知道,应用中嵌入实时通信、信息内容进行实时提醒,HTML5可以帮你实现。
      10.档案以及硬件支持
      不知道大家有没有发现,在Gmail等新的网页程序当中,已经可以透过拖拉的方式将档案作为邮件附件?这就是HTML5档案的功能中的Drag’n Drop和File API。
      设计师要知道,移动应用中对于数据传输的需求越来越大,传统的路径选择方式太过于繁琐,快来试试HTML5的拖拽上传功能吧!
      11.语意化
      语意化的网络是可以让计算机能够更加理解网页的内容,对于像是搜索引擎的优化(SEO)或是推荐系统可以有很大的帮助。
      要知道,HTML5能让搜索更快速、更准确。
      12.双平台融合的app开发方式,提高工作效率
      依照目前iPhone/Android 迅速提升市占率的情势来看,未来如果想要在先进的智慧型手机上撰写应用程式,要不是选择使用Objective-C + CocoaTouch Framework 撰写iPhone/iPad 应用程式,就是选择Java + Android Framework 撰写Android 应用程式,如果想要同时支援两种平台,势必要维护两套程式码,对于刚起步的小服务而言也算是个小有负担的维运成本。
      使用HTML5, CSS3 来撰写Web-based 的应用程式,若要同时支援iPhone 及Android,几乎只需要维护一份程式码(少部份要因应clients 作修改),而且未来若有其它行动装置拥有支援HTML5 的浏览器,那同样的WebApp 直接就多了一个支援平台。
      Google 的系列服务使用了不少HTML5 中的cache、storage 及database 规格来做到离线存取程式的效果。因为比起桌面应用程式,行动装置的网路连线更不稳定,而且有时在移动中并无网路可以使用,透过这些技术才能让使用者即使在 无网路环境下继续使用你的webapp。这说明html5主要服务对象还是给予web的应用,并不会对全部app开发造成威胁,这样有利于不同类型应用使 用不同的开发方式,灵活性更强。

    热心网友 时间:2022-05-12 03:04

    跨平台性,HTML5开发的站点和应用可以运行在PC端和移动端,windows和Linux,iOS端和Android端。可以轻易的移植到不同的开放平台,应用平台。
    html5是不是移动互联网时代的产物

    HTML5指的是万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改,是一项推荐标准。HTML5草案的前身名为 Web Applications 1.0,于2004年被一个叫WHATWG的组织提出,于2007年被W3C(万维网联盟)接纳,并成立了新的 HTML 工作团队。但并未引起广泛关注,却进入了漫...

    移动端h5是什么意思

    移动端H5指的是在手机浏览器上运行的H5页面,H5全称为HTML5,是HTML新一代标准的简称。H5技术可以在手机端上实现更流畅、更丰富的交互体验,因此被广泛应用于移动互联网应用开发中。为什么移动端H5如此重要?随着移动设备的普及,越来越多的应用需要在手机浏览器上来实现。移动端H5可以为用户提供更好的移...

    什么是html5,发展前景怎么样

    ”,因为html5作为一个前端的编程语言,前景是好的!

    html5和html有什么区别

    而html5却是不同,只有简简单单的声明,这也方便人们的记忆,更加精简。2.在结构语义上html4.0:

    HTML5未来的发展趋势?

    由于HTML5的富媒体化与富应用化,目前还没有一门前端的开发语言能取代HTML5的主流开发地位,无论做PC端网站还是App应用,前端样式均由HTML5开发,毫无疑问,至少在10年之内,HTML5会是Web应用的最佳解决方案,移动互联网领域的主宰者。从而导致HTML5的就业前景一片光明!

    HTML5的发展现状和未来是怎样的?

    1、基于HTML5强大的兼容性,因为HTML5提供了前所未有的数据与应用接入开放接口,使外部应用可以直接与浏览器内部的数据直接相连,例如视频影音可直接与microphones及摄像头相联,就因为这种强大的兼容性,使得在当下开发界是如此的火,同样也是因为这强大的兼容性,使得手机应用软件,app更适合,也更方便。所...

    学会html5,会有钱途吗?

    HTML5是移动互联网前端的主流开发语言,目前还没有一个前端的开发语言能取代HTML5的位置,所以说,无论做手机网站还是在手机app应 用,前端的样式都是HTML5开发,通过手机与电脑上网的使用率来看,目前通过手机上网的用户远远高于电脑端,这些数据都足以证明未来的移动互联网的发展 前景,而HTML5又作为移动...

    为什么Html5前端开发那么难招

    一是HTML5作为移动互联网主流的前端语言,因为富媒体化与富应用化,所以目前并没有其他语言能替代HTML5语言,而且随着HTML5技术的日趋成熟,HTML5语言的地位也将越来越难以取代。二是社会需求大。我国现在对HTML5工程师的人才的需求量已超过30万,合格的HTML5工程师供给处于供不应求的状态。三是人才储备...

    简单了解一下什么是html5

    如果说HTML是人体骨架,那么CSS就跟人体骨架一样,JavaScript就跟各种人体动作一样,加在一起基本就是前端工程师的基本要求。HTML5未来发展前景。作为移动互联网行业的新贵,HTML5的迅猛发展动摇了Android和iOS在应用层面的地位。由于HTML5的富媒体和应用,没有任何前端开发语言可以替代HTML5的主流开发状态。

    自媒体里h5指的是什么

    H5这个词,来自”HTML5”, 所谓“HTML5”, 是指“HTML"的第5个版本,而"HTML”, 则是指描述网页的标准语言。几乎所有在线的应用类网站,本质上都是一个"H5”。H5页面简单的说就是利用html5制作出来的页面,利用图片、文字、动画、音乐等方式融合在一起来表达某种艺术效果或者推广效果。

    移动互联网是做什么的 互联网及移动互联网产品 移动互联网产业互联网 互联网与移动互联网区别 移动互联网是什么意思 什么叫移动互联网 移动互联网的4个特征 移动互联网卡有哪些 移动互联网
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    僵尸先生里的僵尸仔叫什么? 新僵尸先生中的僵尸是谁演的 ...电脑网速卡,我的手机一连接WIFI就会影响到电脑网速卡 有人拿手机连我家WIFI,如果我现在在电脑里玩游戏,会不会影响他玩手机... 我在听QQ音乐 但为什么我的QQ里没有显示我在听? QQ 音乐在设置显示的情况下,在QQ状态上不显示~ QQ音乐正在听时为什么在QQ上显示不出来 早安祝福语大全简短 早安祝福语大全简短暖心 早上好暖心问候(早安正能量祝福说说) 茶砖怎么弄开 茶砖怎么喝 新浪微博哪个版本体量小而又实用? 微博和微博国际版有什么不同,那个好一点? 求问 html5是针对移动平台的开发吗?? Html5页面是什么?有什么特点?有哪些应用是基于该... H5版新浪微博和原来WAP版微博有什么不同? 新浪微博的 HTML5 页面体验已经和 native app 差不... 新浪微博H5版是什么东东?HTML5又是什么东西? 微博html5版是用啥登录的 新浪微博的html5版本是什么 川味冬菜扣肉怎么做 “冬菜”是什么啊 冬菜怎么吃 冬菜怎么做 南充冬菜的简介 最正宗冬菜扣肉的做法 怎么做冬菜扣肉好吃 冬菜是什么菜 冬菜,芽菜,梅菜有什么不同? 四川冬菜是什么菜啊 2020年执业药师准考证打印入口在哪里? 2020年执业药师准考证打印步骤 如何使用html5实现利用摄像头拍照上传功能 新浪微博的version什么意思啊?代表的是版本吗? intel固态硬盘p系列和s系列的区别 英特尔固态硬盘 intel什么型号的固态硬盘最好 intel ssd5和ssd6的区别 如何鉴别Intel固态硬盘真伪,以及是否是被用过的二... Intel固态硬盘哪款好 英特尔固态硬盘和三星固态硬盘哪个好 intel的SSD固态硬盘怎么样 英特尔固态硬盘哪款好 intel固态硬盘tbw什么意思 英特尔固态硬盘为什么那么贵?优点在哪里? 有哪位大神了解intel固态硬盘的吗?它和傲腾智能缓... intel固态硬盘为什么贵了解的说下 intel固态硬盘工具写入速度太慢是怎么回事 英特尔,固态硬盘怎么样, intel固态硬盘怎样查真伪 英特尔的固态硬盘和三星固态硬盘谁好 英特尔的固态硬盘怎么样