EL GRAN LIBRO DE HTML5 CSS3 Y JAVASCRIPT

EL GRAN LIBRO DE HTML5 CSS3 Y JAVASCRIPT

JUAN DIEGO GAUCHAT

29,90 €
IVA incluido
En stock
Editorial:
Marcombo, S.A.
Año de edición:
2013
Materia
Informática: cuestiones generales
ISBN:
978-84-267-1995-9
Páginas:
504
Encuadernación:
Rústica
29,90 €
IVA incluido
En stock
Añadir a favoritos

Índice Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1. Documentos HTML5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.1 Componentes básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2 Una breve introducción a HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2.1 Etiquetas y elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.2.2 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.2.3 Elementos anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.3 Estructura global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.3.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.3.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.4 La estructura del cuerpo del documento . . . . . . . . . . . . . . . . . . . . . 34
1.4.1 Organización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.4.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.5 En el interior del cuerpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.5.3 y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1.5.4 y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.6 Elementos nuevos y elementos antiguos . . . . . . . . . . . . . . . . . . . . . 51
1.6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.6.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.6.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.6.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.6.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.7 Nuevos atributos y viejos atributos. . . . . . . . . . . . . . . . . . . . . . . . . 54
1.7.1 El atributo data-* 54
1.7.2 reversed 54
1.7.3 ping y download 54
1.7.4 translate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.7.5 contenteditable 56
1.7.6 spellcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2. Estilos CSS y modelos de caja . . . . . . . . . . . . . . . . . . . . . . . . 57
2.1 CSS y HTML 57
2.2 Breve introducción a CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2.1 Reglas CSS 58
2.2.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.2.3 Estilos en línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.2.4 Estilos incrustados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.2.5 Archivos externos 61
2.2.6 Referencias 62
2.2.7 Selectores nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.3 Aplicar CSS a nuestro documento . . . . . . . . . . . . . . . . . . . . . . 69
2.3.1 Modelos de caja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.4 Modelo de caja tradicional . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.4.1 Documento HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.4.2 Selector universal (*) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.4.3 Títulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.4.4 Declaración de nuevos elementos HTML5 . . . . . . . . . .. . . . . . . . . . . . 74
2.4.5 Centrar el cuerpo 75
2.4.6 Creación de la caja principal 75
2.4.7 La cabecera 76
2.4.8 Barra de navegación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2.4.9 Área principal y Barra lateral 78
2.4.10 Pie de página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.4.11 Toques finales 81
2.4.12 box-sizing 82
2.5 Modelo de caja flexible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.5.1 Contenedor flexible 84
2.5.2 Documento HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.5.3 Display 85
2.5.4 Ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2.5.5 Propiedad Flex 86
2.5.6 flex-direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
2.5.7 order 92
2.5.8 justify-content 92
2.5.9 align-items 95
2.5.10 align-self 97
2.5.11 flex-wrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.5.12 align-content 99
3. Propiedades CSS3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.1 Las nuevas reglas 102
3.1.1 CSS3 ha enloquecido 102
3.1.2 Documento HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.1.3 border-radius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.1.4 box-shadow 106
3.1.5 text-shadow 108
3.1.6 @font-face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.1.7 linear-gradient 110
3.1.8 radial-gradient 112
3.1.9 rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.1.10 hsla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
3.1.11 outline 114
3.1.12 border-image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.1.13 background 116
3.1.14 Columnas 118
3.2 Transformar 120
3.2.1 transform: scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.2.2 transform: rotate 121
3.2.3 transform: skew 122
3.2.4 transform: translate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3.2.5 Transformar todo en un elemento 123
3.2.6 Transformaciones dinámicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.2.7 Transformaciones 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.3 Transiciones 127 3.4 Animaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
4 Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.1 Breve introducción a Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.1.1 El lenguaje 132
4.1.2 Variables 133
4.1.3 Condicionales y bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.1.4 Objetos 144
4.1.5 Constructores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
4.1.6 El objeto Window 154
4.1.7 El objeto Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.2 Una introducción a los eventos 156 4.2.1 Atributos de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4.2.2 Propiedades del evento 157
4.2.3 El método addEventListener() 157
4.3 Incorporar Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
4.3.1 En línea 158 4.3.2 Incrustado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
4.3.3 Desde un archivo externo 160
4.4 Nuevos selectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
4.4.1 querySelector() 161
4.4.2 querySelectorAll() 162
4.4.3 matchesSelector() 164
4.5 Interactuar con el documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.5.1 Estilos Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.5.2 ClassList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
4.5.3 Acceder a los atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
4.5.4 dataset 169 4.5.5 Crear y borrar elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
4.5.6 innerHTML, outerHtml e insertAdjacentHTML 170 4.6 Las API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
4.6.1 API nativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
4.6.2 API externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
4.7 Errores y depuración 174 4.7.1 Consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
4.7.2 console.log() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
4.7.3 Evento error 176
5 Formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.1 Formularios HTML 177
5.1.1 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.1.2. El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
5.1.3 Más elementos de formulario 180
5.1.4 Enviar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.2 Nuevos tipos de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.2.1 Tipo email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.2.2 Tipo search 182
5.2.3 Tipo url 182
5.2.4 Tipo tel 183
5.2.5 Tipo number 183
5.2.6 Tipo range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.2.7 Tipo date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.2.8 Tipo week . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
5.2.9 Tipo month 184
5.2.10 Tipo time 184
5.2.11 Tipo datetime 184
5.2.12 Tipo datetime-local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.2.13 Tipo color 185
5.3 Nuevos atributos 185
5.3.1 Atributo autocomplete 185
5.3.2 Atributos novalidate y formnovalidate 185
5.3.3 Atributo placeholder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3.4 Atributo required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3.5 Atributo multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.3.6 Atributo autofocus 187
5.3.7 Atributo pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.3.8 Atributo form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.4 Nuevos elementos de los formularios 188
5.4.1 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
5.4.2 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
5.4.3 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5.4.4 El elemento 189
5.5 Nueva pseudo-clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5.5.1 valid e invalid 189
5.5.2 optional y required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.5.3 in-range y out-of-range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.6 Formularios API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.6.1 SetCustomValidity() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.6.2 El evento invalid y el método CheckValidity() 194
5.6.3 Validación en tiempo real con ValidityState . . . . . . . . . . . . . . . . . . . . 196
5.6.4 Restricciones de validez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
6 Vídeo y audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.1 Vídeo con HTML5 199 6.1.1 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 6.1.2 Atributos del elemento 201 6.1.3 Formatos de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 6.2 Audio con HTML5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 6.2.1 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 6.3 Subtítulos 204 6.3.1 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 6.4 Programar un reproductor multimedia 208 6.4.1 Diseño de un reproductor de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 6.4.2 Aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 6.4.3 Eventos 211
6.4.4 Código Javascript 212
6.4.5 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
6.4.6 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
6.4.7 Código en funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
7 API TextTrack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 7.1 API TextTrack 218 7.1.1 Lectura de pistas o tracks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 7.1.2 Lectura de entradas o cues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 7.1.3 Adición de pistas nuevas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 8 API Fullscreen 224 8.1 Basta de ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 8.1.1 Ir a pantalla completa 224 8.1.2 Estilos "Fullscreen" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9. API Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.1 Capturar contenidos 228 9.1.1 Acceder a la cámara web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.1.2 Objetos MediaStreamTrack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 9.1.3 Método stop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 10 API Canvas 233 10.1 Los gráficos para la Web 233 10.1.1 El elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 10.1.2 GetContext() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 10.2 Dibujar en el lienzo 234 10.2.1 Dibujar rectángulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 10.2.2 Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 10.2.3 Degradados 236 10.2.4 Crear trazados 238 10.2.5 Estilos de línea 244 10.2.6 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 10.2.7 Sombras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 10.2.8 Transformaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 10.2.9 Restaurar el estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 10.2.10 globalCompositeOperation . . . . . . . . . . . . . . . . . . . . . . . . . . 252 10.3 Procesamiento de Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 10.3.1 drawImage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.3.2 Datos de imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 10.3.3 cross-Origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 10.3.4 Extracción de los datos 259 10.3.5 Patrones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.4 Animaciones sobre lienzo 261 10.4.1 Animaciones elementales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 10.4.2 Animaciones profesionales 262 10.5 Procesar vídeo en el lienzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.5.1 Mostrar vídeo en el lienzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.5.2 Aplicación de la vida real 268 11. WebGL y Three.js 270 11.1 Lienzo en 3D 270 11.2 Three.js 270 11.2.1 Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 11.2.2 scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 11.2.3 Cámara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

Vivimos una revolución. Internet ha dejado de ser sólo un instrumento de comunicación para convertirse en parte de, prácticamente, todos los aspectos de la vida humana. En este contexto, el lenguaje HTML5 ha adquirido una importancia única. Las aplicaciones de Internet a las que accedemos ahora incontables veces en un día, ya sea desde un ordenador de mesa, un teléfono móvil, una PDA o cualquier otro dispositivo, son posibles gracias a HTML5. Con este manual aprenderá, a través de ejercicios prácticos soportados por sólidos conocimientos teóricos, a crear toda clase de sitios webs y aplicaciones estructuradas en HTML5, con estilos CS3 y programadas con las más importantes y recientes herramientas de Javascript. Estudiará desde los conceptos más básicos y tradicionales de cada uno de los lenguajes hasta los más utilizados por verdaderos profesionales de la programación. En cada capítulo irá desarrollando diversos códigos que irán ganando complejidad a medida que se avanza en la lección y harán mucho más accesibles los conceptos previamente estudiados. Mediante el uso de los componentes de los tres lenguajes, las nuevas API que ofrece Javascript y librerías externas, aprenderá a escribir sus propios códigos para crear, programar y optimizar formularios, personalizar la forma en la que se reproduce un archivo de vídeo o de audio, insertar una o más pistas de subtítulos en un vídeo, controlar la entrada y salida de cualquier elemento en el modo de pantalla completa, capturar vídeo en streamig, crear gráficos y animaciones de dos y tres dimensiones, programar un vídeo juego, controlar la apariencia y la forma en la que se comporta el ratón en determinadas circunstancias, utilizar la geolocalización, manipular la historia de navegación del usuario, optimizar el funcionamiento fuera de línea de su sitio, crear aplicaciones de mensajería digital y otras formas de comunicación bidireccional, entre muchos otros conocimientos.