React Native - FlexBox彈性盒模型

FlexBox布局

1. 什么是FlexBox布局?

??彈性盒模型(The Flexible Box Module),又叫FlexBox,意為"彈性布局",旨在通過彈性的方式來對齊和分布容器中內容的空間,使其能適應不同屏幕,為盒模型提供最大的靈活性.
??Flex布局主要思想是: 讓容器有能力讓其子項目能夠改變其寬度,高度(甚至是順序), 以最佳方式填充可用空間;
??React Native中的FlexBox是這個規范的子集.

2. FlexBox在開發中的應用場景

2.1 FlexBox在布局中能夠解決什么問題?

  • 浮動布局
  • 各種機型屏幕適配
  • 水平和垂直居中
  • 自動分配寬度
  • ... ...

2.2 在CSS中,常規的布局是基于塊和內聯流方向,而Flex布局是基于flex-flow流,稀土很好解釋了Flex布局的思想:

762322-20170906103100069-1894833905.png

??容器默認存在兩根軸: 水平的主軸(main axis)垂直的主軸(cross axis).主軸的開始位置(與邊框的交叉點)叫做main start,結束位置叫做main end; 交叉軸的開始位置叫做cross start, 結束位置叫做cross end.
??項目默認沿主軸排列,單個項目占據的主軸空間叫做main size,占據的交叉軸空間叫做cross size.

2.3 根據伸縮項目排列方式的不同,主軸和測軸方向也有所變化:

762322-20170906103124569-1666520543.png

3. FlexBox的常用屬性

3.1 容器屬性

  • flexDirection:
    row | row-reverse | column | column-reverse
    • 該屬性決定主軸的方向(即項目的排列方向).
    • row : 主軸為水平方向,起點在左端
    • row-reverse : 主軸為垂直方向,起點在右端.
    • column(默認值) : 主軸為垂直方向,起點在上沿.
    • column-reverse : 主軸為垂直方向,起點在下沿.

762322-20170906103151788-109763726.png

  • justifyContent: flex-start | flex-end | center | space-between | space-around
    • 定義了伸縮項目在主軸線的對齊方式
    • flex-start(默認值): 伸縮項目向一行的起始位置靠齊.
    • flex-end: 伸縮項目向一行的結束位置靠齊.
    • center: 伸縮項目向一行的中間位置靠齊.
    • space-between: 兩端對齊,項目之間的間隔都相等.
    • space-around: 伸縮項目會平均的分布在行里,兩端保留一半的空間.

762322-20170906103214694-338898540.png

  • alignItems: flex-start | flex-end | center | baseline | stretch
    • 定義項目在交叉軸上如何對齊, 可以把其想象成側軸(垂直于主軸)的"對齊方式"
    • flex-start: 交叉軸的起點對齊
    • flex-end: 交叉軸的終點對齊
    • center: 交叉軸的重點對齊
    • baseline: 項目的第一行文字的基線對齊
    • stretch(默認值): 如果項目未設置高度或設為auto,將占滿整個容器的高度

762322-20170906103249366-14559059.png

  • flexWrap: nowrap | wrap | wrap-reverse

    • 默認情況下,項目都排在一條線(又稱"軸線")上. flex-wrap屬性定義,如果一條軸線排不下,如何換行.762322-20170906103323851-778988453.png

    • nowrap(默認值): 不換行762322-20170906103351085-1214408504.png

    • wrap: 換行, 第一行在上方.762322-20170906103406929-1267324745.png

    • wrap-reverse: 換行,第一行在下方. (和wrap相反)762322-20170906103423304-1327913537.png

3.2 元素屬性

  • flex
    • "flex-grow", "flex-shrink" 和 "flex-basis"三個屬性的縮寫, 其中第二個和第三個參數("flex-shrink" 和 "flex-basis")是可選參數.
    • 默認值為"0 1 auto".
    • 寬度 = 彈性寬度 * ( flexGrow / sum( flexGorw ) )
      762322-20170906103502147-472780756.png
  • alignSelf: "auto | flex-start | flex-end | center | baseline | stretch"
    • align-self屬性允許單個項目有與其他項目不一樣的對齊方式, 可覆蓋align-item屬性. 默認值為auto, 表示繼承父元素的align-items屬性,如果沒有父元素, 則等同于stretch.
      762322-20170906103531304-995061677.png

4. 在React Native中使用Flexbox

4.1 獲取當前屏幕的寬度,高度,分辨率

var Dimensions = require('Dimensions');export default class myApp extends Component {render() {return (<View style={styles.container}><View style={styles.innerView1}></View><View style={styles.innerView2}></View><View style={styles.innerView3}></View><Text>屏幕寬度是{Dimensions.get('window').width}</Text><Text>屏幕高度是{Dimensions.get('window').height}</Text><Text>屏幕分辨率是{Dimensions.get('window').scale}</Text></View>);}
}

762322-20170906103557741-910103095.png

感謝作者,原文地址,戳我

轉載于:https://www.cnblogs.com/gchlcc/p/7483353.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280539.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280539.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java虛擬機讀寫其他進程的數據

在java中&#xff0c;process類提供了如下3個方法&#xff0c;用于讓程序和其他子進程進行通信。 InputStream getErrorStream&#xff08;&#xff09;&#xff1a;獲取子進程的錯誤流。 InputStream getInputStream&#xff08;&#xff09;&#xff1a;獲取子進程的輸入流。…

release8_如何在Windows 8 Release Preview中將Chrome用作Metro瀏覽器

release8Windows 8 allows third-party browser to replace Internet Explorer in the Metro environment — except on Windows RT. You can use Google Chrome in Metro today, and Firefox for Metro is on the way. Windows 8允許第三方瀏覽器在Metro環境中替換Internet Ex…

html jQuery/bootstrap通過網絡bootcdn導入連接

網絡連接網址 https://www.bootcdn.cn/ <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>title</title><!-- Bootstrap --><link href"https://cdn.bootcdn.net/ajax/libs/twi…

Python深入類和對象

一. 鴨子類型和多態 1.什么是鴨子類型&#xff1a; 在程序設計中&#xff0c;鴨子類型&#xff08;英語&#xff1a;Duck typing&#xff09;是動態類型和某些靜態語言的一種對象推斷風格。"鴨子類型"像多態一樣工作&#xff0c;但是沒有繼承。“鴨子類型”的語言是這…

linux中/usr下文件權限修改setuid導致的問題

2019獨角獸企業重金招聘Python工程師標準>>> 在Ubuntu系統中因為一些原因我使用如下命令修改了/usr目錄的擁有者權限&#xff1a; chown -R root:root /usr結果直接導致系統無法正常啟動&#xff0c;通過跟蹤系統啟動日志/var/log/syslog找到如下失敗原因&#xff1…

[轉載]unix環境高級編程備忘:理解保存的設置用戶ID,設置用戶ID位,有效用戶ID,實際用戶ID...

轉載自http://www.cnblogs.com/stemon/p/5287631.html 一、基本概念 實際用戶ID(RUID)&#xff1a;用于標識一個系統中用戶是誰&#xff0c;一般是在登錄之后&#xff0c;就被唯一的確定&#xff0c;就是登錄的用戶的uid。 有效用戶ID(EUID)&#xff1a;用于系統決定用戶對系統…

django20:BBS網頁設計/注冊功能/驗證碼代碼

表設計 注冊功能 """ 1.注冊功能需要forms組件 不同功能&#xff0c;可單獨一個py文件2.利用forms組件渲染前端標簽1.利用ajax提交2.forms組件獲取用戶數據的數據。$(#form).serializeArray()獲取forms標簽所有用戶普通鍵值對的數據3. 手動渲染頭像label里面內…

用最少的代碼打造一個Mini版的gRPC框架

在《用最少的代碼模擬gRPC四種消息交換模式》中&#xff0c;我使用很簡單的代碼模擬了gRPC四種消息交換模式&#xff08;Unary、Client Streaming、Server Streaming和Duplex Streaming&#xff09;&#xff0c;現在我們更近一步&#xff0c;試著使用極簡的方式打造一個gRPC框架…

Windows 10的下一個更新將在您觀看視頻時隱藏通知

Windows 10’s Focus Assist feature temporarily hides incoming notifications. In Windows 10’s next update, Focus Assist can activate when you’re using any full-screen app, whether that’s YouTube in a browser, Netflix, or a desktop video player like VLC. …

Ubuntu安裝Samba文件共享服務器(NAS)

終于有點時間來解決下家中NAS需求了。一般自制NAS&#xff0c;只有選Samba。速度比FTP快&#xff0c;便利性比Windows文件夾共享好&#xff0c;設置多等等。 ?參考&#xff1a;samba簡介 安裝Samba $ sudo apt-get update $ sudo apt-get install samba samba-common-bin 核心…

剛畢業的ERP實施顧問做甲方

我剛畢業進入了一家小公司做ERP實施顧問&#xff0c;是一個臺灣的ERP軟件&#xff0c;就簡單培訓了一天&#xff0c;第二天就進入一家客戶公司解決問題&#xff0c;軟件都還沒有熟悉呢&#xff0c;更別說業務流程了&#xff0c;一天下來&#xff0c;人家員工問一個問題我記下來…

django21:admin后臺管理\media配置\圖片防盜鏈\暴露后端資源\路由分發\時間分類

admin后臺管理 創建超級用戶 createsuperuser 1.到應用下的admin.py注冊模型表 from django.contrib import admin from blog import models # Register your models here.admin.site.register(models.UserInfo) admin.site.register(models.Article) admin.site.register(m…

Flask博客開發——Tinymce編輯器

之前Flask博客的文本編輯器比較簡陋&#xff0c;這里為博客添加個優雅易用的Tinymce文本編輯器。 github見&#xff1a;https://github.com/ikheu/my_flasky 1 項目中添加Tinymce 下載好Tinymce包以及語言包&#xff0c;并添加到項目中。添加到項目的方法&#xff0c;參考了這篇…

Go開發Struct轉換成map兩種方式比較

最近做Go開發的時候接觸到了一個新的orm第三方框架gorose&#xff0c;在使用的過程中&#xff0c;發現沒有類似beego進行直接對struct結構進行操作的方法&#xff0c;有部分API是通過map進行數據庫相關操作&#xff0c;那么就需要我們把struct轉化成map&#xff0c;下面是是我嘗…

Hello, Raspberry Pi.

1.概要最近在研究自動升級開源項目的時候偶然想到IoT領域的自動升級&#xff0c;突然想起2016年買的樹莓派&#xff08;Raspberry Pi&#xff09;。那就分享一下如何入門樹莓派的教程&#xff0c;我當時一共買了兩塊一款是Raspberry Pi 3b&#xff08;2016年價格259元去年以抽獎…

supersu_SuperSU已從Play商店中刪除,這是替代使用的方法

supersuSuperSU has long been a staple in the rooted Android community. For years, the process for getting a rooted handset was: unlock the bootloader, flash a custom recovery, install SuperSU. That’s just how it was. 長期以來&#xff0c;SuperSU一直是扎根于…

Oracle 11g DRCP連接方式——基本原理

學習Oracle是一個復雜、繁瑣的過程。在浩如煙海的Oracle官方資料、新特性、MOS資料和各種Internal知識面前&#xff0c;我們總是覺得力不從心、不知所措。但是&#xff0c;這往往也就是我們不斷堅持、積累和追尋的樂趣。  在Oracle 11g中&#xff0c;提出了突破傳統專用/共享…

django項目開發1:搭建虛擬環境

需求 不同項目依賴不同模塊版本&#xff0c;不能共用一套環境&#xff0c;虛擬環境。在系統的python環境安裝 安裝 pip3 install virtualenv pip3 install virtualenvwrapper-win環境變量 # 配置環境變量&#xff1a; # 控制面板 > 系統和安全 > 系統 > 高級系統設…

IPC之——消息隊列

消息隊列作用&#xff1a; 可以用于兩個沒有聯系的進程間通信&#xff0c;創建一個消息隊列類似于打開了一個文件&#xff0c;兩個不同的進程都可以進行操作 消息隊列之函數介紹&#xff1a; 頭文件&#xff1a;<sys/type.h> <sys/ipc.h> <sys/msg.h> 1.msgg…

【招聘(上海)】To B數字化營銷公司-市場易,直招.NET后端研發工程師

【招聘背景】公司&#xff1a;上海光潾網絡科技有限公司成立于2016年&#xff0c;系上海市高新技術企業&#xff0c;2021年獲數千萬A輪融資項目&#xff1a;公司自主研發營銷自動化SaaS平臺- 市場易 (Custouch) &#xff0c;通過數字手段為B2B營銷賦能&#xff0c;現服務100多家…