React Native 之 View使用
ning.ding
8年前
<h2>前言</h2> <ul> <li> <p>学习本系列内容需要具备一定 HTML 开发基础。</p> </li> <li> <p>本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所偏差,在学习中如果有错会及时修改内容,也欢迎万能的朋友们批评指出,谢谢</p> </li> </ul> <h2>JSX 和 组件 的概念</h2> <ul> <li> <p>React的核心机制之一就是虚拟DOM(可以在内存中创建的虚拟DOM元素)React利用虚拟DOM来减少对实际DOM的操作从而提升性能。传统的创建方式如下:</p> <pre> <code class="language-javascript">var newBox = document.createElement('div'); newBox.className = 'box'; $('main').appendChild(newBox);</code></pre> </li> <li> <p>上面的代码在可读性方面比较不好,所以 React 开发了 JSX,利用我们熟悉的 HTML 语法来创建虚拟 DOM,创建方式如下:</p> <pre> <code class="language-javascript"><div className="box"> </div></code></pre> </li> <li> <p>在实际开发中,JSX在产品打包阶段已经编译成纯 JavaScript, JSX的语法不会带来任何性能影响。所以,JSX可以看成是比较高级但依然直观的语法糖</p> </li> </ul> <h2>View 组件中常见的属性</h2> <ul> <li> <p>React Native 组件 View,其作用等同于iOS中的 UIView,Android中的 android.view 或者网页中的</p> <p>标签,它是所有组件的父组件,也可以说所有组件继承了它的所有属性</p> </li> <li style="text-align:center">这边就将它常见的属性罗列出来: <ul> <li>Flexbox:弹性布局</li> <li>Transforms:动画属性</li> <li>backfaceVisibility('visible', 'hidden'):定义界面翻转的时候是否可见</li> <li>backgroundColor:背景颜色</li> </ul> <pre> <code class="language-javascript">// 背景颜色 backgroundColor:'red'</code></pre> <p>效果:</p> <img src="https://simg.open-open.com/show/abc45cdb3d823fb6f3e3691a399d4a6f.png"> <ul> <li>borderBottomColor:底部边框颜色</li> </ul> <pre> <code class="language-javascript">// 底部边框宽度 borderBottomWidth:5, // 底部边框颜色 borderBottomColor:'green'</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/dc308dc481bb067d6fe165c95544ed6b.png"> <ul> <li>borderBottomLeftRadius:底部左边边框圆角</li> </ul> <pre> <code class="language-javascript">// 底部边框左圆角 borderBottomLeftRadius:5</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/c37f2fa891e98a564db827424c998598.png"> <ul> <li>borderBottomRightRadius:</li> </ul> <pre> <code class="language-javascript">// 底部边框右圆角 borderBottomRightRadius:5</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/e3c4ff4d02c7694c7867c398b6791463.png"> <ul> <li>borderBottomWidth:底部边框宽度</li> </ul> <pre> <code class="language-javascript">// 底部边框宽度 borderBottomWidth:5</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/dc308dc481bb067d6fe165c95544ed6b.png"> <ul> <li>borderColor:边框颜色</li> </ul> <pre> <code class="language-javascript">// 全体边框宽度 borderWidth:5, // 全体边框颜色 borderColor:'yellow'</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/000b4ea2e1a8c38c547547e73bdd2f6f.png"> <ul> <li>borderLeftColor:左边框颜色</li> </ul> <pre> <code class="language-javascript">// 左边边框颜色 borderLeftColor:'black'</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/908a71537a7f2b184ea09d2eb2896516.png"> <ul> <li>borderLeftWidth:左边边框宽度</li> </ul> <pre> <code class="language-javascript">// 左边边框宽度 borderLeftWidth:10</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/43a5a0ad7ae9b78b3caa9f354c3f9b61.png"> <ul> <li>borderRadius:边框圆角</li> </ul> <pre> <code class="language-javascript">// 全体边框宽度 borderWidth:5, // 全体边框颜色 borderColor:'black', // 全体边框圆角 borderRadius:3</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/dfbd9c74959ae5761466a60ace5b1ae5.png"> <ul> <li>borderRightColor:右边边框颜色</li> </ul> <pre> <code class="language-javascript">// 右边框颜色 borderRightColor:'yellow'</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/ecf4ffe9b0f899d7998b58658aabdd44.png"> <ul> <li>borderRightWidth:右边边框宽度</li> </ul> <pre> <code class="language-javascript">// 右边框宽度 borderRightWidth:10</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/d10b271b4b4be2cd40f7a5dbb22953be.png"> <ul> <li>borderStyle('solid', 'dotted', 'dashed'):边框风格 <pre> <code class="language-javascript">// 边框风格 borderStyle:'solid'</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/c6f79e9167e2c69cbd4e4f9783139d73.png"> <pre> <code class="language-javascript">// 边框风格 borderStyle:'dotted'</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/392abc7ba26939718533a5a9de7ee3e9.png"> <pre> <code class="language-javascript">// 边框风格 borderStyle:'dashed'</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/a172f21a8c99e17f08cd0702d301748d.png"></li> <li> <p>borderTopColor:顶部边框颜色(参考上面)</p> </li> <li> <p>borderTopWidth:顶部边框宽度(参考上面)</p> </li> <li> <p>borderTopLeftRadius:顶部左边圆角(参考上面)</p> </li> <li> <p>borderTopRightRadius:顶部右边圆角(参考上面)</p> </li> <li> <p>borderWidth:边框宽度</p> </li> </ul> <pre> <code class="language-javascript">// 全体边框宽度 borderWidth:5</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/c6f79e9167e2c69cbd4e4f9783139d73.png"> <ul> <li>opacity:设置透明度,取值从 0~1</li> </ul> <pre> <code class="language-javascript">// 透明度 opacity:0.5</code></pre> 效果:<br> <img src="https://simg.open-open.com/show/bbe01ca4952aca5493adabe87ea39c34.png"> <ul> <li> <p>overflow('visible', 'hidden'):设置内容超出容器部分是否显示(以后的文章讲解)</p> </li> <li> <p>elevation:高度,设置Z轴,可产生立体效果(以后文章讲解)</p> </li> </ul> </li> </ul> <h2>View 组件使用</h2> <ul> <li>简单使用</li> </ul> <pre> <code class="language-javascript">render() { return ( <View style={styles.container}> <View style={{width:300, height:100, backgroundColor:'red', borderWidth:1, borderColor:'black'}}> </View> </View> ); }</code></pre> <ul> <li> <p>上面代码是我们熟悉的 CSS 写法</p> <p>效果:</p> <img src="https://simg.open-open.com/show/435fc679ac753c1548092b4532bdda17.png"></li> <li> <p>在 React Native 开发中,推荐我们采用 StyleSheet 来进行组件的布局,这样从代码结构上来看会更加清晰,有利于后期的维护</p> </li> <li>我们将上面的样式通过 StyleSheet 方式来实现 <pre> <code class="language-javascript">var test = React.createClass({ render() { return ( <View style={styles.container}> <View style={styles.viewStyle}> </View> </View> ); } });</code></pre> <pre> <code class="language-javascript">var styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, viewStyle: { // 尺寸 width:300, height:100, // 背景颜色 backgroundColor:'red', // 边框宽度 borderWidth:1, // 边框颜色 borderColor:'black' } });</code></pre> </li> </ul> <p>View 在开发中是经常会接触到的组件,灵活运用它可以帮助我们更好地结构化代码,甚至更方便的布局</p> <p> </p> <p>来自:http://www.cnblogs.com/miaomiaoshen/p/6144541.html</p> <p> </p>