• Stars
    star
    290
  • Rank 142,981 (Top 3 %)
  • Language
  • License
    MIT License
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Style React Native components using CSS, PostCSS, Sass, Less or Stylus.

React Native CSS modules

Style React Native components using CSS, PostCSS, Sass, Less or Stylus.

Quick links: FeaturesDocumentationExampleDevelopmentFAQ

Features

Examples

Using React Native CSS modules works almost the same way as using CSS modules with a Web React project, but there are some limitations. There is no support complex CSS selectors. Only simple CSS class selector (e.g. .myClass) is supported. React Native also only supports a subset of browser's CSS properties for styling.

For more info about the differences between using CSS modules in Web and React Native, have a look at this explanation in the FAQ.

Basic example using Sass

App.scss

.container {
  flex: 1;
  justify-content: center;
  align-items: center;
}

.blue {
  color: blue;
}

.blueText {
  @extend .blue;
  font-size: 18px;
}

App.js

import React from "react";
import { Text, View } from "react-native";
import styles from "./App.scss";

const App = () => (
  <View className={styles.container}>
    <Text className={styles.blueText}>Blue text</Text>
  </View>
);
export default App;

CSS media queries and CSS viewport units

If you need CSS media queries or CSS viewport units, please have a look at the responsive CSS features setup guide.

.wrapper {
  height: 10vh;
  width: 10vw;
}

@media (min-width: 800px) {
  .wrapper {
    height: 20vh;
    width: 20vw;
  }
}

CSS variables

CSS variables are not supported by default, but you can add support for them by using PostCSS and postcss-css-variables plugin.

Please have a look at the CSS variables setup guide.

:root {
  --text-color: blue;
}

.blue {
  color: var(--text-color);
}

Exporting variables from CSS to Javascript

You might also need to share you variables from a CSS/Sass/Less/Stylus file to Javascript. To do that you can use the :export keyword:

colors.scss

$grey: #ccc;

:export {
  grey: $grey;
}

App.js

import React from "react";
import { Text, View } from "react-native";
import colors from "./colors.scss";
import styles from "./App.scss";

const App = () => (
  <View className={styles.container}>
    <Text className={styles.blueText} style={{ color: colors.grey }}>
      Grey text
    </Text>
  </View>
);
export default App;

Example Apps

Have a look at the example apps to see how you can use CSS modules for both React Native and Web using the same code.

Documentation

📚 Setup

📚 Other documentation

Development

To see which new features are being planned and what is in progress, please have a look at the development board.

If you want to suggest a new feature or report a bug, please open a new issue.


Special thanks

The idea for React Native CSS modules comes from these projects that have made a lot of work for supporting CSS and CSS modules in React Native: css-to-react-native and react-native-sass-classname. A big thanks to them!


License

MIT

More Repositories

1

react-native-svg-transformer

Import SVG files in your React Native project the same way that you would in a Web application.
JavaScript
1,236
star
2

normalize.scss

SCSS version of normalize.css
CSS
261
star
3

pinar

🌲☀️ Customizable, lightweight React Native carousel component with accessibility support.
TypeScript
260
star
4

react-native-sass-transformer

Use Sass to style your React Native apps.
JavaScript
202
star
5

awesome-bundle-size

📝 An awesome list of tools and techniques to make your web bundle size smaller and your web apps load faster.
182
star
6

umatrix-recipes

"uMatrix Recipes" is a collection of rules for uMatrix that you can use to fix some popular websites by whitelisting the 3rd-party requests that are critical for the websites to function.
99
star
7

stylelint-declaration-block-no-ignored-properties

Disallow property values that are ignored due to another property value in the same rule.
JavaScript
90
star
8

css-to-react-native-transform

Turn valid CSS into React Native Stylesheet objects.
JavaScript
86
star
9

stylelint-high-performance-animation

Stylelint rule for preventing the use of low performance animation and transition properties.
JavaScript
64
star
10

stylelint-react-native

A collection of React Native specific linting rules for stylelint (in a form of a plugin).
JavaScript
56
star
11

react-native-css-transformer

Use CSS to style your React Native apps.
JavaScript
34
star
12

react-native-svg-example

A simple example app that shows how you can use SVG files in React Native
Java
31
star
13

iOSBadge

iOS style notification badges for web
CoffeeScript
28
star
14

react-native-less-transformer

Use Less to style your React Native apps.
JavaScript
27
star
15

stylelint-config-react-native-styled-components

Shareable stylelint config for styled components when using React Native
JavaScript
26
star
16

react-native-css-modules-with-typescript-example

A simple example app that shows how you can use CSS modules + Typescript with React Native and React (for browser)
Java
18
star
17

stylelint-z-index-value-constraint

Stylelint rule for setting minimum and maximum constraint value for z-index.
JavaScript
18
star
18

react-native-css-modules-with-media-queries-example

An example app to show how CSS Media Queries work in React Native.
JavaScript
18
star
19

react-native-postcss-transformer

Use PostCSS to style your React Native apps.
JavaScript
17
star
20

react-native-css-modules-example

A simple example app that shows how you can use CSS modules with React Native and React (for browser)
JavaScript
15
star
21

travis-chrome

An example repo to show how to run tests with Karma runner using Chrome browser (with Xvfb) in Travis CI
JavaScript
14
star
22

karma-bdd-using

DRY your Karma + Jasmine or Mocha tests using the data provider pattern
JavaScript
14
star
23

react-native-stylus-transformer

Use Stylus to style your React Native apps.
JavaScript
13
star
24

babel-plugin-react-native-platform-specific-extensions

Allow react-native platform specific extensions to be used for other file types than Javascript.
JavaScript
13
star
25

react-native-types-for-css-modules

React Native Typescript types with an extra added type: className property
Ruby
13
star
26

react-native-css-media-query-processor

Match style objects containing CSS Media Queries with React Native
JavaScript
12
star
27

babel-plugin-react-native-classname-to-dynamic-style

Transform JSX className property to a style property that gets calculated at runtime in React Native. The plugin is used to match style objects containing parsed CSS media queries and CSS viewport units with React Native.
JavaScript
12
star
28

HTML-newsletter-builder

A command line tool to help build and preprocess email newsletters
JavaScript
12
star
29

jQuery-Geolocator

A Geolocation API plugin for jQuery or Zepto
JavaScript
12
star
30

babel-plugin-react-native-classname-to-style

Transform JSX className property to style property in react-native.
JavaScript
10
star
31

observable-redux-json-api

Observables + Redux + JSON API
TypeScript
8
star
32

css-calc-transform

Tiny Javascript library to transform CSS properties with calc() function values to pixels based on window and element dimensions.
JavaScript
8
star
33

react-native-typed-sass-transformer

Sass transformer with Typescript support for React Native
JavaScript
7
star
34

babel-plugin-react-native-stylename-to-style

Transform styleName property to style property in react-native.
JavaScript
7
star
35

react-native-dynamic-style-processor

React Native dynamic style processor combines multiple runtime style transformations together.
JavaScript
6
star
36

placekeeper

Placekeeper is a HTML5 placeholder attribute polyfill for old browsers that lack support for it.
JavaScript
6
star
37

react-native-svg-expo-example

JavaScript
6
star
38

stylelint-config-react-native-css-modules

Shareable stylelint config for React Native CSS modules
JavaScript
5
star
39

bdd-using

DRY your Jasmine or Mocha tests using the data provider pattern
JavaScript
5
star
40

react-native-css-modules-stylename-example

A simple example app that shows how you can use CSS modules + styleName syntax with React Native and React (for browser)
JavaScript
4
star
41

observable-redux-json-api-typescript-example

A minimal example to show how to use observable-redux-json-api library using React, Typescript and Express.js.
JavaScript
3
star
42

react-native-orientation-change-provider

Simple React Native Provider component that forces a re-render when orientation changes.
JavaScript
3
star
43

css-viewport-units-transform

Transform CSS viewport units of a Javascript style object to pixels based on window dimensions
JavaScript
3
star
44

react-native-known-styling-properties

List of React Native specific styling properties.
JavaScript
3
star
45

react-native-typed-less-transformer

Less transformer with Typescript support for React Native
JavaScript
3
star
46

react-native-typed-postcss-transformer

PostCSS transformer with Typescript support for React Native
JavaScript
2
star
47

css-mod-stylus-setup

Objective-C
2
star
48

react-native-typed-css-transformer

CSS transformer with Typescript support for React Native
JavaScript
2
star
49

css-calc-proof-of-concept

An app for doing a proof of concept for using CSS calc() function in React Native
Java
2
star
50

react-native-0.59-svg-example

An example of using react-native-svg-transformer in React Native 0.59.x
Objective-C
2
star
51

rn-svg-rendering-issues

Objective-C
1
star
52

react-native-ios-13-view-or-image-inside-text-bug

Objective-C
1
star
53

react-native-text-transform-issue

A demo app to reproduce a bug with textTransform on Android
Objective-C
1
star
54

react-native-css-modules-with-viewport-units-example

An example app to show how CSS Viewport Units work in React Native.
Objective-C
1
star
55

adventures-in-webkit-land

JavaScript
1
star
56

react-native-typed-stylus-transformer

Stylus transformer with Typescript support for React Native
JavaScript
1
star
57

package-updater

JavaScript
1
star
58

rn-svg-crash

Objective-C
1
star
59

pinar-example-app

TypeScript
1
star
60

expo-scss-test

Objective-C
1
star
61

Test-iOS-Travis-CI

Test iOS Travis CI
Objective-C
1
star
62

react-native-css-modules-dss-example

Example app to show how to use DSS (https://dss-lang.com) and React Native CSS modules together
JavaScript
1
star
63

react-native-svg-debug-0.59.5

Objective-C
1
star
64

helsinkijs-may-2013-talk

JavaScript
1
star
65

observable-redux-json-api-example

A minimal example to show how to use observable-redux-json-api library using React and Express.js.
JavaScript
1
star