Layout
Contenedores
Contenedores
<div> & <span>
Div & Span
DIV
SPAN
CodePen.io: Probémoslo en vivo
Cada vez que veas este ícono o un link a codepen.io tenés el código que hacemos en clase para probarlo y modificarlo vos.
Trabajar en clase con el código básico. Agregar y probar variantes del ejemplo, cambiar valores numéricos para ver qué efecto tienen
CodePen.io: Probémoslo en vivo
CodePen es una comunidad en línea para probar y mostrar fragmentos de código HTML, CSS y JavaScript.
Bloque <div> ... </div>
Bloque <span> ... </span>
<p>Ejemplo de span con clase <span class="inline1">inline 1</span></p>�<p>Ejemplo de span con clase <span class="inline2">inline 2</span></p>�<p>Ejemplo de span con clase <span class="inline1">inline 1 y inline 2 <span class="inline2">anidadas</span> </span> </p>
Ejercicio
Agregar a la página que venían haciendo:
Box Model
Box Model - Introducción
El concepto de “Box Model” dice que cada elemento �en una página se representa mediante una caja rectangular (contenedor).
Box Model - ¿Donde están los bloques?
Box Model - Developer Tools (add on)
Marcado de elemento de bloque con la herramienta Web Developer, Add-On de Chrome / Firefox para desarrollo (Outline > Outline Block Elements)
https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm
Modelo
Usemos contenedores
HTML
<div class="encabezado">� encabezado�</div>��<div class="cuerpo">� cuerpo�</div>��<div class="pie">� pie�</div>
CSS
.encabezado {� height: 90px;� text-align: left;� background-color: #CCCCCC;�}��.cuerpo {� background-color: #666666;� color: white;� height: 300px�}��.pie {� background-color: #00CCFF;� height: 50px�}
Box Model
CSS utiliza el modelo de cajas / bloques que consta de 4 partes:
Box Model - CONTENT
ALTO (height) y ANCHO (width) de un elemento.
Box Model - PADDING
Usado para generar espaciado o margen INTERIOR transparente dentro de un elemento.
Box Model - BORDER
Se utiliza para bordear con una línea alrededor del elemento.
Box Model - MARGIN
PUEDE USARSE PARA SEPARAR BLOQUES
Usado para generar margen EXTERIOR transparente fuera de un elemento.
Box Model
Box Model
Y si usamos tamaños de propiedades irregulares?
margin-top
margin-bottom
margin-left
margin-right
padding-top
padding-bottom
padding-left
padding-right
Box Model - Calculando el Tamaño
Para calcular el alto total y ancho total del element hacemos:
Ancho:
width + padding-left + padding-right + border-left + border-right + margin-left + margin-right
600px + 20px + 20px + 4px + 4px + 50px + 50px = 748
Height:
height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom
250px + 20px + 20px + 4px + 4px + 50px + 50px = 398
Live: http://codepen.io/ignaciojonas/pen/bpLwQJ
div {
width: 600px;
height: 250px;
background-color: lightblue;
padding: 20px;
border: 4px;
border-style: solid;
border-color: pink;
margin: 50px;
}
Live: http://codepen.io/webUnicen/pen/yMRawg
Box Model - Border
También se pueden definir bordes irregulares
Tipos de bordes
inset
dashed
double
groove
hidden
dotted
none
outset
ridge
solid
inherit
https://developer.mozilla.org/en-US/docs/Web/CSS/border-style#Values
Height & Width: Datos extras
Unidades de Medida
Unidades de medida
CSS divide las unidades de medida en dos grupos
ABSOLUTAS: pixeles (px) (pt - mm - cm)
Están completamente definidas, ya que su valor no depende de otro valor de referencia.
RELATIVAS: porcentaje (%) (em - rem - vw - vh)
No están completamente definidas, ya que su valor siempre es dependiente respecto a otro valor de referencia padre.
Pixeles [px] vs Porcentuales [%]
Medida “Auto”
La opción auto significa “expandir” o ajustar automáticamente un tamaño.
Para centrar un bloque:
.bloque {
width: 100px;
margin: 0 auto;
}
Para hacerlo ocupar el máximo espacio
.bloque {
width: auto;
}
Medida “Auto”
HTML
<div class="bloque1">� <h1>Bloque 1 </h1>�</div>�<div class="bloque2">� <h1>Bloque 2</h1>�</div>�<div class="bloque3">� <h1>Bloque 3</h1>� <div class="bloque1">� <h1>Bloque 1 </h1>� </div>� <div class="bloque2">� <h1>Bloque 2</h1>� </div>�</div>
CSS
div.bloque1 {
width: 200px;
margin: 0 auto;
border: 3px solid;
}
div.bloque2 {
width: auto;
border: 3px solid red;
}
div.bloque3 {
width: 700px;
border: 3px solid red;
margin: 0 auto;
}
Posicionando elementos con opción “auto”
Tipos de cajas
Pregunta
¿Pero cómo hacemos si queremos posicionar elementos de una manera más avanzada?
Layout - Un bosquejo
¿Cómo queremos que se vea?
EXPECTATIVA
REALIDAD
Posicionamiento - Bloques flujo normal sin posicionamiento
¿Qué pasó?
Tipos de Cajas (Type of Boxes)
CSS puede definir la manera en la que los elementos de una página “encajan” uno con otros.
�Estas maneras se pueden categorizar en:
Se controlan con la propiedad display.
elemento {
display: block | inline ;
}
Tipos de Cajas - Block vs Inline
element-1 {display: block}
element-2 {display: block}
element-3 {display: block}
element-4 {display: block}
<h1>...<h5>, <p>, <div> ....
element-1 { display: inline}
<a>, <span>, <strong>, <img> ...
element-2 { display: inline}
element-3 { display: inline}
Tipos de Cajas - Block vs Inline
Las cajas block por defecto se apilan una encima de otra.
Las cajas inline no mueven los elementos alrededor de ellas.
Este es un simple párrafo de ejemplo.
Este es otro simple párrafo de ejemplo.
BLOCK BOX
INLINE BOX
Otras Propiedades de Posicionamiento
display: inline-block; es una combinación de los dos tipos anteriores.
https://codepen.io/webUnicen/pen/RMJZGz
display: none;
oculta el elemento de la página.
Se usa comúnmente con JavaScript para ocultar y mostrar elementos sin eliminarlos ni volver a crearlos.
Botonera
Hagamos una botonera para nuestro sitio
Podemos usar una lista:
<ul class=”navigation”>
<li>Home</li>
<li>Productos</li>
<li>Nosotros</li>
<li>Contacto</li>
</ul>
¿Cómo hacemos para que se vea como una botonera?
Flotar
Flotar Elementos
La propiedad CSS float permite a los elementos colocarse del lado izquierdo o derecho de su contenedor, permitiendo que el texto y los elementos en línea se envuelvan alrededor de él.
Ref: https://developer.mozilla.org/en/docs/Web/CSS/float
Layouts usando float
Creemos el layout de ejemplo flotando los elementos
.izquierda {� float: left;� width: 400px;� background-color: #333333;� color: white;�}
.derecha {� float: left;� width: 300px;� background-color: #666666;� color: white;�}
Flotar Elementos - Cosas Importantes
Limpiando elementos flotados
volver al flujo normal de la página siempre
usar la propiedad “clear”.
Ref: https://developer.mozilla.org/en/docs/Web/CSS/clear
Flotar Elementos
Flotar Elementos
Ejemplo con muchos “centro”:
Probar achicar la ventana y ver como se bajan las cosas
Position
Posicionamiento
static | absolute | relative | fixed | sticky
La propiedad position sirve para posicionar un elemento dentro de la página.
Posicionando Elementos
La propiedad “position” que posee diferentes valores.
Posicionando Elementos - Relative + Absolute
El posicionamiento de <ul> es respecto de su padre <div>
Posicionando Elementos - Absolute
Comentamos “position: relative” del div.
No tiene efecto top: 50px.
El posicionamiento de <ul> ahora es desde el root element, no de <div>
Posicionando Elementos
absolute , ahora <ul> no está dentro de <div> ( ya no son anidados)
Live: http://codepen.io/webUnicen/pen/EWJMqL
<div> es relative, tiene efecto top: 50px.
<ul> también es respecto del root element (<body>)
Hacer un layout completo
Sugerencia
Hacer un diagrama del layout en papel, lo más completo posible y con sus medidas. (wireframe)
Un vez que se tiene una idea clara del diseño que se desea lograr, comenzar a escribir código para ajustarlo al diseño.
Ejercicio
Realizar una página que contenga:
del navegador.
Ejercicio
Modificar el ejemplo para que la página quede con un modelo como el siguiente
Experimenten distintos valores de las propiedades de las cajas, de las propiedades float y clear. Es importante que comprendan cómo funcionan.
Referencias
HTML & CSS - Design and Build Websites.
JON DUCKETT
https://drive.google.com/open?id=0B4N5SXjhTVLtMnItSkpNTXktaEE
CSS - the missing manual.
DAVID SAWYER MCFARLAND
https://drive.google.com/open?id=0B4N5SXjhTVLtaWJDWDlaR3BJTkk
AHORA LES TOCA PRACTICAR :D
Extras
Exceso de Contenido
overflow: controla lo que sucede cuando el contenido excede a las dimensiones del bloque.
Las opciones son: auto, hidden, scroll, visible, inherit
Live: http://codepen.io/webUnicen/pen/GWLebK
Ejercicio
Encimando elementos
z-index : Cuando se superponen dos o más elementos se puede decidir cual queda por encima o por debajo.
Sirve para establecer el orden de los fondos con fotos, transparencias, texto, etc. Se pueden entender como capas
Encimando elementos
Las opciones son auto, number, inherit
Ejemplo:
en este caso box3 tiene prioridad al frente, luego box2 y por último box1 al fondo.
http://codepen.io/webUnicen/pen/ZeZdBO
.box1 {
z-index: -1;
}
.box2 {
z-index: 1;
}
.box3 {
z-index: 2;
}
Herramientas
Box Model - Herramientas Chrome
Marcado con la herramienta de desarrollo de Chrome. Menú > Más Herramientas >Herramientas de desarrollador
( Ctrl + Mayusc. + I )
Box Model - Herramientas, Firebug