Materia: Diseño Web 2
Universidad ORT
Docente: Miguel Vallvé
https://slides.com/miguelvallve/dweb2/live#/
Desarrollo
Dirección
Docencia
...
...
Fing
Teacher
Recreación
Diseño (ORT)
Repaso
Selectores de atributos, siblings, even/odd, nth-child, pseudo elementos y clases
Layouts
Opciones de layout
Float+overflow+clear / display: table,flex,grid
Posicionamiento
Opciones de posicionamiento
Posicionamiento relativo, absoluto y fijo, como y cuando se utiliza
CSS3
Bordes, sombreados, opacidad, columnas
Transformaciones, transiciones, animaciones.
Diseño Responsivo
Estándares
@media screen, @import, @media print, viewport
Clase
Aulas
Slack
Bedelías
Dictado de clases teórico-prácticas. Canal principal de consultas.
Instancia formal de comunicación.
Canales de participación offline, consultas y comunidad. Unirse
No le veo el sentido teniendo los primeros 3 pero... miguel.vallve@gmail.com
Otras Formalidades.
Atender,
Preguntar,
Sugerir,
Criticar,
Apoyarse,
Google.
Copy/Paste,
Ansiedad,
Faltar a clases,
Redes sociales,
Celular,
Frustración.
HTML
<!-- Etiquetas con funciones semánticas -->
<etiqueta>contenido</etiqueta>
<!-- Atributos que cambian etiquetas -->
<a atributo="valor" >link</a>
<body id="melisandre">
<header>
<pelo class="pelirojo">||||||||||||</pelo>
<oreja class="izq">(</ojo>
<ojo class="izq">(*)</ojo>
<ojo class="der">(*)</ojo>
<oreja class="der">)</ojo>
...
</header>
<main><!-- Contenido principal --></main>
<footer>...</footer>
</body>
.selector{
propiedad: valor;
otra-propiedad: valor;
}
pelo{
height:30cm;
width: 1mm;
}
pelo.pelirrojo {
color:red;
}
#melisandre ojo {
color:blue;
}
#melisandre dientes:hover {
visibility:hidden;
}
.izq { float: left; }
.der { float: right; }
HTML5 Semántica
repaso / ejemplos
section − una sección genérica de la página.
main − especifica el contenido principal de la página
article − Un módulo de contenido independiente.
aside − Contenido secundario relacionado al contenido central de la página
header − Cabezal del sitio.
footer − Pie del sitio.
nav − Sección destinada a poner links para navegar el sitio.
figure − Envuelve contenido multimedia como ser una foto, video, ilustración.
Ejemplos: Webflow
figcaption − Pie de foto / contenido multimedia
time - Para definir una hora
details - define contenido a expandir (attr open) ejemplo
summary - texto visible de la etiqueta details
hgroup - Envuelve un grupo de títulos. Usualmente título y subtítulo.
blockquote - Especifica una cita (attr cita)
progress - genera una línea de progreso (pasos/download)
mark - "highlight" un texto dado
más - HTML5 Cheat Sheet
HTML5 Semántica
repaso / ejemplos
ilustraciones Internetishard.com
HTML5 Semántica
repaso / ejemplos
ilustraciones Internetishard.com
HTML5 Semántica
repaso / ejemplos
ilustraciones Internetishard.com
HTML5 Semántica
repaso / ejemplos
ilustraciones Internetishard.com
HTML5 Semántica
repaso / ejemplos
ilustraciones Internetishard.com
HTML5 Semántica
repaso / ejemplos
ilustraciones Internetishard.com
CSS
Etiquetas HTML: a, strong, p { font-size: 1em; }
Clases: .rojo { color:red; }
Identificadores: #contenedor { width:100%; }
Atributos: a[target="_blank"] { text-decoration: none; }
De interacción: a:hover {color:green;}
Estructurales: p:first-child { margin-bottom: 20px; }
Referenciales: #contendor p + img.foto { margin-left:0; }
Absolutas
px | pixels (1px = 1/96th of 1in) |
pt | points (1pt = 1/72 of 1in) |
pc | picas (1pc = 12 pt) |
Relativas
em | Relativo al font-size del elemento |
rem | Relativo al font-size del elemento "raíz" |
vw | Relativo al ancho del viewport |
vh | Relativo al alto del viewport |
Layout
Bordes
Mágenes
Relleno
Alto / Ancho
Profundidad
Display
Posición
Flotación
Lecturas: w3 css intro + w3 css reference + moz html + moz css + flexbox
Herramientas: css3 maker + color adobe + colorcodes + spritecow
Ejercicios: sencillos y guiados + Quiz CSS
Texto
Fuente
Tamaño
Decorado
Listas
Alineación
Columnas
Interlineado
Kerning
Decoración
Color
Fondo
Sombra
Opacidad
Filtros
Transformación
Animación
Blend modes
Layouts
La propiedad display especifica el tipo de caja de un elemento. Entre los diferentes valores posibles, el valor none permite ocultar elementos y todos sus descendientes.
Si bien existen muchos tipos de display, nos vamos a concentrar en 3: inline, block, inline-block.
.duende{
height: 20%;
color: green;
display: none;
}
#lego {
display: block;
}
#bermuda-triangle {
display: none;
}
Layouts: sencillos | learn layouts | inline-block spacing | code academy
Imágenes y Tipografía
Imágenes digitales
repaso / ejemplos
Formato: SVG
Animación: Javascript
Dimensiones: n/a
Peso: 13kb
Transparencia: Si
Profundidad de bit: n/a
Formato: GIF
Animación: Cuadro por cuadro
Dimensiones: 162x125
Peso: 23kb
Transparencia: No
Profundidad de bit: 8
Formato: PNG-8
Animación: No
Dimensiones: 250x214
Peso: 7kb
Transparencia: Si
Profundidad de bit: 8
Ver: formatos + imágenes adobe + retina +Profundidad de bi + optimizadores
Ver: safe fonts + google fonts + icomoon
Ver: moz + css-tricks
/* Lo más básico */
@font-face {
font-family: unaFuentePunchi;
src: url(punchi_bold.woff);
font-weight: bold;
}
/* Un poco más avanzado */
@font-face {
font-family: MyHelvetica;
src: local("Helvetica Neue Bold"),
local("HelveticaNeue-Bold"),
url(typos/MgOpenModernaBold.ttf);
font-weight: bold;
}
/* Compatibilidad Aceptable */
@font-face {
font-family: 'MyWebFont';
src: url('myfont.woff2') format('woff2'), /* Navegadores nuevos */
url('myfont.woff') format('woff'); /* Navegadores Avanzados */
}
/* SIEMPRE USAMOS FALLBACK */
h1 {font-family: "Sarasa-serif", Helvetica, Arial, sans-serif;}
/* Todas las reglas */
@font-face {
[ font-family: <family-name>; ]
[ src: <src>; ]
[ unicode-range: <unicode-range>; ]
[ font-variant: <font-variant>; ]
[ font-feature-settings: <font-feature-settings>; ]
[ font-variation-settings: <font-variation-settings>; ]
[ font-stretch: <font-stretch>; ]
[ font-weight: <font-weight>; ]
[ font-style: <font-style>; ]
}
/* Compatibilidad completa */
@font-face {
font-family: 'MyWebFont';
src: url('webfont.eot'); /* IE9 Compat Modes */
src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('webfont.woff2') format('woff2'), /* Super Modern Browsers */
url('webfont.woff') format('woff'), /* Pretty Modern Browsers */
url('webfont.ttf') format('truetype'), /* Safari, Android, iOS */
url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
}
Objetivo
Desarrollar un sitio web de noticias sobre las Olimpíadas basado en los wireframes entregados
Tener en cuenta los siguientes puntos
El criterio de evaluación incluye los siguientes ítems
chiches nuevos
Lecturas: w3 - background + moz dev
Ejemplo: clip, size, pos
Profundización: pen
.degrade-linear{
background: linear-gradient(
black 0 40px,
red 50px 80px,
yellow 120px
);
/* {color} {inicio} {fin} , {color} {inicio} {fin} , {color} {inicio} {fin} */
}
.degrade-radial{
background: radial-gradient(
ellipse at 15% 175%,
red 60%,
white 60%
);
/* {forma y posicion}, {color} {inicio} {final}, {color} {inicio} {final} */
}
.degrade-conico{
background-image: conic-gradient(
from 190deg at 50% 80%,
red 90deg,
orange 135deg 180deg,
rgba(255,0,0,0.5) 210deg,
red);
/* {grados y posición de centro}, {color} {hasta-grados}, {color} {hasta-grados}, ... */
}
Profundización: background / mix / modes
#el{
background-blend-mode: darken;
/* como se comporta el fondo */
mix-blend-mode: screen;
/* como se comporta el contenido */
}
mix-blend-mode: normal;
mix-blend-mode: multiply;
mix-blend-mode: screen;
mix-blend-mode: overlay;
mix-blend-mode: darken;
mix-blend-mode: lighten;
mix-blend-mode: color-dodge;
mix-blend-mode: color-burn;
mix-blend-mode: hard-light;
mix-blend-mode: soft-light;
mix-blend-mode: difference;
mix-blend-mode: exclusion;
mix-blend-mode: hue;
mix-blend-mode: saturation;
mix-blend-mode: color;
mix-blend-mode: luminosity;
Antes de comenzar a trabajar en un sitio web complejo, se realizan las llamadas Guías UX/UI o guías de componentes y comportamientos web.
Además sirven para orientar a todo el equipo y así evitar "Frankenstein" updates.
Ejemplos: mailchimp, ibm, audi, bristol city, greenpeace, google material design, github, healthcare.gov, firefox
Desarrollar una página web que sirva como guía de desarrollo para el nuevo sitio de la ORT. El diseño se basará en la muestra, material y video entregado.
Tener en cuenta los siguientes puntos
Entregar en Bedelía:
Respaldar la entrega:
Criterio de evaluación
Responsive parte 1
Colores y tendencias
Aburrir
Solo diseñar balance visual
Diseño a medida bloque a bloque
Prototipar
Leer, analizar y entender lo que hay que jerarquizar
Sorprender sin asustar
Entender el tono, el lenguaje
Algunos conceptos
Todo esto compone
responsive design
Armemos un buen original
Media Queries Básicos
html{
font-size: 16px;
}
/* Agrando el root size para los
* dispositivos con al menos
* 575px de ancho */
@media (min-width:575px){
html{
font-size: 18px;
}
}
Enfoque
El css sigue siendo css y el enfoque de trabajo es fundamental en la planificación del archivo.
html{
font-size: 18px;
}
/* Achico el root size para los
* dispositivos que tengan como
* máximo 575px de ancho */
@media (max-width:574px){
html{
font-size: 16px;
}
}
mobile first
desktop first
srcset vs source
srcset vs source
srcset es para mostrar la img más óptima en el dispositivo
picture>source es para control granular de lo que estoy mostrando. ver
Network: source siempre cambia, srcset solo cuando lo necesita.
Cambio estético vs cambio funcional
source
srcset
<img src="elva-fairy-800w.jpg">
<img srcset="elva-fairy-320w.jpg 320w, elva-fairy-480w.jpg 480w, elva-fairy-800w.jpg 800w"
sizes="(max-width: 320px) 280px, (max-width: 480px) 440px, 800px"
src="elva-fairy-800w.jpg">
srcset = "archivo ancho, archivo2 ancho2" / "archivo ratio, archivo2 ratio2"
sizes = "(media query) ancho-estimado, (media query) ancho-estimado, ancho-por-defecto
En un dispositivo de 375px de ancho
En un dispositivo de 320px de ancho
La jerarquía en este caso sigue la lógica de fallback y no de cascada
<picture>
<source media="(max-width: 799px)" srcset="elva-480w-close-portrait.jpg">
<source media="(min-width: 800px)" srcset="elva-800w.jpg">
<img src="elva-800w.jpg" alt="Chris standing up holding his daughter Elva">
</picture>
<source media= "(media query)" srcset= "archivo" />
<source media= "(media query)" srcset= "archivo" />
<img src= "archivo-por-defecto" alt="texto-alternativo" />
En un dispositivo de 375px de ancho
En un dispositivo de 800px de ancho
La jerarquía en este caso sigue la lógica de fallback y no de cascada
<audio> y <video>
<audio class="audio" preload="auto" controls>
<source src="http://theemon.com/t/transport-wp/PlaceHolder/wp-content/uploads/2015/09/BlueDucks_FourFlossFiveSix.mp3">
<source src="http://theemon.com/t/transport-wp/PlaceHolder/wp-content/uploads/2015/09/BlueDucks_FourFlossFiveSix.ogg">
<source src="http://theemon.com/t/transport-wp/PlaceHolder/wp-content/uploads/2015/09/BlueDucks_FourFlossFiveSix.wav">
</audio>
autoplay: true | false
controls: true | false
loop: true | false
muted: true | false
preload: auto | metadata | none
src: source
<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
El navegador no es compatible con audio html5
</audio>
Lo usamos con source al igual que picture. La diferencia es que usamos el atributo src en lugar de srcset
Browser | Ogg | MP3 | AAC | Wav |
---|---|---|---|---|
Internet Explorer 9 | No | Yes | Yes | No |
Firefox 5 | Yes | No | No | Yes |
Chrome 12 | Yes | Yes | Yes | Yes |
Safari 5 | No | Yes | Yes | Yes |
Opera 11.5 | Yes | No | No | Yes |
autoplay: true | false
controls: true | false
loop: true | false
muted: true | false
preload: auto | metadata | none
src: source
height: alto en px
width: ancho en px
poster: carátula (img)
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
El navegador no es compatible con video html5
</video>
Lo usamos con source al igual que picture. La diferencia es que usamos el atributo src en lugar de srcset
Browser | MP4 | WebM | Ogg |
---|---|---|---|
Internet Explorer | YES | NO | NO |
Chrome | YES | YES | YES |
Firefox | YES | YES | YES |
Safari | YES | NO | NO |
Opera | YES (from Opera 25) | YES | YES |
<video width="320" height="240" controls>
<source src="forrest_gump.mp4" type="video/mp4">
<source src="forrest_gump.ogg" type="video/ogg">
<track src="subtitles_en.vtt" kind="subtitles" srclang="en" label="English">
<track src="subtitles_no.vtt" kind="subtitles" srclang="no" label="Norwegian">
</video>
default: true | false
kind: captions | chapters | descriptions | metadata | subtitles
label: titulo del track
srclang: idioma del track
#my-video-stream::cue {
background-color: transparent;
color: #FFF;
font-size: 32px;
font-family: "Lobster", cursive;
}
Letra y requerimientos formales
Desarrollar un sitio web cuya temática será elegida por el alumno y validada en clase por el docente. Dicha web debe cumplir con los requerimientos detallados.
container
display: flexbox | inline-flex;
flex-direction: row | row-reverse | column | column-reverse;
flex-wrap: nowrap | wrap | wrap-reverse;
flex-flow: <‘flex-direction’> || <‘flex-wrap’>
justify-content: flex-start | flex-end | center | space-between | space-around;
align-items: flex-start | flex-end | center | baseline | stretch;
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
Contenedor
order: <integer>;
flex-grow: <number>; /* default 0 */
flex-shrink: <number>; /* default 1 */
flex-basis: <length> | auto; /* default auto */
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
align-self: auto | flex-start | flex-end | center | baseline | stretch;
Items
item > grow / shrink / basis
display: flexbox | inline-flex;
flex-direction: row | row-reverse | column | column-reverse;
flex-wrap: nowrap | wrap | wrap-reverse;
flex-flow: <‘flex-direction’> || <‘flex-wrap’>
justify-content: flex-start | flex-end | center | space-between | space-around;
align-items: flex-start | flex-end | center | baseline | stretch;
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
Contenedor
order: <integer>;
flex-grow: <number>; /* default 0 */
flex-shrink: <number>; /* default 1 */
flex-basis: <length> | auto; /* default auto */
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
align-self: auto | flex-start | flex-end | center | baseline | stretch;
Items
2x1
6x1
9x2
2x2
2x2
3x2
5x2