Diferencia entre revisiones de «Usuario:Juanda/html5/Introducción»
De WikiEducator
(→Modernizr.load()) |
|||
(6 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 6: | Línea 6: | ||
=H5BP= | =H5BP= | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
====Introducción==== | ====Introducción==== | ||
Línea 12: | Línea 13: | ||
*Quizá haya conceptos que queden todavía un poco "desconocidos". Tocaremos muchos temas durante el curso. | *Quizá haya conceptos que queden todavía un poco "desconocidos". Tocaremos muchos temas durante el curso. | ||
*Echa otro ojo a este documento otra vez cuando acabes el curso :-) | *Echa otro ojo a este documento otra vez cuando acabes el curso :-) | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
====Pasos para crear un sitio web==== | ====Pasos para crear un sitio web==== | ||
*Establecer la estructura básica del sitio web. | *Establecer la estructura básica del sitio web. | ||
Línea 19: | Línea 23: | ||
*Desplegar el sitio web | *Desplegar el sitio web | ||
</div> | </div> | ||
− | |||
<div class="slide"> | <div class="slide"> | ||
− | |||
==== Estructura básica ==== | ==== Estructura básica ==== | ||
Esta es la estructura básica sugerida por HTML5 Boilerplate: | Esta es la estructura básica sugerida por HTML5 Boilerplate: | ||
Línea 45: | Línea 47: | ||
├── crossdomain.xml | ├── crossdomain.xml | ||
├── favicon.ico | ├── favicon.ico | ||
− | |||
</pre> | </pre> | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
*Página index.html | *Página index.html | ||
Línea 95: | Línea 97: | ||
</source> | </source> | ||
</div> | </div> | ||
− | |||
+ | |||
+ | <div class="slide"> | ||
====Hacks en CSS==== | ====Hacks en CSS==== | ||
*Comentarios condicionales | *Comentarios condicionales | ||
Línea 112: | Línea 115: | ||
</source> | </source> | ||
</div> | </div> | ||
− | |||
+ | <div class="slide"> | ||
====viewport==== | ====viewport==== | ||
*Por defecto los navegadores móviles muestran con un ancho determinado la página (en el caso del iPhone, 980px, por ejemplo). | *Por defecto los navegadores móviles muestran con un ancho determinado la página (en el caso del iPhone, 980px, por ejemplo). | ||
Línea 122: | Línea 125: | ||
</source> | </source> | ||
Establecemos el viewport de nuestra web igual al viewport que tiene por defecto el dispositivo. | Establecemos el viewport de nuestra web igual al viewport que tiene por defecto el dispositivo. | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
*Para páginas con contenido de un ancho fijo (no fluido), es posible usar un valor estático en píxels. | *Para páginas con contenido de un ancho fijo (no fluido), es posible usar un valor estático en píxels. | ||
*En este ejemplo veremos la web "a pantalla completa" pero con una configuración de zoom que provoca que no se vea bien: | *En este ejemplo veremos la web "a pantalla completa" pero con una configuración de zoom que provoca que no se vea bien: | ||
Línea 131: | Línea 137: | ||
} | } | ||
</source> | </source> | ||
+ | *Esto no encajaría en todos los user agent!! | ||
+ | *con un mínimo zoom de 0.25 para un display de 240px de anchura, nos quedarían 20px sin poder ver. | ||
</div> | </div> | ||
− | |||
− | |||
− | |||
− | |||
<div class="slide"> | <div class="slide"> | ||
− | |||
====Librería normalice==== | ====Librería normalice==== | ||
*Librería que hace que los diferentes elementos renderizados por el navegador se comporten según estándares. | *Librería que hace que los diferentes elementos renderizados por el navegador se comporten según estándares. | ||
Línea 146: | Línea 149: | ||
<link rel="stylesheet" href="css/normalize.css"> | <link rel="stylesheet" href="css/normalize.css"> | ||
</source> | </source> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
*Ejemplo: | *Ejemplo: | ||
<source lang="html4strict"> | <source lang="html4strict"> | ||
Línea 169: | Línea 175: | ||
*Para hacer que "existan" será necesario crearlas mediante JavaScript utilizando por ejemplo Modernizr (html5shiv) | *Para hacer que "existan" será necesario crearlas mediante JavaScript utilizando por ejemplo Modernizr (html5shiv) | ||
</div> | </div> | ||
− | |||
+ | |||
+ | <div class="slide"> | ||
====Librería main.css==== | ====Librería main.css==== | ||
<source lang="html4strict"> | <source lang="html4strict"> | ||
Línea 182: | Línea 189: | ||
========================================================================== */ | ========================================================================== */ | ||
</source> | </source> | ||
− | |||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | |||
====Librería Modernizr==== | ====Librería Modernizr==== | ||
* Librería JavaScript que detecta si el navegador del usuario implementa las características de html5 y CSS3 de la página actual. | * Librería JavaScript que detecta si el navegador del usuario implementa las características de html5 y CSS3 de la página actual. | ||
Línea 196: | Línea 201: | ||
<div class="slide"> | <div class="slide"> | ||
− | |||
====jQuery: ¿CDN o local?==== | ====jQuery: ¿CDN o local?==== | ||
+ | *CDN significa content delivery network: se suelen utilizar servidores cercanos y utilizados frecuentemente para que la carga de la página sea rápida: normalmente el js ya estará descargado de alguna otra página que utilice el mismo origen. | ||
*Si window.jQuery es undefined habrá habido algún problema al obtenerlo del CDN. | *Si window.jQuery es undefined habrá habido algún problema al obtenerlo del CDN. | ||
*En este caso, procederemos a insertar en nuestra página la versión local de jQuery. | *En este caso, procederemos a insertar en nuestra página la versión local de jQuery. | ||
Línea 217: | Línea 222: | ||
<div class="slide"> | <div class="slide"> | ||
− | |||
====Google Analytics==== | ====Google Analytics==== | ||
*Herramienta de análisis de las visitas a un sitio web. | *Herramienta de análisis de las visitas a un sitio web. | ||
Línea 233: | Línea 237: | ||
*Veremos Google Analytics con más detalle cuando tratemos el SEO | *Veremos Google Analytics con más detalle cuando tratemos el SEO | ||
</div> | </div> | ||
− | |||
+ | |||
+ | <div class="slide"> | ||
=Personalización= | =Personalización= | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
====Fichero .htaccess==== | ====Fichero .htaccess==== | ||
*Se trata de un fichero con directivas Apache que sobreescriben a las originales del servidor, a partir del directorio don de se cuelga el fichero | *Se trata de un fichero con directivas Apache que sobreescriben a las originales del servidor, a partir del directorio don de se cuelga el fichero | ||
Línea 248: | Línea 256: | ||
</source> | </source> | ||
*Si tenemos acceso al servidor, por temas de rendimiento, es mejor poner las directivas anteriores en la configuración del servidor (fichero httpd.conf normalmente). | *Si tenemos acceso al servidor, por temas de rendimiento, es mejor poner las directivas anteriores en la configuración del servidor (fichero httpd.conf normalmente). | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
====Fichero humans.txt==== | ====Fichero humans.txt==== | ||
*Se coloca en la raíz del site y contiene la información de las personas que han colaborado en la web: | *Se coloca en la raíz del site y contiene la información de las personas que han colaborado en la web: | ||
Línea 255: | Línea 266: | ||
*[http://humanstxt.org/ES/Standard.html Como usarlo] | *[http://humanstxt.org/ES/Standard.html Como usarlo] | ||
*En minúsculas | *En minúsculas | ||
+ | </div> | ||
+ | <div class="slide"> | ||
====Fichero robots.txt==== | ====Fichero robots.txt==== | ||
*Se coloca en la raíz del site y contiene información sobre tu web para los buscadores: que directorios deben indexar y cuales no, con que frecuencia... | *Se coloca en la raíz del site y contiene información sobre tu web para los buscadores: que directorios deben indexar y cuales no, con que frecuencia... | ||
Línea 267: | Línea 280: | ||
*En minúsculas | *En minúsculas | ||
*Se ve con más detalle cuando estudiemos SEO. | *Se ve con más detalle cuando estudiemos SEO. | ||
+ | </div> | ||
+ | <div class="slide"> | ||
====Fichero favicon.ico==== | ====Fichero favicon.ico==== | ||
*Se coloca en la raíz del site, será el icono de nuestra web y aparece junto al título de la misma. | *Se coloca en la raíz del site, será el icono de nuestra web y aparece junto al título de la misma. | ||
Línea 279: | Línea 294: | ||
<link rel="icon" type="image/png" href="http://example.com/image.png" /> | <link rel="icon" type="image/png" href="http://example.com/image.png" /> | ||
</source> | </source> | ||
+ | </div> | ||
− | + | <div class="slide"> | |
*Más cosas: sitemap, Canonical URL, Feeds... [https://github.com/h5bp/html5-boilerplate/blob/master/doc/extend.md lee documento de personalización] | *Más cosas: sitemap, Canonical URL, Feeds... [https://github.com/h5bp/html5-boilerplate/blob/master/doc/extend.md lee documento de personalización] | ||
− | |||
</div> | </div> | ||
− | |||
− | ==Modernizr | + | <div class="slide"> |
+ | =Modernizr= | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
====Introducción==== | ====Introducción==== | ||
*Librería para detectar la disponibilidad nativa de html5 o css3 en el navegador. | *Librería para detectar la disponibilidad nativa de html5 o css3 en el navegador. | ||
− | *Se coloca siempre en el head, | + | *Se coloca siempre en el head, justo después de las hojas de estilos. |
− | *Detecta mediante decenas de tests en milisegundos, las características que funcionan o no del navegador actual. | + | *Hay dos versiones, desarrollo y producción (custom build, en la que seleccionaremos exclusivamente los componentes necesarios). |
+ | *Detecta mediante decenas de tests en milisegundos, las características que funcionan o no del navegador actual y añade unas clases en caliente a los componentes de nuestra página: | ||
+ | : <html> por ejemplo pasa a ser <html class="js flexbox canvas canvastext webgl no-touch...."> | ||
+ | : Las clases con prefijo no, representan las características que el navegador no soporta. | ||
+ | <source lang="html4strict"> | ||
+ | <script> | ||
+ | if (Modernizr.canvas) { | ||
+ | alert("This browser supports HTML5 canvas!"); | ||
+ | } | ||
+ | </script> | ||
+ | </source> | ||
*No se fija en el User Agent (propiedad navigator.userAgent) -> "feature detection" (mejor). | *No se fija en el User Agent (propiedad navigator.userAgent) -> "feature detection" (mejor). | ||
*Permite usar polyfills. | *Permite usar polyfills. | ||
Línea 306: | Línea 332: | ||
<div class="slide"> | <div class="slide"> | ||
====Modernizr.load()==== | ====Modernizr.load()==== | ||
− | * | + | *Normalmente para no recargar la página web de Polyfills, se hace un cargado condicional, basándonos en la libreria de JavaScript [http://yepnopejs.com/ yepnope.js] |
− | + | *Ejemplo de uso: Si el navegador no soporta geolocalización, se descargará el polyfill: | |
− | *Si el navegador no soporta geolocalización, se descargará el polyfill: | + | |
<source lang="html4strict"> | <source lang="html4strict"> | ||
Modernizr.load({ | Modernizr.load({ | ||
Línea 316: | Línea 341: | ||
}); | }); | ||
</source> | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | *Otro ejemplo con el input type="date" que [http://caniuse.com/#search=date no está muy soportado] | ||
+ | <source lang="html4strict"> | ||
+ | <script src="modernizr.js"></script> | ||
+ | <script>Modernizr.load({ | ||
+ | test: Modernizr.inputtypes.date, | ||
+ | nope: ['http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js', 'jquery-ui.css'], | ||
+ | complete: function () { | ||
+ | $('input[type=date]').datepicker({ | ||
+ | dateFormat: 'yy-mm-dd' | ||
+ | }); | ||
+ | } | ||
+ | }); | ||
+ | </script> | ||
+ | </source> | ||
+ | *En el ejemplo, se carga el componente de datetime del famework de JQuery User Interface. Para ello se debe cargar primero jQuery y luego jQuery User Interace (js y css). | ||
+ | </div> | ||
</div> | </div> |