云顶娱乐棋牌-云顶娱乐每天送6元
做最好的网站

云顶娱乐棋牌:ReactNative学习施行,标签与追寻引

12个了不起的HTML5画布示例

2012/02/16 · 云顶娱乐棋牌:ReactNative学习施行,标签与追寻引擎优化。HTML5 · 来源: 伯乐在线     · HTML5

本文搜聚了有个别非凡的HTML5 画布演示。前段时间英特网有那二个舒性格很顽强在艰难困苦或巨大压力面前不屈的HTML5演示文章,作者很喜欢能将自身所搜求到的享受给大家。HTML5的机能越来越强盛,占用的计算机以至比 Flash 还少。所以,是还是不是有一天 Flash 会被 HTML5 完全代表呢?(查看上面示例,请使用辅助HTML5的浏览器。)

1. FishBowl

卓绝的鱼缸

云顶娱乐棋牌 1

2. DeviantART muro

轻量级的在线图像编辑器

云顶娱乐棋牌 2

3. 3D Earth

自转的地球

云顶娱乐棋牌 3

4. Asteroid Belt

太空中的小行星带

云顶娱乐棋牌 4

5. Interactive Polaroids

完美的相册(看上去有如用偏光板拍片的)

云顶娱乐棋牌 5

6. Canvas Cycle: True 8-bit Color Cycling with HTML5

其生机勃勃小说不过奢侈,以至富含了生龙活虎套演示——各样气象效果的动画化演示

云顶娱乐棋牌 6

7. js cloth

三个维度情形下的二维图像

云顶娱乐棋牌 7

8. CanvasMol

三种元素的三个维度份子结构

云顶娱乐棋牌 8

9. Or so they say…” by xplsv

对的的太空景象

云顶娱乐棋牌 9

10. 3D Model Viewer

不等预制物体的三个维度图像

云顶娱乐棋牌 10

结语

企望你能兴奋新收罗的HTML5示范。好运!

 

原文:script-tutorials   编译:伯乐在线 – 楼子宜

【如需转发,请标明并保存原作链接、译文链接和翻译等音讯,多谢合营!】

赞 收藏 评论

ReactNative学习施行:Navigator实行

2016/06/17 · JavaScript · HTML5, Javascript, React, ReactNative

正文小编: 伯乐在线 - D.son 。未经小编许可,防止转载!
招待参与伯乐在线 专辑作者。

离上次写宝马X5N笔记有生龙活虎段时间了,时期出席了多少个新类型,只在近期的闲暇时间继续学习实行,因而进程正如缓慢,可是那并不意味未有新进展,其实这么些小东西离上次发布公文时曾经有了一定大的退换了,个中国电影响最大的变迁便是引进了Redux,前面会系统介绍一下。
在上马主题以前,先补充某个上回说起的卡通初探(像本人那样可靠严酷的工程师,必需更上生机勃勃层楼,┗|`O′|┛ 嗷~~)。

上回文聊到,经过大家温馨定义了余弦动画函数之后,动态设定state的4个参数,完结了相比较流利的加载动画,这里恐怕有心上人已经注意到了,大家非常频仍的调用了setState方法,那在React和RubiconN中都是风姿洒脱对生龙活虎避忌的,每次setState都会触发render方法,也就象征更频仍的虚构DOM相比较,特别是在大切诺基N中,那还意味着更频仍的JSCore<==>iOS通讯,就算框架本人对屡次setState做了优化,例如会计统计一齐期调用的几个setState,但那对质量和体会依然会有一点都不小影响。

上回大家只是独自达成了三个loading动画,所以还比较流畅,当视图桐月素比较多並且有独家的卡通片的时候,就拜会到相比较严重的卡顿,那个实际是能够幸免的,因为在loading动画的兑现部分,大家掌握地领略只必要loading动画的一定组成都部队分更新并非组件的持有片段以致承继链上的有所组件都供给更新,并且确信那些节点断定爆发了转换,由此不要求通过设想DOM相比较,那么只要大家能绕开setState,动画就活该会更通畅,纵然在复杂的视图里边。那正是Animations文书档案最终提到的setNativeProps方法。

As mentioned in the Direction Manipulation section, setNativeProps allows us to modify properties of native-backed components (components that are actually backed by native views, unlike composite components) directly, without having to setState and re-render the component hierarchy.

setNativeProps允许大家直接决定原生组件的品质,而没有必要用到setState,也不会重绘承袭链上的别的零件。那多亏我们想要的意义,加上我们理解明白正在调控的组件以致它与视图其他零件的涉嫌,因而,这里大家能够放心地使用它,何况一定简单。
更新前:

loopAnimation(){ var t0=animationT,t1=t0+0.5,t2=t1+0.5,t3=t2+timeDelay,t4=t3+0.5;//这里分别是八个卡通的当后日子,依次增加了0.5的推移 var v1=Number(Math.cos(t0).toFixed(2))*animationN+animationM;//将cos函数的小数值只准确到小数点2位,升高运算效能var v2=Number(Math.cos(t1).toFixed(2))*animationN+animationM; var v3=Number(Math.cos(t2).toFixed(2))*animationN+animationM; var v4=Number(Math.cos(t3).toFixed(2))*animationN+animationM; this.setState({ fV:v1, sV:v2, tV:v3, foV:v4 }); animationT+=0.35;//增添时间值,每趟增值越大动画越快 requestAnimationFrame(this.loopAnimation.bind(this)); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
loopAnimation(){
    var t0=animationT,t1=t0+0.5,t2=t1+0.5,t3=t2+timeDelay,t4=t3+0.5;//这里分别是四个动画的当前时间,依次加上了0.5的延迟
    var v1=Number(Math.cos(t0).toFixed(2))*animationN+animationM;//将cos函数的小数值只精确到小数点2位,提高运算效率
    var v2=Number(Math.cos(t1).toFixed(2))*animationN+animationM;
    var v3=Number(Math.cos(t2).toFixed(2))*animationN+animationM;
    var v4=Number(Math.cos(t3).toFixed(2))*animationN+animationM;
    this.setState({
      fV:v1,
      sV:v2,
      tV:v3,
      foV:v4
    });
    animationT+=0.35;//增加时间值,每次增值越大动画越快
    requestAnimationFrame(this.loopAnimation.bind(this));
  }

更新后:

loopAnimation(){ var t0=··· var v1=··· var v2=··· var v3=··· var v4=··· this.refs.line1.setNativeProps({ style:{width:w1,height:v1} }); this.refs.line2.setNativeProps({ style:{width:w2,height:v2} }); this.refs.line3.setNativeProps({ style:{width:w3,height:v3} }); this.refs.line4.setNativeProps({ style:{width:w4,height:v4} }); animationT+=0.35;//扩张时间值,每一回增值越大动画越快 requestAnimationFrame(this.loopAnimation.bind(this)); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
loopAnimation(){
    var t0=···
    var v1=···
    var v2=···
    var v3=···
    var v4=···
    this.refs.line1.setNativeProps({
      style:{width:w1,height:v1}
    });
    this.refs.line2.setNativeProps({
      style:{width:w2,height:v2}
    });
    this.refs.line3.setNativeProps({
      style:{width:w3,height:v3}
    });
    this.refs.line4.setNativeProps({
      style:{width:w4,height:v4}
    });
    animationT+=0.35;//增加时间值,每次增值越大动画越快
    requestAnimationFrame(this.loopAnimation.bind(this));
  }

作用如下:
云顶娱乐棋牌 11
此间有意在注册乞求完结之后未有掩瞒loading动画,因而同期实行了视图切换和loading五个卡通,效果还不错~

好了,该步向明日的主旨了。先全体看一下这一等第得以达成的作用(哒哒哒~):
云顶娱乐棋牌 12

最重若是效仿了二个新客户注册流程,实现起来也并不复杂,全体结构是用三个RAV4N组件Navigator来做导航,即便有另二个NavigatorIOS组件在iOS系统上显示更精良,不过思虑到福睿斯N本人希望能够同期在安卓和iOS上运营的初心,笔者采纳了足以协作五个平台的Navigator来尝试,近来来看成效还是可以经受。
在最后的详细音讯视图里边,尝试了各样零件,举个例子调用相机,Switch,Slider等,主假使尝鲜,哈哈~ 也融洽达成了比较容易的check按键。
率先最外层的构造是八个Navigator,它决定总体客商注册的视图切换:

<Navigator style={styles.navWrap} initialRoute={{name: 'login', component:LoginView}} configureScene={(route) => { return Navigator.SceneConfigs.FloatFromRight; }} renderScene={(route, navigator) => { let Component = route.component; return <Component {...route.params} navigator={navigator} /> }} />

1
2
3
4
5
6
7
8
9
<Navigator style={styles.navWrap}
          initialRoute={{name: 'login', component:LoginView}}
          configureScene={(route) => {
            return Navigator.SceneConfigs.FloatFromRight;
          }}
          renderScene={(route, navigator) => {
            let Component = route.component;
            return <Component {...route.params} navigator={navigator} />
          }} />

里面,initialRoute配置了Navigator的起来组件,这里正是LoginView组件,它自身既可以够一贯登陆,也能够点击【作者要登记】步入注册流程。configureScene属性则是用来安顿Navigator中央电台图切换的动画片类型,这里能够灵活安顿切换格局:

Navigator.SceneConfigs.PushFromRight (default) Navigator.SceneConfigs.FloatFromRight Navigator.SceneConfigs.FloatFromLeft Navigator.SceneConfigs.FloatFromBottom Navigator.SceneConfigs.FloatFromBottomAndroid Navigator.SceneConfigs.FadeAndroid Navigator.SceneConfigs.HorizontalSwipeJump Navigator.SceneConfigs.HorizontalSwipeJumpFromRight Navigator.SceneConfigs.VerticalUpSwipeJump Navigator.SceneConfigs.VerticalDownSwipeJump

1
2
3
4
5
6
7
8
9
10
Navigator.SceneConfigs.PushFromRight (default)
Navigator.SceneConfigs.FloatFromRight
Navigator.SceneConfigs.FloatFromLeft
Navigator.SceneConfigs.FloatFromBottom
Navigator.SceneConfigs.FloatFromBottomAndroid
Navigator.SceneConfigs.FadeAndroid
Navigator.SceneConfigs.HorizontalSwipeJump
Navigator.SceneConfigs.HorizontalSwipeJumpFromRight
Navigator.SceneConfigs.VerticalUpSwipeJump
Navigator.SceneConfigs.VerticalDownSwipeJump

renderScene属性则是必须配备的二个属性,它担任渲染给定路由相应的零部件,也正是向Navigator全体路由对应的机件传递了”navigator”属性甚至route自个儿带领的参数,假诺不行使相符Flux只怕Redux来全局存款和储蓄或调整state的话,那么Navigator里多少的传递就全靠”route.params”了,例如客户注册流程中,首先是接纳剧中人物视图,然后步入注册视图填写账号密码短信码等,当时点击注册才会将享有数据发送给服务器,因而从剧中人物采纳视图到注册视图,要求将顾客接受的脚色传递下去,在登记视图发送给服务器。因而,剧中人物选择视图的跳转事件需求把参数字传送递下去:

class CharacterView extends Component { constructor(props){ super(props); this.state={ character:"type_one" } } handleNavBack(){ this.props.navigator.pop(); } ··· handleConfirm(){ this.props.navigator.push({ name:"registerNav", component:RegisterNavView, params:{character:this.state.character} }); } render(){ return ( <View style={styles.container}> <TopBarView title="注册" hasBackArr={true} onBackPress={this.handleNavBack.bind(this)}/> ··· (this)}> 确认> </TouchableOpacity> > </View> ); } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class CharacterView extends Component {
  constructor(props){
    super(props);
    this.state={
        character:"type_one"
    }
  }
 
  handleNavBack(){
    this.props.navigator.pop();
  }
  
  ···
  
  handleConfirm(){
    this.props.navigator.push({
      name:"registerNav",
      component:RegisterNavView,
      params:{character:this.state.character}
    });
  }
 
  render(){
    return (
      <View style={styles.container}>
        <TopBarView title="注册" hasBackArr={true} onBackPress={this.handleNavBack.bind(this)}/>
        
          
          ···
          
          (this)}>
            确认>
          </TouchableOpacity>
        >
      </View>
    );
  }
}

那是剧中人物选用视图CharacterView的一些代码,由于Navigator并不曾像NavigatorIOS那样提供可陈设的顶栏、重临开关,所以作者把顶栏做成了多个克配置的公共组件TopBarView,Navigator里边的持有视图直接利用就足以了,点击TopBarView的回到开关时,TopBarView会调用给它配备的onBackPress回调函数,这里onBackPress回调函数是CharacterView的handleNavBack方法,即举办了:

this.props.navigator.pop();

1
this.props.navigator.pop();

有关this.props.navigator,这里大家并从未在导航链上的各类组件显式地传递navigator属性,而是在Navigator初叶化的时候就在renderScene属性方法里统黄金时代配备了,导航链上全数组件的this.props.navigator其实都指向了一个联结的navigator对象,它有七个方法:push和pop,用来向导航链压入和推出组件,视觉上就是步入下一视图和重临上一视图,因而这里当点击顶栏再次回到按键时,直接调用pop方法就回到上一视图了。其实也得以把navigator对象传递到TopBarView里,在TopBarView内部调用navigator的pop方法,原理是同等的。而在CharacterView的认可按键事件里,必要保留顾客接纳的脚色然后跳转到下二个视图,便是经过props传递的:

this.props.navigator.push({ name:"registerNav", component:RegisterNavView, params:{character:this.state.character} });

1
2
3
4
5
this.props.navigator.push({
      name:"registerNav",
      component:RegisterNavView,
      params:{character:this.state.character}
    });

此地正是调用的navigator属性的push方法向导航链压入新的组件,即步入下一视图。push方法选取的参数是一个含有多个性格的靶子,name只是用来标志组件名称,而commponent和params则是标志组件以致传递给该器件的参数对象,这里的”commponent”和”params”多少个key名称是和前边renderScene是呼应的,在renderScene回调里边,用到的route.commponent和route.params,正是此处push传递的参数对应的值。
在客商注册视图中,有五个顾客协商必要顾客确认,这里客商左券视图的切换方式与主流程不太相似,而三个Navigator只可以在最早配置生龙活虎种切换形式,由此,这里在Navigator里嵌套了Navigator,效果如下:
云顶娱乐棋牌 13
CharacterView的跳转事件中,向navigator的push传递的组件并非RegisterView组件,而是传递的RegisterNavView组件,它是被嵌套的七个Navigator,那一个子导航链上带有了客户注册视图及顾客协商视图。

class RegisterNavView extends Component { constructor(props){ super(props); } handleConfirm(){ //send data to server ··· // this.props.navigator.push({ component:nextView, name:'userInfo' }); } render(){ return ( <View style={styles.container}> <Navigator style={styles.navWrap} initialRoute={{name: 'register', component:RegisterView,params:{navigator:this.props.navigator,onConfirm:this.handleConfirm.bind(this)}}} configureScene={(route) => { return Navigator.SceneConfigs.FloatFromBottom; }} renderScene={(route, navigator) => { let Component = route.component; return <Component {...route.params} innerNavigator={navigator} /> }} /> </View> ); } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class RegisterNavView extends Component {
  constructor(props){
    super(props);
  }
 
  handleConfirm(){
    //send data to server
    ···
    //
    this.props.navigator.push({
        component:nextView,
        name:'userInfo'
      });
  }
 
  render(){
    return (
      <View style={styles.container}>
        <Navigator style={styles.navWrap}
          initialRoute={{name: 'register', component:RegisterView,params:{navigator:this.props.navigator,onConfirm:this.handleConfirm.bind(this)}}}
          configureScene={(route) => {
            return Navigator.SceneConfigs.FloatFromBottom;
          }}
          renderScene={(route, navigator) => {
            let Component = route.component;
            return <Component {...route.params} innerNavigator={navigator} />
          }} />
      </View>
    );
  }
}

以此被嵌套的导航我们临时称为InnerNav,它的领头路由组件正是RegisterView,展示了输入账号密码等消息的视图,它的configureScene设置为“FloatFromBottom”,即从底部浮上来,renderScene也微微不风度翩翩致,在InnerNav导航链组件上传递的navigator对象名称改成了innerNavigator,以分别主流程Navigator,在RegisterView中有叁个【顾客合同】的文字开关,在此个开关上我们调用了向InnerNav压入左券视图的措施:

handleShowUserdoc(){ this.props.innerNavigator.push({ name:"usrdoc", component:RegisterUsrDocView }); }

1
2
3
4
5
6
handleShowUserdoc(){
    this.props.innerNavigator.push({
      name:"usrdoc",
      component:RegisterUsrDocView
    });
  }

而在RegisterUsrDocView即客商协商视图组件中,点击明确开关时大家调用了从InnerNav推出视图的点子:

handleHideUserdoc(){ this.props.innerNavigator.pop(); }

1
2
3
handleHideUserdoc(){
    this.props.innerNavigator.pop();
}

如此这般内嵌的导航链上的视图就完了了压入和生产的欧洲经济共同体意义,纵然有亟待,还足以增多越来越多组件。
在RegisterNavView组件的handleConfirm方法中,相当于点击注册之后调用的点子,那时向服务器发送数据同有的时候间须求步向注册的下意气风发环节了,因而须求主流程的Navigator压入新的视图,所以调用的是this.props.navigator.push,并不是innderNavigator的章程。

好了,差相当的少结交涉流程就介绍到那边了,绝相比较较轻易,实际支付中还是会碰着非常多细节难点,比方整个注册流程中,数据都必要仓库储存在地头,最终统豆蔻梢头交由到服务器,如果导航链上有超级多组件,那么数量就要顶级顶尖以props的格局传送,特别蛋疼,因而才引进了Redux来归总存款和储蓄和保管,下豆蔻年华篇小说会系统介绍Redux以致在此个小项目里引入Redux的历程。

打赏协助笔者写出越多好小说,多谢!

打赏笔者

Meta 标签与搜索引擎优化

2016/01/08 · HTML5 · Meta

原著出处: 静子(@静-如秋叶)   

当谈及到<meta>标签对寻觅引擎排名的震慑,很四个人都设有误会。在过去,大多早就失去功用的价签还是被频仍使用。所以什么标签对搜索引擎优化(SEO)有机能,哪些未有吗?

Web图片财富的加载与渲染时机

2017/07/27 · JavaScript · 渲染

原著出处: Leechikit   

此文钻探页面中的图片财富的加载和渲染机缘,使得大家能更加好的拘系图片能源,幸免不需要的流量和抓牢客户体验。

HTML 自定义成分教程

2017/06/22 · HTML5 · 自定义成分

云顶娱乐棋牌,原来的书文出处: 阮一峰   

零件是 Web 开辟的大势,今后的销路好是 JavaScript 组件,不过 HTML 组件今后大概更有期望。

正文就介绍 HTML 组件的基础知识:自定义成分(custom elements)。

云顶娱乐棋牌 14

风姿洒脱、浏览器管理

小编们日常都应用正式的 HTML 成分。

XHTML

<p>Hello World</p>

1
<p>Hello World</p>

地方代码中,``

``就是正经的 HTML 成分。

风流倜傥经利用非规范的自定义成分,会有何样结果?

XHTML

<greeting>Hello World</greeting>

1
<greeting>Hello World</greeting>

地点代码中,`就是非标准元素,浏览器不认识它。这段代码的[运行结果](http://jsbin.com/rifozonomu/edit?html,output)是,浏览器照常显示Hello World`,那注解浏览器并从未过滤这几个成分。

云顶娱乐棋牌 15

明日,为自定义成分加上样式。

JavaScript

greeting { display: block; font-size: 36px; color: red; }

1
2
3
4
5
greeting {
  display: block;
  font-size: 36px;
  color: red;
}

运维结果如下。

云顶娱乐棋牌 16

跟着,使用脚本操作这么些元素。

JavaScript

function customTag(tagName, fn){ Array .from(document.getElementsByTagName(tagName)) .forEach(fn); } function greetingHandler(element) { element.innerHTML = '你好,世界'; } customTag('greeting', greetingHandler);

1
2
3
4
5
6
7
8
9
10
11
function customTag(tagName, fn){
  Array
    .from(document.getElementsByTagName(tagName))
    .forEach(fn);
}
 
function greetingHandler(element) {
  element.innerHTML = '你好,世界';
}  
 
customTag('greeting', greetingHandler);

运维结果如下。

云顶娱乐棋牌 17

那评释,浏览器对待自定义成分,就如对待专门的学问成分一样,只是未有暗中同意的体裁和行为。这种管理方式是写入 HTML5 标准的。

“User agents must treat elements and attributes that they do not understand as semantically neutral; leaving them in the DOM (for DOM processors), and styling them according to CSS (for CSS processors), but not inferring any meaning from them.”

下面这段话的意思是,浏览器必需将自定义成分保留在 DOM 之中,但不会其余语义。除外,自定义成分与规范成分都千篇一律。

实在,浏览器提供了多个HTMLUnknownElement指标,全部自定义成分都以该对象的实例。

JavaScript

var tabs = document.createElement('tabs'); tabs instanceof HTMLUnknownElement // true tabs instanceof HTMLElement // true

1
2
3
4
var tabs = document.createElement('tabs');
 
tabs instanceof HTMLUnknownElement // true
tabs instanceof HTMLElement // true

上边代码中,tabs是三个自定义元素,同临时候继续了HTMLUnknownElementHTMLElement接口。

至于我:伯乐

云顶娱乐棋牌 18

简单介绍尚未来得及写 :) 个人主页 · 作者的稿子 · 4

云顶娱乐棋牌 19

打赏扶植自个儿写出越多好作品,多谢!

任选黄金时代种支付办法

云顶娱乐棋牌 20 云顶娱乐棋牌 21

1 赞 3 收藏 评论

什么是Meta标签

Meta标签给找寻引擎提供了不稀有关网页的信息。那几个音讯都是包罗音信,意味着对于网页自己的访谈者是不可知的。

你能够在网页的 <head>要素中发觉<meta>标签。在过去,有人黄金年代度问作者它是还是不是能够献身网页的<body>,最棒不要这么做。假设<meta>标签被放在<body>职分,有个别浏览器只怕相当小概识别它们,也就一定于您创立了不算的价签。

普通情状下,<meta> 标签会包罗一个name属性,用来安装元数据。元数据的值放在content属性之中。你能够在<meta>标签中动用各类名目/值对,让我们来看看里面包车型地铁部分。

浏览器的行事流程

要探讨图片财富的加载和渲染,大家先要通晓浏览器的干活规律。以Webkit内燃机的行事流程为例:

云顶娱乐棋牌 22

从上海体育地方可看出,浏览器加载多少个HTML页面后举办如下操作:

  • 解析HTML —> 构建DOM树
  • 加载样式 —> 拆解解析样式 —> 营造样式准绳树
  • 加载javascript —> 执行javascript代码
  • 把DOM树和体裁法则树相配营造渲染树
  • 总括元素地点进行布局
  • 绘制

从上海体育场地大家不能够很直观的见到图片财富从如哪天候早先加载,下Logo出图片加载和渲染的空子:

  • 解析HTML【遇到<img>标签加载图片】 —> 创设DOM树
  • 加载样式 —> 解析样式【遭遇背景图片链接不加载】 —> 创设样式准则树
  • 加载javascript —> 执行javascript代码
  • 把DOM树和体裁准绳树相配创设渲染树【加载渲染树上的背景图片】
  • 算算元素地方展开布局
  • 绘制【初始渲染图片】

二、HTML import

有了自定义元素,就能够写出语义性蛮好的 HTML 代码。

XHTML

<share-buttons> <social-button type="weibo"> <a href="...">微博</a> </social-button> <social-button type="weixin"> <a href="...">微信</a> </social-button> </share-buttons>

1
2
3
4
5
6
7
8
<share-buttons>
  <social-button type="weibo">
    <a href="...">微博</a>
  </social-button>
  <social-button type="weixin">
    <a href="...">微信</a>
  </social-button>
</share-buttons>

地点的代码,一眼就会观望语义。

如果将`元素的样式与脚本,封装在一个 HTML 文件share-buttons.html`之中,那几个因素就足以复用了。

行使的时候,先引进share-buttons.html

<link rel="import" href="share-buttons.html">

1
<link rel="import" href="share-buttons.html">

接下来,就足以在网页中使用``了。

XHTML

<article> <h1>Title</h1> <share-buttons/> ... ... </article>

1
2
3
4
5
<article>
  <h1>Title</h1>
  <share-buttons/>
  ... ...
</article>

HTML imports 的越来越多用法能够参照教程(1,2)。这段日子只有Chrome 浏览器扶持这几个语法。

至于小编:D.son

云顶娱乐棋牌 23

80后码农兼伪文青后生可畏枚,闷骚而不木讷,猥琐不流浪荡 个人主页 · 作者的篇章 · 1

云顶娱乐棋牌 24

你能够会遇见有个别Meta标签

让我们运维一下在一个网页中发觉的多少个不等的 <meta> 标签。

图形加载与渲染法规

页面中不是有所的<img>标签图片和样式表背景图片都会加载。

三、Custom Elements 标准

HTML5 标准规定了自定义成分是官方的。然后,W3C 就为自定义元素制订了三个单身的 Custom Elements 标准。

它与别的多个规范放在一齐—- HTML Imports,HTML Template、Shadow DOM—-统称为 Web Components 规范。最近,那几个专门的学问独有 Chrome 浏览器支持。

云顶娱乐棋牌 25

Custom Elements 规范对自定义成分的名字做了限制。

“自定义成分的名字必须含有贰个破折号(-)所以都是正确的名字,而和``是不科学的。那样的限定使得 HTML 拆解解析器能够分辨那么些是正式成分,哪些是自定义成分。”

云顶娱乐棋牌 26

留意,大器晚成旦名字之中使用了破折号,自定义成分就不是HTMLUnknownElement的实例了。

JavaScript

var xTabs = document.createElement('x-tabs'); xTabs instanceof HTMLUnknownElement // false xTabs instanceof HTMLElement // true

1
2
3
4
var xTabs = document.createElement('x-tabs');
 
xTabs instanceof HTMLUnknownElement // false
xTabs instanceof HTMLElement // true

Custom Elements 典型规定了,自定义成分的概念还不错 ES6 的class语法。

JavaScript

// 定义一个 class MyElement extends HTMLElement {...} window.customElements.define('my-element', MyElement);

1
2
3
// 定义一个
class MyElement extends HTMLElement {...}
window.customElements.define('my-element', MyElement);

地点代码中,原生的window.customElements对象的define主意用来定义 Custom Element。该办法选择多少个参数,第贰个参数是自定义成分的名字,第一个参数是四个ES6 的class

这个class使用getset办法定义 Custom Element 的有些属性。

JavaScript

class MyElement extends HTMLElement { get content() { return this.getAttribute('content'); } set content(val) { this.setAttribute('content', val); } }

1
2
3
4
5
6
7
8
9
class MyElement extends HTMLElement {
  get content() {
    return this.getAttribute('content');
  }
 
  set content(val) {
    this.setAttribute('content', val);
  }
}

有了那些定义,网页之中就足以插入``了。

JavaScript

<my-element content="Custom Element"> Hello </my-element>

1
2
3
<my-element content="Custom Element">
  Hello
</my-element>

管理脚本如下。

JavaScript

function customTag(tagName, fn){ Array .from(document.getElementsByTagName(tagName)) .forEach(fn); } function myElementHandler(element) { element.textConent = element.content; } customTag('my-element', myElementHandler);

1
2
3
4
5
6
7
8
9
10
11
function customTag(tagName, fn){
  Array
    .from(document.getElementsByTagName(tagName))
    .forEach(fn);
}
 
function myElementHandler(element) {
  element.textConent = element.content;
}
 
customTag('my-element', myElementHandler);

运维结果如下。

云顶娱乐棋牌 27

ES6 Class 的二个益处是,能够非常轻巧地写出传承类。

JavaScript

class MyNewElement extends MyElement { // ... } customElements.define('my-new-element', MyNewElement);

1
2
3
4
5
class MyNewElement extends MyElement {
  // ...
}
 
customElements.define('my-new-element', MyNewElement);

后天的课程就到此处,越多用法请参照他事他说加以考察Google的官方教程。

本文由云顶娱乐棋牌发布于云顶娱乐棋牌,转载请注明出处:云顶娱乐棋牌:ReactNative学习施行,标签与追寻引

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。