goals do
goal "Escribir algunos archivos comunes de HTML"
goal "Usar clases y atributos id como gancho para estilos CSS"
end
overview do
message <<-MARKDOWN
## ¿Por qué necesitamos atributos?
Primeramente las etiquetas HTML le dan información al navegador acerca del contenido que tienen. También se puede ampliar para incluir otra información de contenido, como qué tipo de input es la etiqueta, o como el atributo `media`, que vimos en la página anterior, el cuál se puede utilizar para indicar si el contenido será mostrado en pantalla o impreso.
Al crear un formulario, vas a usar atributos que le digan al navegador qué tipo de input es, y los resultados serán fáciles de distinguir. Este input:
MARKDOWN
source_code :html, "<input type='radio' name='rando-radio'>"
message <<-MARKDOWN
Se ve como un radio button: <input type='radio' name='rando-radio'>, pero
MARKDOWN
source_code :html, "<input type='password' name='fake-password' value='ick'>"
message <<-MARKDOWN
Se ve como una contraseña de texto input: <input type='password' name='rando-radio' value='ick'> aunque use la misma **etiqueta**.
## ¿Cómo se conectan CSS y HTML?
¡Etiquetas y atributos, principalmente!
Hasta ahora sólo hemos agregado estilo a etiquetas HTML como `<p>` and `<h1>`. ¿Qué pasa si sólo quisieramos agregar estilo a algunas instancias de etiquetas determinadas? No queremos que _todos_ los párrafos se vean diferentes, así que podemos agregar nuestro estilo directamente a la etiqueta `<p>`.
Es aquí donde los atributos `class=` e `id=` van. Agregando una clase o un ID al atributo HTML te permite añadir estilos CSS únicamente a ese atributo.
MARKDOWN
end
steps do
step do
message "Agreguemos algunas clases e ids a nuestro HTML. Comienza añadiendo uno o dos párrafos de texto en la parte inferior de tu documento HTML. Las últimas líneas deben verse de esta forma:"
source_code :html, <<HTML
<h1>¡Hola <em>Mundo</em>!</h1>
<p>Mi nombre es Rachel.</p>
<p>Me gusta:</p>
<ul>
<li>Lunares</li>
<li>Soccer</li>
<li>Programación</li>
</ul>
<p>Escuché que RailsBridge necesita voluntarios, ¡¿¡puedo ser voluntario!?!</p>
HTML
end
step do "Agrega la clase 'special' a tu primer párrafo. Deberá verse como esto:"
source_code :html, <<HTML
<h1>¡Hola <em>Mundo</em>!</h1>
<p class="special">Mi nombre es Rachel.</p>
<p>Me gusta:</p>
<ul>
<li>Lunares</li>
<li>Soccer</li>
<li>Programación</li>
</ul>
<p>Escuché que RailsBridge necesita voluntarios, ¡¿¡puedo ser voluntario!?!</p>
HTML
message "Actualiza la página en el navegador. Deberás ver los nuevos párrafos que agregaste, pero ningún cambio de estilo"
message "Muchos atributos HTML, como las clases y los ids, no trasmiten información visual directamente. Tu sitio tendrá el mismo aspecto hasta que se utilice la clase para agregar estilo CSS."
end
step do
message "Para agregar una regla de estilo que se aplicará a alguna clase, usa la sintaxis `.class-name` para tu selector. Será casi el mismo estilo que agregaste a `<h1>` y `<p>`, pero con un punto al principio del nombre de tu clase."
message "Intenta agregar un borde verde a la clase 'special'. Agrega esta regla dentro de tu etiqueta `style`:"
source_code :css, <<CSS
.special {
border: 1px solid green;
}
CSS
message "Actualiza tu página en el navegador. Verás algo como esto:"
img src: 'img/css_class.png'
end
step do
message "Vamos a poner tu nombre en una etiqueta `span` y darle un ID de 'user-name'. Deberá verse algo así:"
source_code :html, <<HTML
<h1>¡Hola <em>Mundo</em>!</h1>
<p class="special">Mi nombre es
<span id="user-name">Rachel</span>
</p>
<p>Me gusta:</p>
<ul>
<li>Lunares</li>
<li>Soccer</li>
<li>Programación</li>
</ul>
<p>Escuché que RailsBridge necesita voluntarios, ¡¿¡puedo ser voluntario!?!</p>
HTML
message "Guarda y actualiza la página en tu navegador. De nuevo, no deberás ver ninguna diferencia."
end
step do
message "Ahora, agrega la regla de estilo correspondiente para tu ID, usando la sintaxis `#id-name` para tu selector. Trata de hacer que el id de 'user-name' se vea en negritas. Agrega esta regla dentro de tu etiqueta `style`:"
source_code :css, <<CSS
#user-name {
font-weight: bold;
}
CSS
message <<-MARKDOWN
(Nota: El span es sólo un elemento que te deja aplicar una clase, un id, o algún otro atributo a un string de texto sin añadir saltos de línea. Los navegadores no le darán ningún estilo por defecto.)
Después de agregar la regla de estilo y actualizar la página en el navegador, verás algo bastante feo como esto:
MARKDOWN
img src: 'img/css_id.png'
end
end
explanation do
message <<-MARKDOWN
## ¿Cuándo debemos usar una clase, y cuando usar un ID?
### Clases
Un atributo **clase** debe utilizarse para agrupar elementos que _pueden_ existir más de una vez en una determinada página. Por ejemplo, puedes dar a algunos párrafos la clase `"special"` y usarla para resaltarlos.
Inclusive si solo tienes un párrafo se verá diferente, tal vez quieras agregarlo después.
Un atributo de clase debe verse así en el HTML `class="special"` y `.special` en el CSS. ¡No confundas en dónde va el punto!
### IDs
Un **id** es una etiqueta única. Se usa para identificar algo que es único. Por ejemplo, si ejecutas un sitio web de noticias, sólo tendrás un elemento en la página que servirá como cabecera, y podrás asignarle un id como `id="handsome-header"`
Un atributo id debe verse en el HTML así `id="handsome-header"`, y así `#handsome-header` en el CSS.
Dentro de estos parámetros, cuando uses clases e IDs es cuestión de estilo / gusto.
MARKDOWN
end
next_step "herramientas_de_desarrollo"