摘要:在中是主流布局方式。它有三種狀態(tài)正數(shù)零與負(fù)數(shù)。來看下運(yùn)行效果。這是為正數(shù)的情況,如果,控件的大小就會(huì)根據(jù)設(shè)置的與來固定顯示。如果發(fā)現(xiàn)生效的方式請(qǐng)務(wù)必告知。在中有主軸與副軸之分,主軸控制的排列方向,默認(rèn)為。默認(rèn)值為,繼承父容器的屬性。
今天我們來聊聊Flexbox,它是前端的一個(gè)布局方式。在React Native中是主流布局方式。如果你剛剛?cè)腴TReact Native,或者沒有多少前端的技術(shù)經(jīng)驗(yàn),亦或者對(duì)其半知半解,那么這篇文章將很好的幫助你參透Flexbox的整個(gè)全貌。
purpose通過這篇文章你將快速吃透整個(gè)Flexbox,因?yàn)閷?duì)于Flexbox你只需掌握以下幾點(diǎn)屬性即可。
flex
flexDirection
justifyContent
alignItems
flexWrap
alignSelf
flexFlexbox使用的是彈性布局,它有個(gè)屬性flex用來控制它的彈性。有點(diǎn)類似與Android布局中的weight屬性。當(dāng)然與前端的css中的flex也有所不同,它支持的類型是number不是string。它有三種狀態(tài):正數(shù)、零與負(fù)數(shù)。直接看代碼:
import React, {Component} from "react"; import {StyleSheet, Text, View} from "react-native"; export default class App extends Component{ render() { return ( ); } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", alignItems: "center", backgroundColor: "#F5FCFF", }, red: { flex: 1, width: 100, backgroundColor: "red" }, blue: { flex: 2, width: 100, backgroundColor: "blue" }, orange: { width: 100, height: 100, backgroundColor: "orange" } });
父容器使用flex:1來撐滿整個(gè)屏幕,orange是固定的一個(gè)view,而red與blue使用flex,通過flex的值進(jìn)行等比(1:2)分?jǐn)偸S嗟目臻g。來看下運(yùn)行效果。
這是為正數(shù)的情況,如果flex:0,控件的大小就會(huì)根據(jù)設(shè)置的width與height來固定顯示。
如果flex:-1,如果空間足夠,控件的大小也會(huì)根據(jù)width與height來展示;如果空間不足,會(huì)根據(jù)minWidth與minHeight來展示。
一般都不會(huì)使用flex:-1,而且經(jīng)過測(cè)試,空間不足時(shí)minWidth與minHeight并不會(huì)生效。如果發(fā)現(xiàn)生效的方式請(qǐng)務(wù)必告知。flexDirection
在Flexbox中有主軸與副軸之分,主軸控制child的排列方向,默認(rèn)為column??梢酝ㄟ^flexDirection屬性改變主軸方向。它有四個(gè)可選值分別為
row: child水平方向排列
column: child豎直方向排列(默認(rèn))
row-reverse: child水平方向反向排列
column-reverse: child豎直方向反向排列
在上面的demo基礎(chǔ)上改變style樣式:
const styles = StyleSheet.create({ container: { flex: 1, flexDirection: "row", justifyContent: "center", alignItems: "center", backgroundColor: "#F5FCFF", }, red: { height: 100, width: 100, backgroundColor: "red" }, blue: { width: 100, height: 100, backgroundColor: "blue" }, orange: { width: 100, height: 100, backgroundColor: "orange" } });
分別改變container中flexDirection的值:row、row-reverse、column、column-reverse
justifyContent固定好主軸之后,可以通過justifyContent來指定主軸方向child的排列方式,它有六個(gè)可選值
flex-start: child對(duì)齊主軸的起點(diǎn)(默認(rèn))
flex-end: child對(duì)齊主軸的終點(diǎn)
center: child居中對(duì)齊主軸
space-between: child在主軸方向相鄰child等間距對(duì)齊,首尾child與父容器對(duì)齊
space-around: child在主軸方向相鄰child等間距對(duì)齊,首尾child與父容器的間距相等且為相鄰child間距的一半
space-evenly: child在主軸方向均勻分布。相鄰間距與首尾間距相等
container: { flex: 1, flexDirection: "row", justifyContent: "flex-start", backgroundColor: "#F5FCFF", }
依次改變container中的justifyContent:flex-start、flex-end、center、space-between、space-around與space-evenly
主軸固定之后,剩下的就是副軸,alignItems可以用來控制副軸上的child排列方式。它有五個(gè)可選項(xiàng)分別為
flex-start: child對(duì)齊副軸起點(diǎn)(默認(rèn))
flex-end: child對(duì)齊副軸終點(diǎn)
center: child居中對(duì)齊副軸
stretch: child為彈性布局時(shí)(未設(shè)置副軸方向的大小或者為auto),拉伸對(duì)齊副軸
baseline: 有文本存在時(shí),child在副軸方向基于第一個(gè)文本基線對(duì)齊
改變container的style,主軸設(shè)置為row,依次改變alignItems:flex-start、flex-end、center
container: { flex: 1, flexDirection: "row", alignItems: "flex-start", backgroundColor: "#F5FCFF", }
最后將alignItems設(shè)置為stretch,并且改變r(jià)ed的height,red會(huì)被拉伸
container: { flex: 1, flexDirection: "row", alignItems: "stretch", backgroundColor: "#F5FCFF", }, red: { width: 100, height: "auto", backgroundColor: "red" }
alignItems: baseline,并不是文本的正中心,而是文本View的容器底部。在上面基礎(chǔ)上添加一個(gè)Text,讓文本自身居中展示。
container: { flex: 1, flexDirection: "row", alignItems: "baseline", backgroundColor: "#F5FCFF", }, text: { width: 80, height: 80, fontSize: 20, color: "white", marginTop: 110, backgroundColor: "black", textAlign: "center", textAlignVertical: "center" }flexWrap
如果再增加一個(gè)View,由于空間不足它會(huì)展示不全。這時(shí)可以使用flexWrap屬性,它可以支持自動(dòng)換行展示。
nowrap: 不換行(默認(rèn))
wrap: 自動(dòng)換行
在container中添加flexWrap屬性,并且再添加一個(gè)green view
container: { flex: 1, flexDirection: "row", flexWrap: "wrap", justifyContent: "flex-start", backgroundColor: "#F5FCFF", }, green: { width: 100, height: 100, backgroundColor: "green" }alignSelf
alignSelf屬性類似于alignItems,它也是控制副軸上的排列規(guī)則,不同的是它使用的對(duì)象是child自己。它可以改變父容器alignItems的屬性控制的child排列規(guī)則,在副軸上實(shí)現(xiàn)自己的排列規(guī)則。默認(rèn)值為auto,繼承父容器的alignItems屬性。因此它也有五個(gè)可選值:flex-start、flex-end、center、stretch與baseline。例如我們?yōu)閞ange添加alignSelf,其它的child不變,都繼承父容器的alignItems: flex-start
orange: { width: 100, height: 100, backgroundColor: "orange", alignSelf: "flex-end" }
其它的可選值就不一一說明,可以參考alignItemsother
最后還有三個(gè)比較冷門屬性,這里就不詳細(xì)一一代碼與貼圖,簡(jiǎn)單的說下它們的作用,相同點(diǎn)是它們都是在child中使用,與alignSelf的作用域一樣。
flexBasis: 設(shè)置主軸方向上的初始值,默認(rèn)為auto。如果與width或者h(yuǎn)eight同時(shí)存在,則會(huì)覆蓋它們的值
flexGrow: 設(shè)置chid的放大比例,類似于flex,空間充足時(shí)自動(dòng)按比例放大,默認(rèn)為0
flexShrink: 設(shè)置chid的縮小比例??臻g不足時(shí)自動(dòng)按比例縮小,默認(rèn)為0
有關(guān)Flexbox,縱觀全文只需掌握開頭所列的六種屬性,React Native中的絕大多數(shù)布局也就不成問題?,F(xiàn)在對(duì)于Flexbox是否清晰了許多呢?趕緊親自去試試吧~
精選文章ViewDragHelper之手勢(shì)操作神器
Android Architecture Components Part1:Room
自定義Android注解Part1:注解變量
tensorflow-梯度下降,有這一篇就足夠了
感覺不錯(cuò)的可以來一波關(guān)注,掃描下方二維碼,關(guān)注公眾號(hào),及時(shí)獲取最新知識(shí)技巧。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97046.html
摘要:在中是主流布局方式。它有三種狀態(tài)正數(shù)零與負(fù)數(shù)。來看下運(yùn)行效果。這是為正數(shù)的情況,如果,控件的大小就會(huì)根據(jù)設(shè)置的與來固定顯示。如果發(fā)現(xiàn)生效的方式請(qǐng)務(wù)必告知。在中有主軸與副軸之分,主軸控制的排列方向,默認(rèn)為。默認(rèn)值為,繼承父容器的屬性。 今天我們來聊聊Flexbox,它是前端的一個(gè)布局方式。在React Native中是主流布局方式。如果你剛剛?cè)腴TReact Native,或者沒有多少前端...
摘要:通過來對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)化處理或最終暴露給調(diào)用者對(duì)異常的處理。封裝在實(shí)際開發(fā)中,的都是相同的,不同的是請(qǐng)求的方法名與參數(shù)。上述提到的與的請(qǐng)求時(shí)機(jī)。下面來看下完整的封裝。 每一門語言都離不開網(wǎng)絡(luò)請(qǐng)求,有自己的一套Networking Api。React Native使用的是Fetch。 今天我們來談?wù)勁cFetch相關(guān)的一些事情。 purpose 通過這篇文章,你將了解到以下幾點(diǎn)關(guān)于Fet...
摘要:下面是本周精選內(nèi)容,請(qǐng)享用。不要看錯(cuò)了,這個(gè)是,和測(cè)試框架僅一字之差。本文作者王仕軍,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。想知道我接下來會(huì)寫些什么歡迎訂閱我的掘金專欄或知乎專欄前端周刊讓你在前端領(lǐng)域跟上時(shí)代的腳步。 showImg(https://segmentfault.com/img/remote/1460000009646412); 破解前端面試系列文章本周出到第 ...
摘要:表示在上的對(duì)齊方式,基于的頂部基于的底部基于的中部布滿整個(gè)。的屬性所占的比例大小。它允許項(xiàng)目中當(dāng)個(gè)和其他不一樣的對(duì)齊方式,會(huì)覆蓋的屬性。 React-Native 樣式的使用。 React-Native 編寫的應(yīng)用的樣式不是靠css來實(shí)現(xiàn)的,而是依賴javascript來為你的應(yīng)用來添加樣式,先不討論這樣做的好處與壞處,因?yàn)檫@個(gè)實(shí)現(xiàn)方法本身就存在著很多爭(zhēng)議,我們主要關(guān)注他的樣式的語法和...
閱讀 2057·2023-04-26 02:23
閱讀 1796·2021-09-03 10:30
閱讀 1362·2019-08-30 15:43
閱讀 1200·2019-08-29 16:29
閱讀 544·2019-08-29 12:28
閱讀 2343·2019-08-26 12:13
閱讀 2201·2019-08-26 12:01
閱讀 2413·2019-08-26 11:56