SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
CSS in JS
Escrevendo CSS no JavaScript
2
Dan Vitoriano
Engenheiro de Software, PagSeguro
dnvtrn
AGENDA
▹ O que é CSS in JS?
■ Como surgiu
▹ Por que usar?
▹ Como funciona?
■ Inline CSS
▹ Bibliotecas
■ JSS
■ Glamor
■ Styled-Components
▹ Referências
3
Esqueça os conceitos
front-end de separar
HTML, CSS e JS
Abra sua mente!
4
Primeiro passo:
O que é CSS in JS
“CSS in JS consiste em
abstrair o CSS para o
nível do componente em
si e não ao nível do
documento, usando
JavaScript para
descrever estilos de
uma maneira
declarativa e escalável.
6
“
TL;DR
▹ Escrever CSS dentro do .js
▹ Cada componente com seu CSS
▹ Usar estilos inline
▹ CSS agora são variáveis
7
Como surgiu?
▹ Em 2014
▹ Nos laboratórios do Facebook
▹ Tornou-se público depois desta talk do
@vjeux, engenheiro do FB
8
Por que usar?
Segundo @vjeux
Resolver problemas como:
Escalar CSS
▹ Escopo global
▹ Dependências
▹ Eliminar código não utilizado
▹ Minificação
▹ Compartilhar constantes
10
Como funciona?
Estilizando botões com CSS
12
/* button.css */
.button {
background: #f6f7f8;
border: 1px solid #cdced0;
border-radius: 2px;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.button-depressed {
border-color: #c6c7ca;
color: #5890ff;
}
Estilizando botões com JS
13
/* button.js */
var styles = {
container: {
background: '#f6f7f8',
border: '1px solid #cdced0',
borderRadius: 2,
boxShadow: '0 1px 1px rgba(0, 0, 0, 0.05)'
},
depressed: {
borderColor: '#c6c7ca',
color: '#5890ff'
}
}
cssinjs.org
Diferenças de sintaxe
15
/* button.js */
var styles = {
container: {
background: '#f6f7f8',
border: '1px solid #cdced0',
borderRadius: 2,
boxShadow: '0 1px 1px rgba(0, 0, 0, 0.05)'
}
}
CSS in JS:
● Strings
● Vírgulas
● camelCase
● Numbers
Como converter CSS para JSS
staxmanade.com/CssToReact
16
“
E como aplicar?
17
18
/* button.js */
var styles = {
container: {
background: '#f6f7f8',
border: '1px solid #cdced0',
borderRadius: 2,
boxShadow: '0 1px 1px rgba(0, 0, 0, 0.05)'
},
depressed: {
borderColor: '#c6c7ca',
color: '#5890ff'
}
}
/* button.js */
<div style={styles.container}>
CSS Inline!!!
Bibliotecas
As mais populares libs
▹ JSS
▹ Glamor
▹ Radium
▹ Aphrodite
▹ Emotion
▹ Glamorous
▹ Glamor
▹ Glam
▹ Fela
▹ Styletron
▹ React-CSS-Modules
▹ Babel-Plugin-CSS-in-JS
▹ JSXStyle
▹ Styled-Components
20
Nossos exemplos
▹ JSS
▹ Glamor
▹ Radium
▹ Aphrodite
▹ Emotion
▹ Glamorous
▹ Glamor
▹ Glam
▹ Fela
▹ Styletron
▹ React-CSS-Modules
▹ Babel-Plugin-CSS-in-JS
▹ JSXStyle
▹ Styled-Components
21
JSS
23
const styles = {
wrapper: {
padding: 40,
background: '#f7df1e',
textAlign: 'center'
},
title: {
font: {
size: 40,
weight: 900
},
color: '#24292e'
},
link: {
color: '#24292e',
'&:hover': {
opacity: 0.5
}
}
}
Ver código completo
no CodeSandBox:
https://codesandbox.io/s/z21lpmvv33
Repositório:
cssinjs.org
Glamor
25
const styles = {
container: css({
background: Globals.colors.white,
alignItems: 'center',
'@media(max-width: 720px)': {
alignSelf: 'auto',
},
}),
paragraphAfterParty: css({
textAlign: 'center',
':first-letter': {
textTransform: 'uppercase',
},
}),
card: css({
width: 250,
'@media(min-width: 721px)': {
height: 100,
},
backgroundColor: Globals.colors.white,
'> a > img': {
display: 'block',
},
})
};
Ver código completo
no Github:
github.com/frontinsampa/site2018
github.com/react-brasil/conf
Repositório:
github.com/threepointone/glamor
Styled-components
“
Principal committer styled-components:
Max Stoiber
@mxstbr
27
28
const Button = styled.a`
display: inline-block;
border-radius: 3px;
padding: 0.5rem 0;
margin: 0.5rem 1rem;
width: 11rem;
${props => props.primary && css`
background: white;
color: palevioletred;
`}
`
render(
<div>
<Button
href="https://github.com/styled-components/styled-components"
primary
>
GitHub
</Button>
</div>
)
Ver código completo
no CodeSandBox:
codesandbox.io/s/rkmNRByE4
Repositório:
github.com/styled-components/styled-components
Referências ▹ https://cssinjs.org/performance/?v=v10.0.0-alpha.10
▹ https://speakerdeck.com/vjeux/react-css-in-js
▹ https://blog.bitsrc.io/9-css-in-js-libraries-you-should-know-in-2018-25afb4025b9b
▹ https://staxmanade.com/CssToReact/
▹ https://hackernoon.com/all-you-need-to-know-about-css-in-js-984a72d48ebc
▹ https://medium.com/@oleg008/jss-is-css-d7d41400b635
▹ https://cssinjs.org/performance/?v=v10.0.0-alpha.10
▹ https://cssinjs.org/from-sass-to-cssinjs
▹ https://github.com/mxstbr
▹ https://www.styled-components.com/
▹ https://docs.google.com/presentation/d/1uACCYWjAjkLBNU4m3qyCuts32uiWR6UsooaNY
aQYVsg/edit?usp=sharing
▹ https://www.npmjs.com/package/react-styled-shadow-dom
29
Dúvidas?
twitter.com/dnvtrn
medium.com/@dnvtrn
github.com/danvitoriano
github.com/react-brasil
30

Mais conteúdo relacionado

Mais procurados

오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster
오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster
오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster
Opennaru, inc.
 
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
Amazon Web Services Korea
 
서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로
신우 방
 
3 Tier Architecture
3  Tier Architecture3  Tier Architecture
3 Tier Architecture
Webx
 
금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...
금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...
금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...
Amazon Web Services Korea
 

Mais procurados (20)

복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
OSA Con 2022 - Signal Correlation, the Ho11y Grail - Michael Hausenblas - AWS...
OSA Con 2022 - Signal Correlation, the Ho11y Grail - Michael Hausenblas - AWS...OSA Con 2022 - Signal Correlation, the Ho11y Grail - Michael Hausenblas - AWS...
OSA Con 2022 - Signal Correlation, the Ho11y Grail - Michael Hausenblas - AWS...
 
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
 
Multi-Tenant Approach
Multi-Tenant ApproachMulti-Tenant Approach
Multi-Tenant Approach
 
오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster
오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster
오픈소스 WAS를 위한 클러스터 솔루션 - OPENMARU Cluster
 
웹 3.0 시대에서의 블록체인, 메타버스 및 대체불가 토큰(NFT) on AWS 사례 공유 [레벨 200] - 발표자: 이이구, CTO, ...
웹 3.0 시대에서의 블록체인, 메타버스 및 대체불가 토큰(NFT) on AWS 사례 공유 [레벨 200] - 발표자: 이이구, CTO, ...웹 3.0 시대에서의 블록체인, 메타버스 및 대체불가 토큰(NFT) on AWS 사례 공유 [레벨 200] - 발표자: 이이구, CTO, ...
웹 3.0 시대에서의 블록체인, 메타버스 및 대체불가 토큰(NFT) on AWS 사례 공유 [레벨 200] - 발표자: 이이구, CTO, ...
 
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
 
AWS Summit Seoul 2023 | 천만 사용자를 위한 카카오의 AWS Native 글로벌 채팅 서비스
AWS Summit Seoul 2023 | 천만 사용자를 위한 카카오의 AWS Native 글로벌 채팅 서비스AWS Summit Seoul 2023 | 천만 사용자를 위한 카카오의 AWS Native 글로벌 채팅 서비스
AWS Summit Seoul 2023 | 천만 사용자를 위한 카카오의 AWS Native 글로벌 채팅 서비스
 
Streaming all over the world Real life use cases with Kafka Streams
Streaming all over the world  Real life use cases with Kafka StreamsStreaming all over the world  Real life use cases with Kafka Streams
Streaming all over the world Real life use cases with Kafka Streams
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로서비스 무중단 마이그레이션 : KT에서 Amazon으로
서비스 무중단 마이그레이션 : KT에서 Amazon으로
 
Elastic Load Balancing Deep Dive - AWS Online Tech Talk
Elastic  Load Balancing Deep Dive - AWS Online Tech TalkElastic  Load Balancing Deep Dive - AWS Online Tech Talk
Elastic Load Balancing Deep Dive - AWS Online Tech Talk
 
The history-of-cloud-computing
The history-of-cloud-computingThe history-of-cloud-computing
The history-of-cloud-computing
 
Introduction - vSphere 5 High Availability (HA)
Introduction - vSphere 5 High Availability (HA)Introduction - vSphere 5 High Availability (HA)
Introduction - vSphere 5 High Availability (HA)
 
Kafka 101
Kafka 101Kafka 101
Kafka 101
 
3 Tier Architecture
3  Tier Architecture3  Tier Architecture
3 Tier Architecture
 
Serverless Computing: build and run applications without thinking about servers
Serverless Computing: build and run applications without thinking about serversServerless Computing: build and run applications without thinking about servers
Serverless Computing: build and run applications without thinking about servers
 
금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...
금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...
금융권 최신 AWS 도입 사례 총정리 – 신한 제주 은행, KB손해보험 사례를 중심으로 - 지성국 사업 개발 담당 이사, AWS / 정을용...
 
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
 

Semelhante a CSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano

Unb 2012.1 - dweb - c - técnicas
Unb   2012.1 - dweb - c - técnicasUnb   2012.1 - dweb - c - técnicas
Unb 2012.1 - dweb - c - técnicas
Claudenio Alberto
 
Básico em (X)HTML e CSS
Básico em (X)HTML e CSSBásico em (X)HTML e CSS
Básico em (X)HTML e CSS
Kako Botasso
 
Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2
Afonso Gomes
 

Semelhante a CSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano (20)

Unb 2012.1 - dweb - c - técnicas
Unb   2012.1 - dweb - c - técnicasUnb   2012.1 - dweb - c - técnicas
Unb 2012.1 - dweb - c - técnicas
 
Arquitetura CSS
Arquitetura CSSArquitetura CSS
Arquitetura CSS
 
CSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoCSS - Cansei de Ser Subestimado
CSS - Cansei de Ser Subestimado
 
CSS Modules
CSS ModulesCSS Modules
CSS Modules
 
CSS No Webdesign - Aula 06 - Webdesign - 2020-01
CSS No Webdesign - Aula 06 - Webdesign - 2020-01CSS No Webdesign - Aula 06 - Webdesign - 2020-01
CSS No Webdesign - Aula 06 - Webdesign - 2020-01
 
Um guia bem básico de Bootstrap + Less
Um guia bem básico de Bootstrap + LessUm guia bem básico de Bootstrap + Less
Um guia bem básico de Bootstrap + Less
 
CSS
CSSCSS
CSS
 
Curso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSSCurso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSS
 
Psd to html
Psd to htmlPsd to html
Psd to html
 
Introdução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento webIntrodução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento web
 
CSS Básico - Webdesign - 2021-01
CSS Básico - Webdesign - 2021-01CSS Básico - Webdesign - 2021-01
CSS Básico - Webdesign - 2021-01
 
Pre vs Pos
Pre vs PosPre vs Pos
Pre vs Pos
 
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código  - 15 EDTEDOficina de Planejamento Corte: Seu layout virando código  - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
 
Design Responsivo com Sass
Design Responsivo com SassDesign Responsivo com Sass
Design Responsivo com Sass
 
Básico em (X)HTML e CSS
Básico em (X)HTML e CSSBásico em (X)HTML e CSS
Básico em (X)HTML e CSS
 
Speed up! Critical css to the rescue
Speed up! Critical css to the rescueSpeed up! Critical css to the rescue
Speed up! Critical css to the rescue
 
Css tutorial
Css tutorialCss tutorial
Css tutorial
 
Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
Conheça o Sass, mehor amigo do seu CSS - Nayara FelixConheça o Sass, mehor amigo do seu CSS - Nayara Felix
Conheça o Sass, mehor amigo do seu CSS - Nayara Felix
 
Introdução ao Asp.Net Mvc
Introdução ao Asp.Net MvcIntrodução ao Asp.Net Mvc
Introdução ao Asp.Net Mvc
 
Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2
 

Mais de Dan Vitoriano

Mais de Dan Vitoriano (20)

Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Workshop React Hooks
Workshop React HooksWorkshop React Hooks
Workshop React Hooks
 
AMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasAMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps Modernas
 
JavaScript das Ruas
JavaScript das RuasJavaScript das Ruas
JavaScript das Ruas
 
Times digitais de alta performance - Tera e Endeavor
Times digitais de alta performance - Tera e EndeavorTimes digitais de alta performance - Tera e Endeavor
Times digitais de alta performance - Tera e Endeavor
 
GraphQL - A Graph Query Language to your API
GraphQL - A Graph Query Language to your APIGraphQL - A Graph Query Language to your API
GraphQL - A Graph Query Language to your API
 
Mobile First e Offline First
Mobile First e Offline FirstMobile First e Offline First
Mobile First e Offline First
 
React Native
React NativeReact Native
React Native
 
Pdsp #3
Pdsp #3Pdsp #3
Pdsp #3
 
Pdsp #2
Pdsp #2Pdsp #2
Pdsp #2
 
Meetup Processos de Desenvolvimento São Paulo - Gamestorming
Meetup Processos de Desenvolvimento São Paulo - GamestormingMeetup Processos de Desenvolvimento São Paulo - Gamestorming
Meetup Processos de Desenvolvimento São Paulo - Gamestorming
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScript
 
Untraceable electronic mail, return addresses and digital pseudonyms - David ...
Untraceable electronic mail, return addresses and digital pseudonyms - David ...Untraceable electronic mail, return addresses and digital pseudonyms - David ...
Untraceable electronic mail, return addresses and digital pseudonyms - David ...
 
The computer for the 21st century - Mark Weiser, 1991
The computer for the 21st century - Mark Weiser, 1991The computer for the 21st century - Mark Weiser, 1991
The computer for the 21st century - Mark Weiser, 1991
 
Especificações UX/UI CMA Tablet
Especificações UX/UI CMA TabletEspecificações UX/UI CMA Tablet
Especificações UX/UI CMA Tablet
 
User experience guidelines for Universal Windows Platform (UWP) appsUwp app d...
User experience guidelines for Universal Windows Platform (UWP) appsUwp app d...User experience guidelines for Universal Windows Platform (UWP) appsUwp app d...
User experience guidelines for Universal Windows Platform (UWP) appsUwp app d...
 
Fullcircle papers - Sobre Blogs
Fullcircle papers - Sobre BlogsFullcircle papers - Sobre Blogs
Fullcircle papers - Sobre Blogs
 
Apresentação FEMUG-ABC
Apresentação FEMUG-ABCApresentação FEMUG-ABC
Apresentação FEMUG-ABC
 
Planejamento estratégico de comunicação digital - Dados sobre internet e mobi...
Planejamento estratégico de comunicação digital - Dados sobre internet e mobi...Planejamento estratégico de comunicação digital - Dados sobre internet e mobi...
Planejamento estratégico de comunicação digital - Dados sobre internet e mobi...
 
Google Material Design - Conceito, aplicações, código e web components
Google Material Design - Conceito, aplicações, código e web componentsGoogle Material Design - Conceito, aplicações, código e web components
Google Material Design - Conceito, aplicações, código e web components
 

CSS in JS - Escrevendo CSS no JavaScript - Dan Vitoriano

  • 1. CSS in JS Escrevendo CSS no JavaScript
  • 2. 2 Dan Vitoriano Engenheiro de Software, PagSeguro dnvtrn
  • 3. AGENDA ▹ O que é CSS in JS? ■ Como surgiu ▹ Por que usar? ▹ Como funciona? ■ Inline CSS ▹ Bibliotecas ■ JSS ■ Glamor ■ Styled-Components ▹ Referências 3
  • 4. Esqueça os conceitos front-end de separar HTML, CSS e JS Abra sua mente! 4 Primeiro passo:
  • 5. O que é CSS in JS
  • 6. “CSS in JS consiste em abstrair o CSS para o nível do componente em si e não ao nível do documento, usando JavaScript para descrever estilos de uma maneira declarativa e escalável. 6
  • 7. “ TL;DR ▹ Escrever CSS dentro do .js ▹ Cada componente com seu CSS ▹ Usar estilos inline ▹ CSS agora são variáveis 7
  • 8. Como surgiu? ▹ Em 2014 ▹ Nos laboratórios do Facebook ▹ Tornou-se público depois desta talk do @vjeux, engenheiro do FB 8
  • 10. Resolver problemas como: Escalar CSS ▹ Escopo global ▹ Dependências ▹ Eliminar código não utilizado ▹ Minificação ▹ Compartilhar constantes 10
  • 12. Estilizando botões com CSS 12 /* button.css */ .button { background: #f6f7f8; border: 1px solid #cdced0; border-radius: 2px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); } .button-depressed { border-color: #c6c7ca; color: #5890ff; }
  • 13. Estilizando botões com JS 13 /* button.js */ var styles = { container: { background: '#f6f7f8', border: '1px solid #cdced0', borderRadius: 2, boxShadow: '0 1px 1px rgba(0, 0, 0, 0.05)' }, depressed: { borderColor: '#c6c7ca', color: '#5890ff' } }
  • 15. Diferenças de sintaxe 15 /* button.js */ var styles = { container: { background: '#f6f7f8', border: '1px solid #cdced0', borderRadius: 2, boxShadow: '0 1px 1px rgba(0, 0, 0, 0.05)' } } CSS in JS: ● Strings ● Vírgulas ● camelCase ● Numbers
  • 16. Como converter CSS para JSS staxmanade.com/CssToReact 16
  • 18. 18 /* button.js */ var styles = { container: { background: '#f6f7f8', border: '1px solid #cdced0', borderRadius: 2, boxShadow: '0 1px 1px rgba(0, 0, 0, 0.05)' }, depressed: { borderColor: '#c6c7ca', color: '#5890ff' } } /* button.js */ <div style={styles.container}> CSS Inline!!!
  • 20. As mais populares libs ▹ JSS ▹ Glamor ▹ Radium ▹ Aphrodite ▹ Emotion ▹ Glamorous ▹ Glamor ▹ Glam ▹ Fela ▹ Styletron ▹ React-CSS-Modules ▹ Babel-Plugin-CSS-in-JS ▹ JSXStyle ▹ Styled-Components 20
  • 21. Nossos exemplos ▹ JSS ▹ Glamor ▹ Radium ▹ Aphrodite ▹ Emotion ▹ Glamorous ▹ Glamor ▹ Glam ▹ Fela ▹ Styletron ▹ React-CSS-Modules ▹ Babel-Plugin-CSS-in-JS ▹ JSXStyle ▹ Styled-Components 21
  • 22. JSS
  • 23. 23 const styles = { wrapper: { padding: 40, background: '#f7df1e', textAlign: 'center' }, title: { font: { size: 40, weight: 900 }, color: '#24292e' }, link: { color: '#24292e', '&:hover': { opacity: 0.5 } } } Ver código completo no CodeSandBox: https://codesandbox.io/s/z21lpmvv33 Repositório: cssinjs.org
  • 25. 25 const styles = { container: css({ background: Globals.colors.white, alignItems: 'center', '@media(max-width: 720px)': { alignSelf: 'auto', }, }), paragraphAfterParty: css({ textAlign: 'center', ':first-letter': { textTransform: 'uppercase', }, }), card: css({ width: 250, '@media(min-width: 721px)': { height: 100, }, backgroundColor: Globals.colors.white, '> a > img': { display: 'block', }, }) }; Ver código completo no Github: github.com/frontinsampa/site2018 github.com/react-brasil/conf Repositório: github.com/threepointone/glamor
  • 28. 28 const Button = styled.a` display: inline-block; border-radius: 3px; padding: 0.5rem 0; margin: 0.5rem 1rem; width: 11rem; ${props => props.primary && css` background: white; color: palevioletred; `} ` render( <div> <Button href="https://github.com/styled-components/styled-components" primary > GitHub </Button> </div> ) Ver código completo no CodeSandBox: codesandbox.io/s/rkmNRByE4 Repositório: github.com/styled-components/styled-components
  • 29. Referências ▹ https://cssinjs.org/performance/?v=v10.0.0-alpha.10 ▹ https://speakerdeck.com/vjeux/react-css-in-js ▹ https://blog.bitsrc.io/9-css-in-js-libraries-you-should-know-in-2018-25afb4025b9b ▹ https://staxmanade.com/CssToReact/ ▹ https://hackernoon.com/all-you-need-to-know-about-css-in-js-984a72d48ebc ▹ https://medium.com/@oleg008/jss-is-css-d7d41400b635 ▹ https://cssinjs.org/performance/?v=v10.0.0-alpha.10 ▹ https://cssinjs.org/from-sass-to-cssinjs ▹ https://github.com/mxstbr ▹ https://www.styled-components.com/ ▹ https://docs.google.com/presentation/d/1uACCYWjAjkLBNU4m3qyCuts32uiWR6UsooaNY aQYVsg/edit?usp=sharing ▹ https://www.npmjs.com/package/react-styled-shadow-dom 29