Formation
Améliorer le développement avec CSS-in-JS
Styled Component & Styled-jsx
Une formation
Sandy LUDOSKY
Cursus CSS
Une formation
Introduction
1. Premier pas avec le CSS moderne
2. Web moderne : les méthodes et solutions
3. CSS-in-JS : styled-component
4. CSS-in-JS : styled-component (avancé)
5. CSS-in-JS : librairie styled-jsx avec NextJS
6. CSS-in-JS : librairie styled-jsx avec ReactJS
Conclusion
Plan de la formation
Une formation
Niveau intermédiaire à avancé
Développeurs professionnels
Intégrateurs web
Public concerné
Connaissances requises
ReactJS ⚛
Bootstrap
Une formation
Connaissances requises
Présentation du projet
Une formation
Sandy LUDOSKY
Une formation
Présentation des outils
Visual Studio Code
Navigateur moderne
React Developer Tools
Ressources et outils
Une formation
Sandy LUDOSKY
Visual Studio Code
Node.js & npm
Librairies
Une formation
Les fichiers téléchargeables 📁
Version de démarrage
Version finale
Ressources
Découvrir les fondements
et les principes de construction
moderne CSS
Une formation
Sandy LUDOSKY
Une formation
Présentation
CSS = Cascading Stylesheet
1994 : début CSS
1996 : premières spécifications CSS1
Une formation
Versions du CSS
CSS 1.0 => CSS 2.0 => CSS 2.1
CSS 3
Utilités du CSS
Mise en forme et habillage page web
Métiers du web et numérique
Photo by Campaign Creators on Unsplash
Photo by Alex Kotliarskyi on Unsplash
Utilités du CSS
Photo by UX Indonesia on Unsplash
Utilités du CSS
Photo by Ярослав Алексеенко on Unsplash
Photo by Brett Jordan on Unsplash
CSS
Découvrir les solutions
du CSS moderne
Une formation
Sandy LUDOSKY
Une formation
Les solutions CSS moderne
La grille CSS & Flexbox
Les librairies & frameworks
CSS-in-JS
Écrire du CSS dans javascript
Une formation
Sandy LUDOSKY
Une formation
Écrire du CSS dans javascript
Installation
Aucune
Syntaxe
const styles = { … }
Écrire du CSS modulaire
avec styled JSX et styled component
Une formation
Sandy LUDOSKY
Une formation
Écrire du CSS dans javascript
CSS scopé
CSS à portée limitée
Une formation
Styled-component
Module npm
4M+ téléchargements
const Component = styled.div`
…
`
Une formation
Styled-jsx
<style jsx>
{`
….
`}
</style>
Installer le React CLI
et démarrer le projet
Une formation
Sandy LUDOSKY
Une formation
Projet de démarrage ReactJs
Npm install
Projet de démarrage ReactJs
const styles = {
background: #333;
color: white;
}
const App = () => {
return(<div style={styles}> … </div>)
}
Comprendre CSS-in-JS
Une formation
Sandy LUDOSKY
Objet de style
Combinaison de propriétés CSS et de langage Javascript
const styles = {
…
}
const styles = {
background: #333
color: white
}
Mettre en forme
avec les objets de style
Une formation
Sandy LUDOSKY
Mise en forme avec les objets de style
const styles = {
background: #333;
color: white;
}
const styles = {
background: #333;
color: white;
}
const App = () => {
return(<div style={styles}> … </div>)
}
Mise en forme avec les objets de style
Télécharger le projet
de démarrage
Une formation
Sandy LUDOSKY
Installer les librairies
styled-component et react-bootstrap
Une formation
Sandy LUDOSKY
Une formation
Installer les librairies
npm i react-bootstrap
npm i styled-component
const Component = styled.div`
…
`
import styled from “styled-component”
const Component = styled.div`
background: #333;
color: white
`
<div className=”container”>
<Component />
</div>
const Component = styled.div`
background: #333;
color: white
`
Découvrir la syntaxe
et créer un composant de style
Une formation
Sandy LUDOSKY
import styled from “styled-component”
const StyledComponent = styled.div`
background: #333;
color: white;
border-radius : 5px;
`
import styled from “styled-component”
export default const App = () => {
return(
<div className=”container”>
<StyledComponent />
…
</div>
)
}
Personnaliser les composants
avec React et styled-component
Une formation
Sandy LUDOSKY
import styled from “styled-component”
export default const App = () => {
return(
<div className=”container”>
<StyledComponent dark/>
…
</div>
)
}
import styled from “styled-component”
const StyledComponent = styled.div`
background: ${props => props.dark ? #333 : white}
color: ${props => props.dark ? white : #333 }
border-radius : 5px;
`
Importer et personnaliser les composants
Bootstrap avec du CSS-in-JS
Une formation
Sandy LUDOSKY
import styled from “styled-component”
import Button from “react-bootstrap/Button”
const StyledButton = styled.(Button)`
border: none;
float:${props => props.right ? 'right': 'default' };
background: ${props => {
if (props.dark) { return "#34495e"}
return 'white'
}};
`
export default const App = () => {
return(
<div className=”container”>
<StyleButton dark/>
…
</div>
)
}
Personnaliser
avec styled-component
Une formation
Sandy LUDOSKY
Créer une librairie de composants
personnalisés et réutilisables
Une formation
Sandy LUDOSKY
Une formation
Introduction et objectifs
Créer un style global
createGlobalStyle()
Theming
Context API
ThemeProvider
ThemeConsumer
HOC : withTheme()
hook : useTheme()
Créer et partager un style global
avec createGlobalStyle
Une formation
Sandy LUDOSKY
Créer un style global
createGlobalStyle()
import { createGlobalStyle } from “styled-component”
const GlobalStyle = createGlobalStyle`
some CSS-in-JS
…
`
fonction pour créer et retourner un objet de styles globaux
render(
<GlobalStyle props>
<App />
</GlobalStyle>
)
import { createGlobalStyle } from “styled-component”
const GlobalStyle = createGlobalStyle`
…
`
const props = {}
Créer un style global
Theming
Utiliser ThemeProvider
et l'accessoire thème
Une formation
Sandy LUDOSKY
Une formation
Composant pour enrober l’application et
transmettre des valeurs et des règles de style
globales
Theming : ThemeProvider
import { ThemeProvider } from “styled-component”
const theme = {
bg: black,
fg: white
}
src/index.js
const theme = {...}
render(
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
)
Theming
Utiliser ThemeConsumer
Une formation
Sandy LUDOSKY
Une formation
Partage de valeurs et de règles de style globales
entre composants
Theming : ThemeConsumer
import { ThemeConsumer } from “styled-component”
src/App.js
const App = () => {
return(
<ThemeConsumer>{theme => {
return(<div {...theme}>{ … }</div>)
}}
</ThemeConsumer>
)
}
Theming
Utiliser le HOC withTheme
Une formation
Sandy LUDOSKY
Une formation
Composant d’ordre supérieur pour partager la
logique entre composants
Theming : withTheme
import { withTheme } from “styled-component”
src/App.js
const App = ({ theme }) => {
return(...)
}
export default withTheme(App)
Theming
Utiliser le hook useTheme
Une formation
Sandy LUDOSKY
Une formation
Hook personnalisé pour partager la logique
entre composants fonctionnels
Theming : useTheme
import { useTheme } from “styled-component”
src/App.js
const App = () => {
const theme = useTheme()
return(<div {...theme}>{ … }</div>)
}
export default App
Introduction et objectifs
librairie styled-jsx
Une formation
Sandy LUDOSKY
Une formation
Framework NextJS et les solutions CSS
Projet NextJS
CSS-in-JS avec styled-jsx
Introduction et objectifs
Découvrir le framework NextJS
et les fonctionnalités CSS intégrées
Une formation
Sandy LUDOSKY
Une formation
Framework React
Server-side-rendering
CSS-in-JS avec styled-jsx
Framework NextJS
NextJS CLI
Créer un nouveau projet
et découvrir l'anatomie
Une formation
Sandy LUDOSKY
Une formation
Démarrer un nouveau projet
npm create next-app
npx create-next-app <appName>
Créer des pages et mettre en forme
les options CSS-in-JS
Une formation
Sandy LUDOSKY
Une formation
Les options CSS-in-JS
CSS
styles/globals.css
styles/[component].module.css
CSS-in-JS
styled-jsx
Utiliser la librairie styled-jsx
Une formation
Sandy LUDOSKY
Une formation
Les options CSS-in-JS
CSS
styles/globals.css
styles/[component].module.css
CSS-in-JS
styled-jsx
Changer l'apparence
des pages avec styled-jsx
Une formation
Sandy LUDOSKY
Créer un nouveau projet React
Une formation
Sandy LUDOSKY
Mettre en forme
avec styled-jsx
Une formation
Sandy LUDOSKY
Conclusion
Une formation
Sandy LUDOSKY
Une formation
Bilan
Avantages CSS-in-JS
architecture ordonnée
maintenable
scalable
Prochaine formation
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Component & Styled-jsx

Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Component & Styled-jsx