Extra - Estilos con CSS
En Gatsby tenemos muchas formas de dar estilo a nuestros proyectos usando CSS, ya sea por medio de plugins oficiales o hechos por la comunidad.
Veamos algunas de las más comunes:
Usando estilos globales en el componente layout
Esta forma es la que nos viene por defecto si creamos nuestro proyecto con el
comando gatsby new, si vemos el archivo /src/components/layout.js, ahí se
importa con la siguiente línea:
import './layout.css'Así que todo componente o página que esté wrappeada en nuestro componente
<Layout> va a poder hacer uso de las bondades de este archivo de estilos.
Caso de que no hayamos utilizado gatsby new, debemos crear un componente
layout donde importemos nuestro archivo CSS y wrappear nuestros componentes de
página con este layout creado.
Para seguir leyendo
Usando estilos globales sin utilizar un componente layout
Utilizando esta forma vamos a realmente tener nuestros estilos de forma global. Lo que tenemos que hacer es (si no tenemos uno ya) crear nuestro archivo de estilos e importarlo en el archivo gatsby-browser.js de la siguiente manera:
Suponiendo que creamos src/styles/global.css, en gatsby-browser.js:
import './src/styles/global.css'Y vamos a tener disponible en todos nuestros componentes los estilos de ese archivo.
Para seguir leyendo
Usando Styled Components
Para utilizar Styled Components con Gatsby, vamos a tener que instalar un plugin, porque OBVIO que hay uno 😜
El plugin nos pide que instalemos lo siguiente:
npm i gatsby-plugin-styled-components styled-components babel-plugin-styled-componentsY una vez que tengamos ese plugin instalado, debemos sumarlo en nuestro array de plugins de nuestro archivo de configuración gatsby-config.js:
module.exports = {
plugins: [`gatsby-plugin-styled-components`],
}Luego volvemos bajamos y volvemos a correr nuestro servidor local con gatsby develop y podemos utilizarlo como se usa con React comúnmente:
import React from 'react'
import styled from 'styled-components'
const Container = styled.div`
margin: 3rem auto;
max-width: 600px;
display: flex;
align-items: center;
justify-content: center;
`
const Title = styled.h1`
font-weight: bolder;
font-size: xx-large;
color: LightGreen;
`
export default () => (
<Container>
<Title>Bienvenidos a mi página!!!</Title>
</Container>
)Para seguir leyendo
- gatsby-plugin-styled-components
- Documentación explicando uso de Styled Components
- Lección de egghead.io
Usando CSS Modules
Para aprovechar las bondades de CSS Modules la forma de utilizarlos sería así:
Creamos un módulo CSS src/pages/index.module.css:
.principal {
font-weight: bolder;
font-size: xx-large;
color: LightGreen;
}Y luego podemos usarlo importándolo por ejemplo en src/pagesindes.js:
import React from 'react'
import style from './index.module.css'
export default () => (
<>
<h1 className={style.principal}>Bienvenidos a mi página!!!</h1>
</>
)Para seguir leyendo
Usando Sass/SCSS
Para utilizar Sass, necesitamos instalar un plugin:
npm i node-sass gatsby-plugin-sassLo agregamos a nuestro array de plugins utilizados en configuración, en gatsby-config.js:
module.exports = {
plugins: [`gatsby-plugin-sass`],
}Luego escribimos nuestra hoja de estilos como .sass o .scss y los importamos
donde lo vayamos a utilizar.
Ejemplo Sass:
$font-stack: Helvetica, sans-serif
$primary-color: #333
body
font: 100% $font-stack
color: $primary-colorEjemplo SCSS:
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}Y los importamos usando la ruta relativa a cada archivo:
import './styles.sass'
import './styles.scss'Nota: Se pueden usar los archivos Sass/SCSS como módulos tal como se explica en 'Usando CSS Modules', con la salvedad de las extensiones de los archivos.
Para seguir leyendo
Usando Emotion
Creo que está de más decir que va a haber que instalar un plugin jaja.
npm i gatsby-plugin-emotion @emotion/core @emotion/styledLo agregamos en la configuración en gatsby-config.js:
module.exports = {
plugins: [`gatsby-plugin-emotion`],
}Y con eso ya estamos habilitados a usar Emotion, ya sea con css o con
styled-components:
Usando css:
import React from 'react'
import { css } from '@emotion/core'
export default () => (
<div>
<p
css={{
background: 'pink',
color: 'blue',
}}
>
Esta página utiliza Emotion.
</p>
</div>
)Usando styled-components:
import React from 'react'
import styled from '@emotion/styled'
const Content = styled.div`
text-align: center;
margin-top: 10px;
p {
font-weight: bold;
}
`
export default () => (
<Content>
<p>Esta página utiliza Emotion.</p>
</Content>
)Para seguir leyendo
Trabajando con fuentes
Añadiendo una fuente local
Copiemos nuestra fuente .woff2, .ttf, por ejemplo, en la carpeta
src/fonts/. Luego debemos importarla en nuestro CSS:
@font-face {
font-family: "Font Name";
src: url("../fonts/fontname.woff2");
}Y tenemos que asegurarnos de referenciar bien el nombre de la fuente, por ejemplo:
body {
font-family: "Font Name", sans-serif;
}De esta forma, modificando a body, afectamos a la mayoría del texto en la
página.
Para seguir leyendo
Usando Google Fonts
Para usar Google Fonts es mejor hostearlas en nuestro proyecto, así mejoramos la performance al no tener que estar yendo a buscar la fuente a una URL externa.
Para utilizar esto debemos seleccionar una fuente del proyecto typefaces.
Para empezar tenemos que instalar la fuente elegida de la siguiente manera:
npm i typeface-nombre-de-fuenteDonde tenemos que reemplazar nombre-de-fuente por la que querramos utilizar, un ejemplo sería la 'Source Sans Pro', que quedaría así:
npm i typeface-source-sans-proLuego importamos "typeface-nombre-de-fuente" en un layout, componente de página o en gatsby-browser.js dependiendo cómo lo querramos utilizar:
import 'typeface-nombre-de-fuente'Y una vez importada, ya podemos referenciarla en una hoja de estilos CSS, un CSS Module o utilizando CSS-in-JS:
body {
font-family: "Nombre de fuente";
}