Este documento resume conceptos clave de CSS como CSS3, diseño web responsive, SASS, LESS y CSS orientado a objetos. Brevemente describe las características principales de CSS3 como bordes, transformaciones, fondos múltiples y gradientes. También cubre selectores avanzados de CSS3, animaciones, transiciones y media queries. Finalmente, introduce conceptos como diseño web responsive, preprocesadores como SASS y LESS, y el enfoque de CSS orientado a objetos.
3. Para que sirve
PCascading Style Sheets (CSS) ?
+ CSS =
Plantilla HTML HTML
4. Cascading Style Sheets (CSS)
Una regla CSS está formada por una parte llamada "selector" y otra
parte llamada "declaración“
– El selector indica "a quién hay que hacérselo".
– La declaración indica "qué hay que hacer“
*{
margin: 0;
padding: 0;
}
5. Selectores …
• Selectores básicos
*{
margin: 0;
– Selector universal padding: 0; }
h1, h2, h3 {
– Selector de tipo o etiqueta color: #8A8E27;
font-weight: normal;}
– Selector descendiente p span { color: red; }
a span{color:blue}
– Selector de clase .destacado { color: red; }
p.destacado{color:blue}
– Selector de ID #destacado { color: red; }
p#destacado{color:blue}
– Combinación de selectores básicos div.aviso span.especial { ... }
ul#menuPrincipal li.destacado a#inicio { ... }
6. Selectores
• Selectores avanzados
– Selector de hijo <p><span>Texto1</span></p> (CUMPLE)
<p><a href="#"><span>Texto2</span></a></p> (NO CUMPLE)
p > span{ margin: 0; padding: 0; }
– Selector adyacente
<body>
H1 + h2 { color: red;} <h1>Titulo1</h1> (APLICA)
Deben cumplir dos condiciones: <h2>Subtítulo</h2> (APLICA)
elemento1 y elemento2 deben ser hermanos, por lo <h2>Otro subtítulo</h2> (NO APLICA h1 +h2)
que su elemento padre debe ser el mismo. </body>
elemento2 debe aparecer inmediatamente después de
elemento1 en el código HTML de la página.
– Selector de atributos
/ * Se muestran de color azul todos los enlaces que tengan un atributo "class", independientemente de su valor */
a[class] { color: blue; }
/* Se muestran de color azul todos los enlaces que tengan un atributo "class" con el valor "externo" */
a[class="externo"] { color: blue; }
/* Se muestran de color azul todos los enlaces que apunten al sitio "http://www.ejemplo.com" */
a[href="http://www.ejemplo.com"] { color: blue; }
/* Se muestran de color azul todos los enlaces que tengan un atributo "class" en el que al menos uno de sus valores
sea "externo" */
a[class~="externo"] { color: blue; }
8. CSS3
Módulos Niveles W3C
1. Efectos visuales de imágenes:
– Fondos y bordes 1. Working Draft, primera
publicación disponible con las
– Gradientes
especificaciones
2. Transformaciones 2. Last Call, borrador con fechas
3. Fuentes con mejores tipografías limites para comentarios finales
– Fuentes 3. Candidate recommendation, es
estable y puede ser
– Texto
implementado.
4. Selectores mejorados 4. Proposed recommendation, un
5. Transiciones y animaciones, cambios y documento bien revisado, para
movimientos sin usar FLASH o Javascript. su aprobacion final.
5. Recommendation, completo y
6. Media Queries finalizado ~ standard.
7. Múltiple columnas
9. Prefijos
div {
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
Herramientas que pueden ayudar:
• Sass (http://sass-lang.com ),
• LESS (http://lesscss.org ),
• eCSStender (www.alistapart.com/articles/stop-forking-withcss3 )
22. Animaciones y transiciones
/* We are defining the "timeline" of the animation,
* each line representing a keyframe.
*/ •animation-delay
@-moz-keyframes bounce { •animation-direction
/* Translate the element 400px to the right */
/* Here we are animating "-moz-tranform",
•animation-iteration-count
* but most CSS properties can be animated: •animation-name
* width, color, font-size, box-shadow, ... •animation-play-state
*/ •animation-timing-function
from { -moz-transform: translate(0px); }
60% { -moz-transform: translate(400px); }
/* and then bounce twice */
73% { -moz-transform: translate(360px); }
86% { -moz-transform: translate(400px); }
93% { -moz-transform: translate(380px); }
to { -moz-transform: translate(400px); }
}
#anim {
/* use the "bounce" animation */
-moz-animation-name: bounce;
/* animation on this element will last 1 second */
-moz-animation-duration: 1s;
/* the animation will loop indefinitely */ http://animatable.com/demos/madmanimation/
-moz-animation-iteration-count: infinite; http://www.cssplay.co.uk/menu/css3-animation.html#x
http://playground.html5rocks.com/#transitions
/* the animation will play 3s after being applied */
http://animatable.com/demos/madmanimation/
-moz-animation-delay: 3s;
http://hacks.mozilla.org/2011/05/advanced-animations-in-aurora-with-css3-animations/
} http://paulrouget.com/e/css3animations/
http://www.w3.org/TR/css3-animations/
23. Media Query
We can use media queries to determine the following:
– Resolution
– Orientation (portrait or landscape mode)
– Device width and height
– Width and height of the browser window
@media only screen and (max-device-width: 480px) {
body{
width:460px;
}
section#sidebar, section#posts{ @media all and (min-width: 640px) {
float: none; #media-queries-1 { background-color: #0f0;}
width: 100%; }
}
} @media screen and (max-width: 2000px) {
#media-queries-2 { background-color: #0f0; }
}
http://www.w3.org/TR/css3-mediaqueries/
26. Object Oriented CSS
diseño consistente = código limpio = sitio rápido
Iniciado por: Nicole Sullivan C
Basado en 2 principios:
• Separar la estructura de la interface (CSS).
Usar clases lo más posible.
• Separar los contenedores de los
contenidos.
OOCSS ofrece separar las características
más comunes en módulos u objetos que
pueden ser reusados.
….evolución de los CSS
….Usar múltiples clases para simular OO.
http://github.com/stubbornella/oocss/wiki
http://www.slideshare.net/stubbornella/object-oriented-css
http://www.stubbornella.org/content/
27. Object Oriented CSS
1. Crear librerías 6. Minimizar uso de selectores
2. Usar estilos con semántica 7. Separar estructura del skin
consistente 8. Separar contenedores y
3. Diseñar módulos que sean contenidos
transparente (png8) 9. Extender objetos y aplicar
4. Ser flexible múltiples clases a los
5. Utiliza grids (utiliza UML para elementos
describir HTML & CSS) 10. Usa fuentes de YUi
28. Que cosas no se deberían hacer en OOCSS
Redundancia
Nunca ser específico en un elemento:
div.myClass {….}
A menos que se extienda de clases
para trabajar en varios elementos.
29. Diseño web sensible (responsive)
Es diseñar una web considerando el comportamiento del usuario
basado en el tamaño de pantalla, plataforma y la orientación.
Su practica consiste en el uso de mallas flexibles y layouts, imágenes y
un uso inteligente de CSS media query.
30. Tipos de layouts
• Fixed-width: Rigid Pixels
• Liquid or Fluid: Adapts to the
Viewport
– Improving readability
• Elastic: Adapts to the Text Size
– familiar with ems
– Zooming is not the same as resizing
text, which is a separate browser
http://coding.smashingmagazine.com/2011/01/12/guidelines-for-responsive-web-design
32. Sass makes CSS fun again (SCSS)
Es una extensión de CSS3, añade:
• reglas de anidamiento,
• mezcla de variables,
• herencia de selectores
• y más.
Hay dos sintaxis:
• Archivos SCSS que usa la extensión .scss.
• Sintaxis anterior es conocido como Sass (.sass).
http://sass-lang.com
NOTA: Sólo para RUBY
36. Variables
Interpolaciones
Mixins are defined using the “@mixin” directive, which takes a block Mezclas
of styles that can then be included in another selector using the
“@include” directive.
39. The dynamic stylesheet language (LESS)
• LESS extends CSS with dynamic behavior such
as variables, mixins, operations and
functions.
• LESS runs on both the client-side (IE
6+, Webkit, Firefox) and server-side, with
Node.js and Rhino.
http://lesscss.org/
40. CSS3
STYLING
¿Preguntas?
Diego Alejandro Carrera Gallego
dcarrera@dit.upm.es