Advertisement
  1. Web Design
  2. HTML/CSS
  3. CSS

Un proceso de desarrollo en WordPress usando Sass y Compass

Scroll to top
Read Time: 14 min

() translation by (you can also view the original English article)

En este artículo, veremos cómo usar Sass y Compass en nuestro proceso de desarrollo de temas de WordPress. Estructuraremos nuestras hojas de estilo temáticas de manera SMACSS y aprovecharemos el poder de Compass para generar imágenes de imagen tanto para dispositivos de retina como de no retina.

Tenga en cuenta que este artículo no es una introducción a Sass; sin embargo, si usted es un principiante, siéntase libre de seguirlo.

Requerimientos

Antes de saltar, asegúrese de que tiene Sass y Compass instalados en su máquina. Si aún no los ha instalado, siga las instrucciones en:

Hay pocas aplicaciones Sass y Compass basadas en GUI, pero usaré el Terminal (si está en Windows, entonces puede usar el Símbolo del sistema). Siéntete libre de usar la herramienta con la que te sientas más cómodo.

Configuración del proyecto

Empecemos creando una carpeta para nuestro proyecto. Crea una nueva carpeta en tu escritorio y llámala tutsplus. Dentro de ella se crean dos nuevas carpetas: sass e imáges. La carpeta sass contendrá nuestros archivos Sass que formarán nuestra hoja de estilo del tema, el style.css.

Abra la carpeta images y cree dos nuevos directorios para nuestros iconos temáticos. Llama a los directorios icons e icons@2x. Más adelante, usaremos las imágenes de estas carpetas para crear sprites de imagen para nuestro tema. En este punto, la estructura de sus carpetas debe tener el siguiente aspecto:

Figure 1 The Folders structureFigure 1 The Folders structureFigure 1 The Folders structure
La estructura de las carpetas.

Configuración de Compass

Usaremos Compass para watch los cambios de archivos dentro de la carpeta sass y, cuando ocurra un cambio, utilizará Sass para compilar nuestras hojas de estilo. Cada vez que iniciamos Compass, buscará un archivo de configuración en el directorio actual. Ese archivo se llama config.rb.

Para crear el archivo de configuración, abra su terminal y navegue a la carpeta tutsplus en su escritorio:

1
cd /Desktop/tutsplus/

Luego llame al comando compass config config.rb. Este comando de relleno genera el archivo de configuración para usted. Abra el archivo en su editor de texto favorito y realice los siguientes cambios:

  1. Cambie de css_dir = "stylesheets" a: css_dir = "/". Esto le indicará a Compass que genere los archivos CSS generados dentro de nuestra carpeta de raíz de tema, ya que aquí es donde WordPress buscará nuestro style.css del tema.
  2. Establezca su estilo de salida preferido para el CSS generado. Aquí, lo estableceré en estilo expandido escribiendo en la línea 12 output_style = :expanded.
  3. Descomente las líneas 14 y 17 eliminando el símbolo de hash anterior para que las siguientes líneas parezcan a relative_assets = true y line_comments = false.

Guarda tus cambios. Ahora su archivo config.rb debería verse como el siguiente:

1
# Require any additional compass plugins here.

2
3
# Set this to the root of your project when deployed:

4
http_path = "/"
5
css_dir = "/"
6
sass_dir = "sass"
7
images_dir = "images"
8
javascripts_dir = "javascripts"
9
10
# You can select your preferred output style here (can be overridden via the command line):

11
# output_style = :expanded or :nested or :compact or :compressed

12
output_style = :expanded
13
14
# To enable relative paths to assets via compass helper functions. Uncomment:

15
relative_assets = true
16
17
# To disable debugging comments that display the original location of your selectors. Uncomment:

18
line_comments = false
19
20
# If you prefer the indented syntax, you might want to regenerate this

21
# project again passing --syntax sass, or you can uncomment this:

22
# preferred_syntax = :sass

23
# and then run:

24
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass

Esté atento a los cambios

¡Todo bien! Ahora que tenemos el archivo de configuración, es el momento de crear nuestro primer archivo Sass. Crea un nuevo archivo dentro de la carpeta sass y llámalo style.scss. A continuación, inicie su Terminal y navegue al directorio /Desktop/tutsplus/.

Ejecutar el comando compass watch. Este comando iniciará un proceso que buscará continuamente los cambios de archivos Sass dentro de nuestra carpeta sass. Encontrará nuestro archivo style.scss y generará su representación CSS como style.css dentro de nuestro directorio tutsplus.

Tenga en cuenta que todos los archivos dentro de nuestra carpeta sass cuyos nombres no comienzan con guión bajo se procesarán y generarán en la carpeta tutsplus. Esto es exactamente lo que queremos para el archivo style.scss.

Una cosa importante a recordar: no haga cambios directos dentro de los archivos CSS generados, ya que sus cambios se perderán una vez que vuelva a compilar sus archivos Sass.

Descomponer

Vamos a separar nuestro style.scss en pequeños componentes utilizando las guías de estilo definidas en SMACSS (Arquitectura escalable y modular para CSS). El autor de SMACSS es Jonathan Snook y ha publicado un libro sobre este tema que les invito a leer. Si eres miembro de Tuts+, puedes descargar una copia desde aquí.

SMACSS clasifica sus reglas de CSS en cinco grupos:

  1. Base
  2. Diseño
  3. Módulo
  4. Estado
  5. Tema

Vamos a crear una carpeta para cada una de esas categorías dentro de nuestra carpeta sass. Utilice los siguientes nombres: base, layouts, modules, states y themes.

Figure 2 Our SMACSS folder structureFigure 2 Our SMACSS folder structureFigure 2 Our SMACSS folder structure
Nuestra estructura de carpetas SMACSS

Base

En su carpeta base, coloque todas sus hojas de estilo que cumplan con las Reglas de estilo base de SMACSS. Esas hojas de estilo deben aplicar estilos solo en los selectores de elementos. Este es también un buen lugar para poner tu navegador para restablecer CSS.

Compass viene con reinicio del navegador basado en la hoja de estilo de reinicio de Eric Meyer. Para este proyecto, voy a utilizar normalize.css. Descargue el archivo normalize.css y colóquelo dentro del directorio base, luego cambie su nombre a _normalize.scss. Asegúrese de cambiar su extensión de archivo de css a scss.

A continuación, debemos importar la hoja de estilo normalize en nuestro style.scss. Para hacer esto abre el style.scss y agrega:

1
// Base 
2
@import "base/normalize";

Como puede ver, estamos omitiendo el guión bajo en el nombre del archivo y su extensión. El preprocesador Sass es lo suficientemente inteligente como para importar el archivo que queríamos.

Diseños

Aquí, coloque sus estilos de diseño de tema. Por ejemplo, esto incluirá su encabezado, barra lateral, pie de página y diseños de página como _header.scss, _sidebar.scss, _footer.scss y _page.scss.

Puede usar el prefijo l- para sus nombres de clase de diseño:

1
// _header.scss
2
.l-main-header {
3
    margin: 30px;
4
    padding: 20px;
5
    font-size: 16px;
6
}
7
8
// _navigation.scss
9
.l-main-nav {
10
    position: relative;
11
}

Este es también un buen lugar para su hoja de estilo de cuadrícula. También puede leer más sobre las reglas de diseño de SMACSS.

Módulos

Los módulos son elementos de contenido reutilizables. Por ejemplo, una publicación de blog es un módulo en el que sus reglas se reutilizan en varias instancias del mismo módulo.

Los widgets, códigos cortos e íconos también son un tipo de módulo.Un módulo puede contener submódulos. Aquí hay un ejemplo de módulo widget y su submódulo de título:

1
<li class="widget">
2
    <h4 class="widget__title">Recent Posts</h4>
3
</li>
1
.widget {
2
    padding: 10px;
3
}
4
5
.widget__title {
6
    font-size: 15px;
7
}

Aquí estamos usando la convención de nomenclatura de clase BEM (modificador de elemento de bloque).

Estados

Coloque aquí sus hojas de estilo que controlan la apariencia de sus elementos dependiendo de algún estado. Si está creando un tema de respuesta, haga clic aquí en su hoja de estilos de consultas de medios.

Vamos a crear uno ahora mismo.

Cree un nuevo archivo en su editor de texto y guárdelo como _media_queries.scss en la carpeta /sass/states/. Pegue estas reglas comunes de tamaño de pantalla dentro del archivo:

1
/*! =Media Queries

2
-------------------------------------------------------------- */
3
4
/* 956-768px */
5
@media only screen and (min-width: 768px) and (max-width: 959px) {
6
7
}
8
9
/* 767-480px */
10
@media only screen and (min-width: 480px) and (max-width: 767px) {
11
12
}
13
14
/* 479px */
15
@media only screen and (max-width: 479px) {
16
17
}

No olvide importar nuestra hoja de estilos recién creada en nuestro archivo style.scss:

1
// Base 
2
@import "base/normalize";
3
4
// States 
5
@import "states/media_queries"

Si tiene, por ejemplo, un menú de navegación fuera de la pantalla, aquí puede colocar los estilos que controlarán la apariencia cuando su navegación se abra o se cierre, .is-open o .is-closed, pero en la mayoría de los casos los colocará en el archivo de diseño o módulo. para la navegación off-canvas.

Temas

Este es un buen lugar para poner los estilos de sus complementos personalizados de WordPress. Por ejemplo, aquí puede colocar sus estilos personalizados para, por ejemplo, el complemento Contact Form 7.

Información del tema

El archivo style.css de cada tema de WordPress debe contener metainformación sobre el tema, como el nombre del tema, el autor, la versión y más. Podemos aprovechar las variables de Sass para cambiar esa información para cada tema que creamos.

Primero cree un nuevo archivo llamado _vars.scss y guárdelo dentro de la carpeta sass. En este archivo pondremos todas nuestras variables. Si encuentra que este archivo crece demasiado, separe su contenido en archivos más pequeños.

Abra el archivo recién creado e ingrese las siguientes variables:

1
// Theme Information
2
//--------------------------------------------//
3
$theme_name: "My Theme";
4
$theme_uri: "#";
5
$theme_description: "My WordPress Theme";
6
$theme_version: "1.0";
7
$theme_author: "my name";
8
$theme_author_uri: "#";
9
$theme_license: "GPL";
10
$theme_tags: "responsive-layout, post-formats";

Ahora necesitamos crear un archivo que usará las variables anteriores. Con el editor de texto que elija, cree un nuevo archivo llamado _theme_info.scss y guárdelo en la carpeta sass. Llene el _theme_info.scss con el siguiente contenido:

1
/*!

2


3
Theme Name: #{ $theme_name }

4
Theme URI: #{ $theme_uri }

5
Description: #{ $theme_description }

6
Version: #{ $theme_version }

7
Author: #{ $theme_author }

8
Author URI: #{ $theme_author_uri }

9
License: #{ $theme_license }

10
License URI: License.txt

11
Tags: #{ $theme_tags }

12


13
*/

El paso final es importar nuestros archivos recién creados dentro de style.scss, también importemos los componentes de Compass:

1
@import "compass";
2
3
@import "vars";
4
@import "theme_info";
5
6
// Base 
7
@import "base/normalize";
8
9
// States 
10
@import "states/media_queries";

Ahora, si abre el archivo style.css procesado, contendrá el bloque de comentarios de información del tema de WordPress con los valores de las variables que estableció en el archivo _vars.scss.

Ayudantes

Es una buena práctica usar clases CSS más genéricas más pequeñas para diseñar un elemento en lugar de usar un selector demasiado específico. Sigue el principio DRY - No te repitas. Podemos crear una hoja de estilo para nuestras clases de pequeños ayudantes. Para darles un ejemplo, definiré algunos ayudantes de diseño y tipografía.

Cree un nuevo archivo llamado _helpers.scss y guárdelo dentro de la carpeta sass. Nuevamente, al igual que con el archivo de variables, si su archivo auxiliar es demasiado grande para mantener, considere dividirlo en archivos más pequeños.

Abre el archivo recién creado y pégalo en:

1
/*! =Helpers

2
-------------------------------------------------------------- */
3
4
// Layout
5
//--------------------------------------------//
6
.left {
7
    float: left;
8
}
9
10
.right {
11
    float: right;
12
}
13
14
.clear {
15
    clear: both;
16
}
17
18
.hide {
19
    display: none;
20
}
21
22
.hidden {
23
    opacity: 0;
24
    visibility: hidden;
25
}
26
27
.clearfix {
28
29
    &:before,
30
    &:after {
31
        content: " ";
32
        display: table;
33
    }
34
35
    &:after {
36
        clear: both;
37
    }
38
}
39
40
.center-block {
41
    display: block;
42
    margin: 0 auto;
43
}
44
45
// Typography
46
//--------------------------------------------//
47
.f-normal {
48
    font-weight: normal;
49
}
50
51
.f-bold {
52
    font-weight: bold;
53
}
54
55
.f-italic {
56
    font-style: italic;
57
}
58
59
.t-strike {
60
    text-decoration: line-through;
61
}
62
63
.t-overline {
64
    text-decoration: overline;
65
}
66
67
.t-underline {
68
    text-decoration: underline;
69
}
70
71
.t-left {
72
    text-align: left;
73
}
74
75
.t-right {
76
    text-align: right;
77
}
78
79
.t-center {
80
    text-align: center;
81
}

Como puede ver aquí, estamos usando el prefijo f- para las clases relacionadas con la fuente y t- para las clases relacionadas con el texto. Guarda tu archivo e impórtalo dentro de style.scss:

1
@import "compass";
2
3
@import "vars";
4
@import "theme_info";
5
6
// Base 
7
@import "base/normalize";
8
9
// Helpers 
10
@import "helpers";
11
12
// States 
13
@import "states/media_queries";

Generando Sprites

Compass viene con métodos prácticos para generar sprites de imagen. Colocaremos nuestros íconos dentro de nuestras carpetas icons e icons@2x, donde estos últimos contendrán los mismos íconos pero en el doble del tamaño para dispositivos con pantalla retina.

Para este ejemplo, pondré dentro de dos archivos de iconos: checkmark.png y star.png que puedes encontrar en el paquete de descarga asociado con esta publicación.

Figure 3 The iconsFigure 3 The iconsFigure 3 The icons
Los iconos

Para cada ícono generaremos una clase de CSS por separado utilizando una lista Sass con todos los nombres de archivo de íconos. Abra el archivo _vars.scss y agregue el siguiente código:

1
// Icons
2
//--------------------------------------------//
3
// map *.png icon files
4
$icons_sprite: sprite-map( "icons/*.png" ); 
5
$icons_sprite2x: sprite-map( "icons@2x/*.png" );
6
7
// generate the icons sprites
8
$sprites_file: sprite-url( $icons_sprite );
9
$sprites2x_file: sprties-url( $icons_sprite2x );
10
11
$sprites_url: url( "images/" + sprite-path( $icons_sprite ) );
12
$sprites2x_url: url( "images/" + sprite-path( $icons_sprite2x ) );
13
14
// list with theme icons file names (found in icons and icons@2x folders)
15
$theme_icons: ( "checkmark", "star" );

Compass encontrará todos los archivos de imagen *.png dentro de nuestras carpetas de iconos y generará dos sprites de imagen en la carpeta images. Ahora queremos generar clases de CSS para esas imágenes.

Para encontrar la posición del icono dentro de la imagen del sprite, crearemos dos mixins de ayuda. Para hacerlo, cree un nuevo archivo y llámelo _mixins.scss, luego ábralo y péguelo en el siguiente código:

1
// Icons
2
//--------------------------------------------//
3
@mixin sprite_icon( $name, $sprite ) {
4
    
5
    @include sprite-dimensions( $sprite, $name );
6
    background-position: sprite-position( $sprite, $name );
7
}
8
9
@mixin retina_sprite_icon( $name, $sprite ) {
10
    
11
    $pos: sprite-position( $sprite, $name );
12
    background-position: nth( $pos, 1 ) nth( $pos, 2 ) / 2;
13
    @include background-size( ceil( image-width( sprite-path( $sprite ) ) / 2 ) auto );
14
}

Ambas combinaciones están aceptando un nombre de icono más un mapa de sprites como argumentos. Esos mixins establecerán el ancho, la altura y la posición de fondo para el icono dentro del sprite de imagen generado. El retina_sprite_icon también establecerá el tamaño de fondo adecuado para los iconos de retina.

Ahora es el momento de generar nuestras clases de iconos. Cree un nuevo archivo llamado _icons.scss y guárdelo dentro de la carpeta /sass/modules/. A continuación, pegue dentro del siguiente contenido:

1
/*! =Icons 

2
-------------------------------------------------------------- */
3
@if ( length( $theme_icons ) > 0 ) {
4
5
    .icon {
6
        display: inline-block;
7
        background: $sprites_url no-repeat;
8
    }
9
                
10
    @each $icon in $theme_icons {
11
        
12
        .#{ "icon--" + $icon } {
13
            
14
            @include sprite_icon( $icon, $icons_sprite );
15
        }
16
    }
17
18
    @media
19
    only screen and (-webkit-min-device-pixel-ratio: 2),
20
    only screen and (   min--moz-device-pixel-ratio: 2),
21
    only screen and (     -o-min-device-pixel-ratio: 2/1),
22
    only screen and (        min-device-pixel-ratio: 2),
23
    only screen and (                min-resolution: 192dpi),
24
    only screen and (                min-resolution: 2dppx) {
25
26
        .icon {
27
            background: $sprites2x_url;
28
        }
29
30
        @each $icon in $theme_icons {
31
            
32
            .#{ "icon--" + $icon } {
33
34
                @include retina_sprite_icon( $icon, $icons_sprite2x );
35
            }
36
        }
37
    }
38
39
}

Aquí, repasamos nuestra lista de nombres de íconos que se identifica con $theme_icons y generamos reglas de estilo retina y no retina usando nuestros íconos mixin. A partir de ahí, generamos una clase llamada .icon que será el módulo base para nuestros íconos y luego las clases de modificadores de módulo para cada ícono en la lista.

En este ejemplo, generará las clases .icon--checkmark y .icon--star. Aquí hay un ejemplo de uso del icono de estrella:

1
<i class="icon icon--star"></i>

Finalmente, importemos nuestro módulo de mixins e íconos dentro del archivo style.scss:

1
@import "compass";
2
3
@import "vars";
4
@import "mixins";
5
@import "theme_info";
6
7
// Base 
8
@import "base/normalize";
9
10
// Helpers 
11
@import "helpers";
12
13
// Modules
14
@import "modules/icons";
15
16
// States
17
@import "states/media_queries";

Conclusión

Sass y Compass son dos potentes utilidades y pueden contribuir en gran medida a mejorar el desarrollo de su tema de WordPress y el desarrollo del complemento de WordPress. Esta guía apunta a ponerlo en camino para crear un proceso más refinado para trabajar con WordPress.

Para aquellos que tengan curiosidad y quieran leer más sobre parte de la información cubierta en este tutorial, revise los siguientes artículos:

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.