react-native
styling
Sök…
Introduktion
StyleSheet.create(StyleObject)
eller det kan skickas till funktionen StyleSheet.create(StyleObject)
och lagras i en variabel för kortare inline-åtkomst genom att använda ett väljarnamn för det som liknar en klass i CSS.
Syntax
-
<Component style={styleFromStyleSheet} />
-
<Component style={styleObject} />
-
<Component style={[style1,style2]} />
Anmärkningar
De flesta reagerade infödda stilar är deras CSS-former, men i kamelfall. Så text-decoration
blir textDecoration
.
Till skillnad från i CSS blir stilar inte ärvda. Om du vill att barnkomponenter ska ärva en viss stil måste du uttryckligen lämna det till barnet. Det betyder att du inte kan ställa in en teckensnittsfamilj för en hel View
.
Ett undantag från detta är Text
: kapslade Text
ärver deras överordnade stilar.
Styling med inline stilar
Varje React Native komponent kan ta en style
prop. Du kan skicka det ett JavaScript-objekt med CSS-stilstilegenskaper:
<Text style={{color:'red'}}>Red text</Text>
Detta kan vara ineffektivt eftersom det måste återskapa objektet varje gång komponenten återges. Att använda ett formatmall föredras.
Styling med hjälp av ett stilark
import React, { Component } from 'react';
import { View, Text, StyleSheet } from 'react-native';
const styles = StyleSheet.create({
red: {
color: 'red'
},
big: {
fontSize: 30
}
});
class Example extends Component {
render() {
return (
<View>
<Text style={styles.red}>Red</Text>
<Text style={styles.big}>Big</Text>
</View>
);
}
}
StyleSheet.create()
returnerar ett objekt där värdena är siffror. React Native vet att konvertera dessa numeriska ID: er till rätt stilobjekt.
Lägga till flera stilar
Du kan skicka en array till style
prop applicera flera stilar. När det finns en konflikt har den sista i listan företräde.
import React, { Component } from 'react';
import { View, Text, StyleSheet } from 'react-native';
const styles = StyleSheet.create({
red: {
color: 'red'
},
greenUnderline: {
color: 'green',
textDecoration: 'underline'
},
big: {
fontSize: 30
}
});
class Example extends Component {
render() {
return (
<View>
<Text style={[styles.red, styles.big]}>Big red</Text>
<Text style={[styles.red, styles.greenUnderline]}>Green underline</Text>
<Text style={[styles.greenUnderline, styles.red]}>Red underline</Text>
<Text style={[styles.greenUnderline, styles.red, styles.big]}>Big red underline</Text>
<Text style={[styles.big, {color:'yellow'}]}>Big yellow</Text>
</View>
);
}
}
Villkorlig styling
<View style={[(this.props.isTrue) ? styles.bgcolorBlack : styles.bgColorWhite]}>
Om värdet på isTrue
är true
kommer det att ha svart bakgrundsfärg annars vit.