Escolar Documentos
Profissional Documentos
Cultura Documentos
HTML&CSS
(Versin1.5)
JosMaraMoralesVzquez
josemaria@morales-vazquez.com
Pgina 1
CONTENIDO
1.INTRODUCCIN...............................................................................................................6
Historiadeloslenguajesdemarcas.............................................................................6
Algunoslenguajesdemarcas.......................................................................................7
Componentesdeunlenguajedemarcas..................................................................8
DiferenciasentreHTMLyXHTML....................................................................................9
Editoresdetextoenriquecido.....................................................................................10
Navegadores.................................................................................................................11
HTML4vsHTML5..............................................................................................................11
2.HTMLBSICO..................................................................................................................14
2.1.ESQUELETOBSICO....................................................................................................14
ElDOCTYPE.....................................................................................................................14
LoselementosBsicos..................................................................................................14
2.2.ELEMENTOSDEBLOQUEYELEMENTOSDELNEA.....................................................15
2.3.LASETIQUETASMSCOMUNES.................................................................................16
Listas................................................................................................................................17
Lasimgenes.................................................................................................................18
Loshiperenlaces............................................................................................................18
Comentarios...................................................................................................................20
Direccindeltexto........................................................................................................20
Acrnimosyabreviaturas.............................................................................................21
Caracteresespeciales..................................................................................................21
2.4.TABLAS..........................................................................................................................21
2.5.ALGUNASETIQUETASYATRIBUTOSDESACONSEJADOSMS................................24
3.CSS.SELECTORESBSICOS............................................................................................25
3.1.INTEGRACINDEHTMLCONCSS.............................................................................25
ComentariosenhojasdeestiloCSS...........................................................................26
3.2.SELECTORESBSICOS.................................................................................................26
Selectoresdetipoodeetiqueta................................................................................26
Selectoruniversal...........................................................................................................27
Coloresypropiedadesbsicasdeltexto..................................................................27
Selectoresdescendientes............................................................................................30
Selectoresdeclase.......................................................................................................31
SelectoresdeID.............................................................................................................32
3.3.COMBINANDOSELECTORES......................................................................................32
4.UNIDADESDEMEDIDAYOTRASPROPIEDADES..........................................................34
Unidadesdemedida....................................................................................................34
Unidadesdemedidaespecficasdelastipografas................................................34
Unidadesabsolutas.......................................................................................................34
Unidadesrelativas.........................................................................................................35
Porcentajes....................................................................................................................36
4.1.MSPROPIEDADESPARAELTEXTO..........................................................................36
4.2.APLICARESTILOSALASLISTAS...................................................................................38
4.3.DOSNUEVASETIQUETASHTML:divyspan...............................................................39
4.4.HERENCIA.....................................................................................................................40
Jos Mara Morales Vzquez
Pgina 2
Pgina 3
Pgina 4
Pgina 5
1.INTRODUCCIN
Unlenguajedemarcasesunaformadecodificarundocumentoque,juntocon
el texto, incorpora etiquetas (o marcas) que contienen informacin adicional
acercadelaestructuradeltextoosupresentacin.Talvezlaformamsprimitiva
quehemosusadodelenguajedemarcasfueraundictadoenelquelapersona
quedictanosvadandonotasacercadeloquetenemosqueponerennegritas,
cursivas,etc.Enelmundodelosordenadoresllevamosmuchotiempousando
lenguajesdemarcas.Wordstar,unodelosprimerosprocesadoresdetextoque
existieronparaelmundodelosPCoLatex,elprogramadeautoedicinfavorito
paraedicinprofesionaldetextos,sondosejemplosdeello:
Wordstar
Lalluviaen^BSevilla^Sesuna^Ymaravilla^S.
LATEX
Lalluviaen\textbf{Sevilla}esuna\textit{maravilla}.
Resultado:
LalluviaenSevillaesunamaravilla.
Escomnenmuchosmbitosconfundirunlenguajedemarcasconunlenguaje
deprogramacin.Perono:setratadecosasdiferentes.Hay,fundamentalmente,
trescarenciasdeloslenguajesdemarcasquelosdistinguen:
Notienenfuncionesaritmticas
Notienenvariables
Notienenestructurasdecontrol
Lascaractersticasprincipalesdeunlenguajedemarcasonlassiguientes:
Seusansiempresobretextoplano.
Lasmarcasseentremezclanconelcontenidodeldocumentoaunque,en
general,esfcildistinguirunasdelotro.
Suprocesamientoesmuysencillo.
Sonmuyflexibles.
Historiadeloslenguajesdemarcas
Laprimerareferenciaquesetienedeunlenguajedemarcascomotalestan
alejadodelainformtica.Setratadelaprcticadelosempleadosdeimprenta
deanotarmarcasconinstruccionesenlosmrgenesdelaspruebasdeimpresin:
Pgina 6
Algunoslenguajesdemarcas
HTMLes,sinduda,ellenguajedemarcasmsusadoylabasedelaspginas
web.Suprimeraversin,quedatadelosaos90,describaslo22elementos
diferentes.Laversinactualesla4.01aunquelaversin5estenunafasemuy
avanzadayseempiezaautilizarcadavezmsapesardequesetratadeuna
normaquenoestanaprobadadeformadefinitiva.
XML deriva de SGML y se trata tambin de otro metalenguaje. Parte de un
subconjunto de SGML y aade algunas restricciones nuevas de forma que los
lenguajesderivadosapartirdeXMLresultenmssencillosyfcilesdeinterpretar
quelosderivadosdirectamentedeSGML.
XHTML(ExtensibleHTML)esequivalenteaHTMLperoderivadeXML.Laversin
actualesla1.1ylaversin2.0estenborrador.LasdiferenciasentreHTML4y
XHTML1sonnmias.
CSS(CascadingStyleSheets)esunlenguajeusadoparadefinirlapresentacinde
un documento en HTML o XHTML. No se trata en realidad de un lenguaje de
marcas,peroseencuentraindisolublementeunidoaestosdos.Laversinactual
esla2ylaversin3seencuentraenfasedeborrador.Aligualqueocurrecon
HTML5,CSS3seusacadavezmsapesardenotratarsedeunanormadefinitiva.
XSL (Extensible Stylesheet Language) describre la forma en que debera de
mostrarselainformacincontenidaenundocumentoconformatoXML.
Pgina 7
Componentesdeunlenguajedemarcas
Veamos un primer ejemplo muy simple de HTML y analicemos los diferentes
componentesquepuedenaparecerenunlenguajedemarcasyalgunasdelas
caractersticasparticularesdeHTML:
<html>
<head>
<title>.:: PAGINA DE PRUEBAS ::.</title>
</head>
<body bgcolor="black" text="white">
<center><h1>TITULAR</h1></center>
Prueba de <strong>texto normal</strong><br />
Segunda linea
-Tambien en la segunda linea
</body>
</html>
Se trata de un ejemplo reducido al mnimo y que, incluso, presenta algunos
defectosoincorrecciones,peronosvalecomoprimercontacto.Veamoscomo
severaenunnavegador:
Pgina 8
DiferenciasentreHTMLyXHTML
Comohemosdichohaceunmomento,XHTMLintroduceciertasrestriccionesa
HTMLparahacerqueellenguajeresultanteseamssencilloyfcildeinterpretar.
Estasdiferenciassonlassiguientes:
Los elementos deben de cerrarse siempre. En HTML normal es
perfectamente vlido, por ejemplo, empezar un prrafo con la etiqueta
<p>y,sinponerlamarcadefindeprrafo</p>comenzarunsegundo
prrafodenuevocon<p>.Puestoquenopodemosanidardosprrafos
uno dentro de otro el intrprete debe de reconocer que al empezar el
segundoprrafodeberaantesdeterminarelprimero.EnXHTMLhayque
cerrarelprimeroexplicitamenteoencasocontrariotendremosunerrorde
validacin:
HTML: <p>Primer prrafo <p>Segundo prrafo
XHTML: <p>Primer prrafo</p><p>Segundo prrafo</p>
Los elementos sin contenido deben de cerrarse siempre usando una
etiquetaespecialquerealizaelautocierreenlamismaetiquetadeinicio:
HTML: <br>
Pgina 9
Editoresdetextoenriquecido
Alahoradetrabajarconlenguajesdemarcas,laeleccindeuneditordetexto
enriquecidoconayudacontextualesmuyimportante:
Pgina 10
Existenmuchoseditoresquecumplenparaestalabor,perositevesperdidoala
horadeempezarpuedesprobarconunodeestosdos:
Bluefish(multiplataforma):http://bluefish.openoffice.nl/
Notepad++(sloWindows):http://notepadplusplus.org/
Navegadores
En el caso del HTML y el XHTML, el navegador web funciona como visor o
intrpretedellenguajedemarcasysurespetoporlosestndaresesfundamental.
Muchasvecesenelpasadosehautilizadolaposicindesupremacadeunode
ellos para desviarse del estndar y perjudicar a la competencia.
Afortunadamenteestas prcticas parecenabandonadas hoyen da.Tenemos
variosrecursosparacomprobarlavalidezdeunficheroescritoenHTMLolaforma
enqueelnavegadorimplementalosestndares:
ValidadoresdeHTMLyCSS:
http://validator.w3.org/
http://jigsaw.w3.org/cssvalidator/
Testsdecumplimientodeestndares:
http://acid2.acidtests.org/
http://acid3.acidtests.org/
http://www.css3.info/selectorstest/
HTML4vsHTML5
HTML5, an est en estado de borrador, pero supone un enorme y esperado
cambio.La ltimarevisinde HTML,la4.01,sehizo en 1999y desdeentonces
Internet, nuestros hbitos y nuestras espectativas sobre lo que deberamos de
recibiralvisitarunawebhancambiadomucho.
EnparaleloaHTML5existirunaversindeXHTML5msestrictaquetambinse
encuentraanenestadodeborrador.LasdiferenciasentreHTML5yXHTML5sern
lasmismasquelasyavistasparaHTML4yXHTML4:apenasunasrestriccionesextras
parafacilitarlainterpretacindellenguaje.
HTML5,adems,iracompaadodeCSS3quemejoraysimplificaeldiseoweb.
LasprincipalesnovedadesdeHTML5yCSS3sonlassiguientes:
Ya no se habla de pginas web sino de aplicaciones web. Esto quiere
reforzarelcambioenlafilosofaquesepersigueconestanuevaversindel
lenguaje.
Laseparacinentrepresentacinycontenidosevereforzada.EnHTML5
todolorelativoaldiseoirenlosCSS.HTML5sinCSSesenblancoynegroy
nosedeberasiquieraelegiruntipodeletradiferentealqueelnavegador
Jos Mara Morales Vzquez
Pgina 11
Pgina 12
Hoy,febrerode2014,lastornashancambiadobastantedesdequeempezamos
aescribirestemanualyyaesperfectamentefactibleencontrarbastantea
menudoaplicacioneswebconstruidascompletamenteentornoaHTML5
Pgina 13
2.HTMLBSICO
2.1.ESQUELETOBSICO
ElDOCTYPE
TodaslaspginasHTMLdeberandecomenzarporunDOCTYPEoDeclaracinde
tipodedocumentoqueeslaqueasociadichapginaconunDTD(Document
TypeDefinition)oDefinicindeTipodeDocumentoeindicaestoalnavegador.
Enrealidad,yparanohacerlomscomplicadodeloquenecesitamossaber,se
tratameramentedeunalneaformalenlaqueindicamosalnavegadorlanorma
quesigueellenguajedemarcasquedebedeinterpretar.
EnlaWikipediatenemosdiferentestiposdeDOCTYPE:
http://es.wikipedia.org/wiki/Declaraci%C3%B3n_de_tipo_de_documento
LadefinicindeHTML4.01Trancisional,lamshabitual,esesta:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
ElDOCTYPEdebedeocuparsiemprelaprimeralneadeldocumentohtmlsinque
existaniunsloespacioantesdeellaonotendremosgarantasdequetodoslos
navegadoreslareconozcan.
LoselementosBsicos
LoselementosbsicosenunapginaHTMLson html,head y body.Laexpresin
mnimaformaldeundocumentoHTMLseraeste:
Pgina 14
Elcontenidodelelemento htmlestodanuestrapginaweb(salvoelDOCTYPE).
Llevaunatributodenominadolangqueindicaelidiomaconqueesthechala
web.
El contenido del elemento head est formado, a su vez, por una serie de
elementosquenosevisualizandirectamente(salvoelttulootitlequeaparecer
enlabarradelnavegador).Elelemento meta puedeaparecercondiferentes
indicacionesdentrodeestaseccindecabecera.Lamsimportantees,talvez,
el juego de caractres con que hemos escrito el documento HTML. Si nos
equivocamos puede que algunos caracteres especiales (vocales acentuadas,
signosdepuntuacin,etc.)noaparezcancorrectamente.EnLinuxsesueleusar
UTF8mientrasquesiusaswindowssueleserelISO88591.
Porltimo,elelemento body contendrtodalapartevisibledelaweb.Eneste
caso se trata de un nico prrafo (etiqueta p) con un mensaje tpico de
bienvenida.
2.2.ELEMENTOSDEBLOQUEYELEMENTOSDELNEA
Pgina 15
los compaeros
del curso de HTML</p>
Enelnavegadorsemostraralosiguiente:
Hola a todos los compaeros del curso de HTML
Cuandoaparecenmltiplesespaciosenblancosloserespetaelprimero.Por
ejemplo:
<p>Hola a todos
de HTML</p>
Severaenelnavegadoras:
Hola a todos los compaeros del curso de HTML
2.3.LASETIQUETASMSCOMUNES
<p></p>
<br />
<b></b>
<strong></strong>
<i></i>
<em></em>
<sup></sup>
<sub></sub>
<del></del>
<pre></pre>
<h1></h1>
<h2></h2>
...
<h6></h6>
<cite></cite>
<q></q>
<blockquote></blockquote>
<hr />
Define un prrafo
Salto de lnea
Negritas
Negritas
Cursivas
Cursivas
Superndice
Subndice
Texto tachado
Preformateado
Encabezado de nivel 1
Encabezado de nivel 2
Encabezado de nivel 6
Cita corta
Cita corta
Cita larga
Lnea horizontal
Todaslasetiquetasllevanasociadaunainformacindeestilopordefecto,pero
estapuedevariarentrecadanavegador.Msadelante,cuandoveamosCSS,
veremoscomomodificardichoestiloytratardequesealomsindependiente
posibledelnavegadorqueusemosparaverlas.
Enlasetiquetasenlasquepodemoselegir,preferiremossiemprelasque
conllevaninformacinsemntica(strong,em,cite)frentealasqueslonosdan
informacindeestilo(b,i,q).
Jos Mara Morales Vzquez
Pgina 16
Laetiquetapredetextopreformateadodefineunreaenelqueserespetade
formantegralossaltosdelneayespaciosenblancoquehayamosrealizadoal
escribireltexto.
Las etiquetas h1, h2, h3, h4, h5, h6, p, blockquote, y pre son etiquetas que
defienenelementosdebloque,mientrasque strong,b,em,i,sup,sub,del,bdo,
citeoqsonetiquetasdeelementosdelnea.
Listas
Laslistassedefinenmediantelasetiquetasul,liyol.
<ul></ul>
<ol></ol>
<li></li>
Porejemplo:
<ol>
<li>Lunes</li>
<li>Martes</li>
<li>Mircoles</li>
<li>Jueves</li>
</ol>
Laslistassepuedenanidar,peroteniendoencuentaquelanuevalistatieneque
abrirseantesdecerrarelitemanterior.Porejemplo:
<ul>
</ul>
<li>Punto 1</li>
<li>Punto 2
<ul>
<li>Apartado A del punto 2</li>
<li>Apartado B del punto 2</li>
</ul>
</li>
<li>Punto 3</li>
Pgina 17
Laetiquetalisepuedeusarfueradeunbloqueoloulypuedellevarunatributo
denominadotypeconcualquieradelasopcionesvlidasenoloul(tambinest
desaconsejadosuuso).
Lasimgenes
Para insertar imgenes se utiliza la etiqueta img Es una etiqueta nica (sin
contenido)porloquetenemosqueusarelmtododeautocerradoparacumplir
lasnormasdeXHTML.Lasintaxisbsicaesesta:
<img src=imagen.jpg alt=Texto alternativo />
Elatributosrcesobligatorioeindicaellugardondeestlaimagen.Sepuedeusar
unarutarelativa,absolutaoindicarunaURLweb.:
<img src=pics/2012/imagen.jpg alt=Texto alternativo />
<img src=http://www.example.com/imagen.jpg alt=Texto alternativo />
Laetiquetaimgesunaetiquetadelnea.
Loshiperenlaces
Losenlacesaotraspginasserealizanmediantelaetiquetaa
<a
href=http://www.google.es />Google</a>
Pgina 18
Otrosatributossontitleytarget:
<a
href="album.html"
title=Texto
target=_blank >lbum de fotos</a>
resaltado
al
pasar
el
ratn
Enesaotrapginadeberamosdetenerunelemento a conunatributo id de
formasimilaralcasoquehemosvistoantes:
<a id="C4">CAPTULO 4</a>
Pgina 19
Elvalordelatributoiddebedesernicoynodeberepetirsenuncaenlamisma
pginaweb.
Unejemplomscompletoparaunenlaceaemailenelquerellenamosnosolola
direccindedestino,sinotambinelasuntoyelcampocc:
<a href="mailto:josemaria@uponaday.net?subject=De un alumno de
DAW&cc=departamento@reyfernandovi.com">Enviar correo</a>
NOTAIMPORTANTE:ParaquevalidecorrectamentecomoXHTMLestricto
debemosdesustituirelsigno&porelcdigo&Nosehahechopor
claridad,peroloveremosmsadelante.
Laetiquetaaesunaetiquetadelnea.
Comentarios
LoscomentariosenHTMLseescribenentrelossmbolos<!y>
<!-- Esto es un comentario y jams se visualizar
Un comentario puede tener varias lneas -->
Unanotarespectoaloscomentariosy,engeneral,sobrecualquierotracosa
que hagamos en las pginas web realizadas con HTML y CSS: Todo,
absolutamentetodoloqueescribamosenellasllegaralnavegadordelusuario
talycomolashayamosescritosyserinterpretadoporeste.Loscomentariosy
algnotroargumentopuedequenoresultenvisibles,perosielusuarioquiere(y
sabehacerlo)siemprepodrverlos,porlogeneralconlacombinacindeteclas
Ctrl+U oeligiendolaopcinadecuadaen el men delnavegador. Por tanto,
tenemos que tener mucho cuidado con lo que hacemos en estos campos
aparentemente ocultos. Como norma general lo que no queramos que vea
ningnusuarionodeberadeescribirse.
Direccindeltexto
Paraindicarsieltextovadeizquierdaaderechaodederechaaizquierdaseusa
laetiquetabdoconelatributodir:
<p><bdo dir="ltr">dbale arroz a la zorra el abad</bdo></p>
<p><bdo dir="rtl">dbale arroz a la zorra el abad</bdo></p>
ltrindicaqueeltextovadeizquierdaaderecha(lefttoright)yrtldederechaa
Jos Mara Morales Vzquez
Pgina 20
Acrnimosyabreviaturas
Usamoslasetiquetas acronym y abbr,respectivamente,conelatributo title que
mostrarunanotaexplicativaotooltipalpasarelratnporencima.
Mi ordenador tiene 512 <abbr title="Megabytes">Mb</abbr> de memoria
<acronym title="Random Access Memory">RAM</acronym>
NOTAIMPORTANTE:acroymdesapareceenHTML5,asquenoconvieneusarlo.
Caracteresespeciales
Loscaracteresespecialesqueseusanparalasetiquetasnopuedenescribirsetal
cualenundocumentoHTML,asquehayqueusarunacodificacinespecial.
<
>
"
&
<
>
&
Existentambinuncaracterespecialquepuedensernosti:
Sinecesitamosalgnotrocaracterquenoapareceennuestroteclado(smbolos
tipogrficos,etc.)podemosrecurriralasiguientetabla:
http://www.ascii.cl/es/codigoshtml.htm
2.4.TABLAS
Pgina 21
Pgina 22
Laetiquetacaptionseusaparadarttuloalatabla.Debedeaparecerunasla
vezeinmediatamentedespuedelaaperturadelaetiquetatable:
<table border="1">
<caption>Ttulo de la tabla</caption>
<tr>
...
</table>
Las etiquetas thead, tbody y tfoot nos permiten estructurar de forma lgica la
informacin de la tabla, pudiendo incluso variar el orden de los mismos
(definiendo el cuerpo por delante de la cabecera, por ejemplo) si as nos
conviniera:
<table border="1">
<thead>
<tr>
<th>Mes</th>
<th>Ingresos</th>
</tr>
</thead>
<tfoot>
<tr>
<td>Total</td>
<td>2800,00 </td>
</tr>
</tfoot>
<tbody>
<tr>
<td>Enero</td>
<td>1200,00 </td>
</tr>
<tr>
<td>Febrero</td>
<td>1600,00 </td>
</tr>
</tbody>
</table>
Pgina 23
2.5.ALGUNASETIQUETASYATRIBUTOSDESACONSEJADOSMS
systrikesedesaconsejan,perolaetiquetadelquehaceexactamentelomismo
siguesiendovlida.
Si queremos mostrar texto tachado deberamos de <del>hacerlo as</del> y
nunca <s>as</s> o <strike>as</strike>.
Laetiquetauparasubrayartextotambindejadeestarsoportada.
<u>As se subrayaba antes</u>. Ahora ya no est permitido.
bigysmalltambindesaparecenenHTML5
<big>Esto no debe de hacerse</big>
<small>Y esto tampoco</small>
Pgina 24
3.CSS.SELECTORESBSICOS
Lashojasdeestilosirvenparasepararcompletamenteelcontenidodeldiseode
unapginaweb,detalformaque,siloestructuramoscorrectamente,esposible
cambiartotalmenteelaspectodenuestrawebhaciendomodificacionesenlas
hojas de estilo (css) sin tocar ni una sla lnea de su contenido (html). Para
empezar,podemoshacerunapequeademostracinconlapginadeejemplo
que hemos creado en la anterior unidad. Si aadimos la siguiente lnea en la
seccindecabecera(head),elnavegadordejardeusarlahojadeestilospor
defecto y tomar una de las que pone a nuestra disposicin la W3C como
demostracin:
<link href="http://www.w3.org/StyleSheets/Core/Traditional"
rel="stylesheet" type="text/css" />
3.1.INTEGRACINDEHTMLCONCSS
Existen tres formas diferentes de integrar las hojas de estilo con HTML. La ms
rudimentariaconsisteenusarelatributo style juntoconcualquieretiquetaHTML.
Porejemplo:
<h1 style="color: red; font-family: Verdana, Arial;" >Ttulo</h1>
Pgina 25
UndocumentoHTMLpuedeutilizarunadelastresformasanteriores,dosdeellaso
lastres,incluso,alahoradeaplicarestilos.Elnavegador,encasodeconflicto,
tomarsiemprecomobuenoelestilomscercanoalcontenidodeldocumento.
En caso de conflicto usando la misma forma de aplicar estilos el navegador
tendrencuentalodefinidoenlaltimaocurrenciaaparecida.
ComentariosenhojasdeestiloCSS
Loscomentariosenlashojasdeestilo(cuandoestasseguardanenficheros
independientes)nosehacendelamismaformaqueenHTML,sinoqueusamos
lossmbolos/*paraabirielcomentarioy*/paracerrarlo.Uncomentariopuede
ocuparmsdeunalnea.Unejemplo:
/* Esto es un comentario
y puede ocupar tantas lneas como deseemos
hasta encontrar el smbolo de cierre de comentario */
3.2.SELECTORESBSICOS
Toda regla de formato en CSS est formadas por dos partes: selector y
declaracin. La declaracin indica que formato hay que aplicar y el selector
indicadondehayqueaplicarlo.LadeclaracindelareglaCSSvaencerrada
entrellavesyestformadaporparejas propiedad:valor;terminadassiempreen
puntoycoma.Siobservamosalgunodelosejemplosanterioresesfcilidentificar
cadaunodeestoscomponentesycomprobarlosencillodelasintaxis.
As como en HTML la palabra clave es la etiqueta, el corazn de CSS lo
componenlosselectores.Laversin2.1deCSStieneunadocenadeselectores
diferentesperoesposibledisearcasicualquierwebconloscincotiposbsicos
queveremosacontinuacin.Veremoslosavanzadosmsadelante.
Selectoresdetipoodeetiqueta
Elselectordetipoodeetiquetasirveparadefinirlaspropiedadesdeformatode
todosloselementosdelapginacuyaetiquetaHTMLcoincidaconelvalordel
selector.Losdosejemplosquehemosvistoenelpunto2enlosquesedefinael
formato para h1 y p son ejemplos de selectores de este tipo. Podemos definir
selectoresdeetiquetaparacualquierelementoHTMLqueestdentrodelcuerpo
(body)denuestrapginaHTMLe,incluso,paraelpropiobody:
body {font-family: Courier, Monospace; color: red; text-align: justify; }
Podemosaplicarestilossimultneamenteamsdeunaetiquetaseparandolos
selectoresconcomas:
h1, h2, h3, h4, h5, h6 {color: blue; }
Jos Mara Morales Vzquez
Pgina 26
Observaquesicometesunerrorenlasintaxis,elnavegadorsencillamenteno
tendrencuentaladeclaracindeeseselector.
Selectoruniversal
Existeunselectordenominadouniversalquesesimbolizaconunasterisco.Setrata
deunaespeciedecomodnquepermiteseleccionaracualquerelemento:
* {font-family: Courier, Monospace; color: red; text-align: justify; }
Cuidado:asaplicadoserasimilar,peronoigual,aaplicarlamismadeclaracin
sobrelaetiquetabody,comohemosvistoantes.Lomejorparaqueaprecieslas
diferenciasesquepractiquessobrealgunosejemplos.
Coloresypropiedadesbsicasdeltexto
LoscoloresenladeclaracindecualquierselectordeCSSsedefinencondos
propiedades: color (del texto o del elemento en si) y backgroundcolor (del
fondo).Porejemplo:
body {color: white; background-color: green; }
Losvalorespordefectosonblackparaelcolordelelementoytransparentparael
fondo.Podemosaplicarestaspropiedadesenladeclaracindecualquier
selectordelosyavistosylosqueveremosenadelante:
hr {color: red;}
Qucoloressonvlidos?Porunladotenemoslaposibilidaddeusarunapaleta
de17coloresbsicosusandosunombrepredefinidodeentrelosqueaparecen
enelsiguientemapadecolores:
Unasegundaopcinesindicarelcolorexactoquequeremosmediantesuvalor
Jos Mara Morales Vzquez
Pgina 27
CiertoscoloresexpresadosenRGBhexadecimalsepuedenpresentarmediante
una forma abreviada. Son aquellos en los que los tres componentes de color
tienensuscifrasiguales,porejemplo #660099 puedeexpresarsetambincomo
#609. Un subconjunto formado por 216 de estos colores constituyen lo que se
conocecomopaletadecoloresWebSafeyseusancuandoqueremosgarantizar
que los colores que escojamos se vern exactamente igual en todos los
dispositivos, incluidos aquellos que slo pueden visualizar 256 colores (muchos
ordenadoresy,sobretodo,dispositivosmvilesantiguos).Puedesconsultaresta
paletaenesteenlace:
http://en.wikipedia.org/wiki/Web_colors#Websafe_colors
Mediante la propiedad fontfamily elegimos la tipografa que queremos usar.
Podemosindicar,eltipodeletraconcretaquequeremosolafamiliatipogrfica.
Porejemplo:
p {font-family: Arial; }
strong {font-family: serif; }
Sieltipodeletraconstademsdeunapalabratenemosqueindicarloentre
comillasdobles:
em {font-family: Times New Roman;}
OtraposibilidadesescogerunafuentedisponibleenInterneteindicarellugar
donde est disponible para que el navegador se la descargue y la use. El
directoriomspopulardefuenteseselqueGoogleponeanuestradisposicin:
http://www.google.com/webfonts
Pgina 28
YnuestrareglaCSSseraas:
h1 {font-family: "Gochi Hand", cursive;}
Estapropiedadnosloalineaeltexto,sinoquehacelomismoconlasimgenes
queestncontenidasenuntextocuyoprrafolatengaaplicada.Porejemplo,si
queremos una imagen alineada no podemos aplicarla sobre la etiqueta img,
perosisobrelaetiquetapdelprrafoquecontieneaesaimagen:
p {text-align: center; }
Pgina 29
Selectoresdescendientes
Es una forma de seleccionar elementos que se encuentran dentro de otros
elementosparaaplicarlesunestilopersonalizado.Imaginemos,porejemplo,que
quieroaplicarunestiloparticularalaetiquetadecursivas(em)peroslocuando
estaseaplicaauntitular.Necesitousarunselectordescendiente:
h1 em {color: red; }
Elestiloseaplicaratodaslasetiquetasemdentrodeunelementoh1sin
importarelniveldeprofundidad.Esdecir,enelsiguientefragmentoHTMLtambin
seaplicaran:
<h1><a id="INICIO">Titular de la <em>pagina</em></a></h1>
Elestiloanteriorseaplicaraalascursivas(em),dentrodeunaetiquetadenegrita
(strong)y,asuvez,dentrodeunprrafo(p).
Podemoscombinarestetipodeselectoresconelselectoruniversalpararealizar
restricciones. Por ejemplo, tengamos en cuenta las siguientes dos variantes de
selectoresylosdosfragmentosdecdigoHTMLacontinuacin:
p a { color: green; }
p * a { color: green; }
<p><a id="INICIO">Enlace</a></p>
<p><strong><a href="#">Enlace</a></strong></p>
SiusamoslaprimerareglaCSSsecolorearnenverdelasdoslneas,mientrasque
siusamoslasegundaregla,slosecolorearlasegunda.
Jos Mara Morales Vzquez
Pgina 30
Selectoresdeclase
Losselectoresquehemosvistohastaahorafallanenunacosa:nosonflexibles
cuandoqueremosaplicarunestilodiferenciadoaalgunosprrafos,peronoa
todosellos.Unadelassolucionesparaestoesusarlosselectoresdeclase.Para
aplicarlos, lo primero que tenemos que hacer es usar el atributo class en las
etiquetasHTMLcorrespondientesalosprrafoscuyosestilosqueremosdiferenciar:
<p class="verde">Este prrafo debe de ir en verde.</p>
<p>Este prrafo va en color normal.</p>
LareglaCSSseespecificaanteponiendounpuntoalvalorindicadoenelatributo
class:
.verde {color: green; }
LareglaCSSseaplicaracualquieretiquetaHTMLqueincluyaunatributoclass
cuyovalorseaverde,ynosloalasetiquetas p.Esdecir,seraperfectamente
vlido que, adems de los prrafos anteriores, tuvieramos algo as en nuestro
HTML:
<p> Si aplicamos el atributo class con valor verde a <strong
class="verde">estas negritas</strong> o a <em class="verde">estas
cursivas</em> tambin aparecen en verde.</p>
Siquisiramosrestringirelusodelselectordeclaseparaquesloseavlidoen
combinacindeunadeterminadaetiqueta,podemoscombinarloconelselector
detipooetiqueta:
p.verde {color: green; }
Ojo,nodebemosdeconfundirlastresdiferentesformasdecombinacinde
selectoresquehemosvistohastaahora:
p, .verde {color: green; }
p .verde {color: green; }
p.verde
{color: green; }
Enelprimercasolareglaseaplicaacualquieretiquetapoacualquieretiqueta
que tenga un atributo class con valor verde. En el segundo caso se aplica a
cualquieretiquetaconunatributoclassconvalorverdequeseencuentredentro
deunelementodetipop.Enelltimocaso,sloseaplicaenlasetiquetasdetipo
pquetenganunatributodetipoclassconvalorigualaverde.
Podemosaplicartambinelformatodemsdeunselectordeclasealmismo
elementoHTML.ImaginemoslassiguientesreglasCSS:
.codigo {font-family: monoespace; color: rojo; }
.versalita {font-variant: small-caps;}
Pgina 31
Porltimo,podemosusartambinlosselectoresdeclasemltiple.LareglaCSSse
expresaas:
.codigo.versalita {font-family: monoespace; color: blue; font-variant:
small-caps;}
Siincluimosestareglaennuestroejemploanterior,tendrpreferenciasobrelas
reglasindividualesynuestroprrafoaparecerenazulenlugardeenrojo.
SelectoresdeID
El selector de id es muy similar al de clase. La principal diferencia es que se
deberadeusarslocuandoesprecisoaplicarestilosaunelementonicoenla
pgina.EnesecasousaremoselatributoidenlugardeclassenlaetiquetaHTML
<p id="destacado">Parrafo destacado en negritas y color azul.</p>
yelsimboloalmohadilla(#)enlugardelpuntoenladefinicindelareglaCSS.
#destacado {font-weight: bold; color: blue; }
3.3.COMBINANDOSELECTORES
Todoslosselectoresaquvistospuedencombinarseentresi.Algunosejemplosya
loshemosvistoenestedocumento.Peropodemoscomplicarlocuantoqueramos
onecesitemos.Veamosalgunosejemplos:
.aviso .especial { color: red; background-color: yellow; }
Pgina 32
simultaneamente
Elanteriorselectorhacereferenciaalenlaceconunatributoid=inicioquese
encuentra dentro de un elemento de tipo <li> con un atributo
class=destacado, que forma parte de una lista <ul> con un atributo
id=menu. De nuevo selectores descendientes pero en esta ocasin con tres
niveles yencadaunodeellostenemosunselectordeclaseodeIDconuso
restringido.
Pgina 33
4.UNIDADESDEMEDIDAYOTRASPROPIEDADES
EnestecaptuloveremosalgunosdeloselementosbsicosdeCSSqueannos
restan. Estudiaremos las diferentes unidades de medida que podemos utilizar,
algunaspropiedadesmsrelativasaltexto,introduciremoslasdosetiquetasdivy
spanyveremoslosconceptosdeherenciayespecificidad.
Unidadesdemedida
CSStieneunamplioyflexibleconjuntodeformasdeexpresartamaosymedidas.
Manejarlascorrectamenteesnecesarioparaexpresareltamaodelasfuentes
que usamos y para otras caractersticas esenciales en un buen diseo:
interlineado,mrgenes,separaciones,etc.
Paraexperimentarconellaspresentaremosunanuevapropiedad: fontsize que
nospermitedefinireltamaodelatipografaqueestamosusando.Algunasdelas
formasdeespecificarmedidasqueveremosaqusonslovlidasparalostipos
deletrasmientrasqueotrassonmsgeneralesynosservirnparacualquierotra
cosa.
Unidadesdemedidaespecficasdelastipografas
La forma ms sencilla es expresar esta medida como una palabra clave que
expreseunvalorfijoabsoluto.Losvalorespermitidosson xxsmall,xsmall,small,
medium,large,xlargeyxxlarge.
h1 {font-size: xx-large;}
p#piedepagina {font-size: x-small;}
Unidadesabsolutas
Podemos expresar medidas absolutas en pulgadas (in), centmetros (cm),
milmetros (mm), puntos (pt) o picas (pc). Estas dos ltimas son medidas
especficasdelasimprentasymediosgrficos.Unpuntoequivalea1/72pulgadas
(aproximadamente0,35milmetros)yunapicaequivalea12puntos(alrededor
de4,23milmetros).Elpuntotambinesconocidoporqueeslamedidaquesuele
usarseenloseditoresdetextoparaelegireltamaodeunafuente.
Cuatronotasatenerencuentaentodasellas:
Parasepararlascifrasdecimalesusaremoselpuntoqueeslanormaenlas
medidasanglosajonas.
Silaparteenteradeunamedidaescerosepuedesuprimir.
Silamedidaesceronosetienequeponerunidaddemedida.Unceroes0
Jos Mara Morales Vzquez
Pgina 34
Unidadesrelativas
Las unidades relativas son mucho ms flexibles que las absolutas. Adems, es
altamente recomendable usarlas siempre que se pueda porque ante la gran
diversidaddedispositivosquesepuedenusaralahoradeverunapginaweb
(porttiles,grandestelevisoresdeplasma,tablets,telfonosmviles...),estasson
lasquemejorseadaptanacualquiersituacin.
Lospxelessonlamedidarelativamsconocida.Setratadeunamedidarelativa
a las dimensiones del dispositivo donde estamos viendo la pgina web. Un
ejemplo:
hr {width: 500px;}
em(ojo:noconfundirloconlaetiquetaemdeHTML)yexsonmedidasrelativasa
las dimensiones de la tipografa que estamos usando. Son medidas muy
conocidas por los profesionales de la tipografa. 1em representa,
aproximadamente, el ancho de la letra M mayscula que estamos usando
teniendoencuentatantolatipografacomoeltamaodelamisma:noeslo
mismo una m si estamos usando una Arial Narrow que si estamos usando una
CourierNew.Igualmente,paracualquieradeambaseltamaovarasiestamos
usandounafuentea12puntosoa18. 1ex equivalealaalturadeunaletrax
minscula.Aunquenosetratadeunareglaexacta,1emsueleaproximarsecomo
eltamaodelafuentequeestamosusando(esdecir,siestamosusandouna
fuentea12puntos,1emequivalea12puntos).
body {font-size: .9em;}
Siconsideramosciertalaaproximacinquehemosdichoantes,podemosdecir
que una fuente con un tamao de .9em es, aproximadamente, el 90% de la
fuentenormalquedeberadeteneresaetiqueta.Unacon1.5emseradel150%
p {font-size: 1.5ex;}
Pgina 35
Yunanotaimportante:lareferenciasobrelaquesecalculaeltamaorelativo
deunelementocuandousamosestasmedidasessiempreeseltamaodeletra
de su elemento padre, es decir, del elemento en el que se encuentra. Si el
elementonoseencuentradentrodeningnotroelemento,lareferenciaesel
tamaodeletradelelemento body.Sinoseindicadeformaexplcitaunvalor
paraeltamaodeletradelelemento body,lareferenciaeseltamaodeletra
pordefectodelnavegador.Lopodemosverconesteejemplo:
body { font-size: 10px; }
h1 { font-size: 1em; font-weight: normal;}
Alaplicarestoanuestraweb,definimoseltipodeletrabasea10pxelesyel
tamaodelostitularesdeprimerordena1emque,comohemosdicho,equivale
aproximadamentealtamaodelaletrabase,esdecir,quenohabradiferencia
entrelostitularesdeprimerordenyeltextonormal.Otroejemplo:
body { font-size: 12px; }
strong { font-size: 1.2em;}
Conesto,todaslasnegritasseran,aproximadamente,un20%msgrandessobre
eltamaodeltextoenelquesecolocan.
Porcentajes
ElporcentajeesotraformadeexpresarunamedidausadaampliamenteenCSS
que,adems,tambinseconsideraunaunidadrelativa.Sepuedenusarpara
expresareltamaodeunafuente:
p {font-size: medium;}
p.grande {font-size: 200%;}
Cuandoaplicamosunporcentajecomounaunidaddemedidageneral,estese
refiere al espacio que el objeto debera de ocupar. Por ejemplo, una linea
horizontalocupanormalmenteelanchodelapantallacompleta.Siaplicamosla
siguientereglaCSSocuparsolamentelamitad:
hr {width: 50%;}
LaW3Crecomiendaencarecidamenteusarpxelesyporcentajescomounidades
de medida para especificar el tamao de los diferentes objetos y em como
unidad para especificar el tamao de las fuentes. Cuando se prepara un
documento HTML cuya finalidad es tener salida impresa en papel y no en un
dispositivoptico,esmejorelusodepuntosypicas.
4.1.MSPROPIEDADESPARAELTEXTO
Pgina 36
Comoobservamos,textoeimagensealineanporlabasequeeselvalorpor
defecto.Seraequivalenteausarelvalorbaselineparaestapropiedad.Creemos
ahoralasiguientesreglasCSS:
img {border:1px solid; vertical-align: text-bottom;}
Pgina 37
4.2.APLICARESTILOSALASLISTAS
Losestilosseaplicanalaslistasmediantetrespropiedades:liststyletype,list
styleimageyliststyleposition.
liststyletypedefineeltipodeencabezadodecadaunodelositemsdelalista.
circle, disc, square o none sonalgunosdelosmsusados,perotambinexisten
otrosmuchosquepuedesconsultaraqu:
http://www.w3schools.com/cssref/pr_liststyletype.asp
liststyleimage nos permite usar una imagen de nuestra eleccin como
encabezadodecadaitemenlugardeunodelospredefinidosconlapropiedad
anterior.ComosiempreenestoscasoshayqueespecificarlaURLdeaccesoala
imagen.Siseespecificajuntoconliststyletype,estasegundaslosetendren
cuentasilaimagenqueespecificamosnoesaccesible.
liststylepositionesunadeesaspropiedadesdeajustefinodelformatoyseusa
paraespecificiarsielmarcadordeprincipiodelitemdeberadeaparecerdentro
(inside)ofueraalaizquierda(outside)delacajaenlaquedeberadeaparecer
cadaitemdelalista.Elvalorpordefectoesoutside.
Existeunapropiedadabreviadallamada liststyle quepermitedefiniralastres
anteriores en una sla regla. Las siguientes declaraciones, por tanto, seran
Pgina 38
Existen muchas otras propiedades CSS que admiten reglas abreviadas que
englobanavariasotrasrelacionadas.Algunaslasiremosviendomsadelantey
otrassonfcilesdeidentificarenlosejemplos.
4.3.DOSNUEVASETIQUETASHTML:divyspan
YloacompaamosdeestareglaCSS:
.verde { background-color: green;}
Pgina 39
Luego,ennuestrashojasdeestilo,definimoslosiguiente:
.primeraletra {font-family: 'Rock Salt', cursive; font-size: 500%; fontweight: bolder; }
Ylosprrafosdenuestrawebiranas:
<p><span class="primeraletra">S</span>i meliora dies, ut vina</p>
<p><span class="primeraletra">V</span>Veteresne poetas, an quos et
praesens et postera respuat aetas?</p>
(NOTA: Msadelanteveremosqueexisteotraformamsprofesionaldehacer
estomismomediantelospseudoelementos).
4.4.HERENCIA
PodemosexpresarcualquierdocumentoHTMLmedianteunaestructuraenforma
de rbol. Por ejemplo, tengamos el siguiente HTML sencillo (en el que,
intencionadamente,hemossuprimidoalgunasdelasetiquetasyatributospara
simplificarlo):
<html>
<head>
<title>Mi web</title>
</head>
<body>
<h1>La web del profe de Lenguaje de Marcas</h1>
<p>Jos Mara Morales es el <strong>profesor</strong> de este ao
de la asignatura y, entre otras cosas, vamos a ver con l:</p>
<ul>
<li>HTML y <em>XHTML</em></li>
<li>CSS</li>
<li>XML</li>
</ul>
</body>
</html>
PodramosverlaestructuradenuestrodocumentoHTMLesquematizadacomoel
siguienterbol:
Pgina 40
Pues bien, la herencia de CSS hace que las propiedades de los diferentes
elementossetrasladesiemprehaciaabajoatravsdelrbolsalvoquedichas
propiedadesseanreescritas,bienporlosestilospordefecto,bienporunaregla
apropiadaquehayamosintroducidonosotros.
Porejemplo,elelementoconlaetiquetastrongaparecerennegrita,noporque
nosotroslohayamosespecificadoas,sinoporqueasestdefinidopordefectoy
aunque definamos la propiedad fontweight: normal para el selector body
seguirnsiendonegritas.
Sinembargo,sidefinimoslapropiedadcolor:orange;ybackgroundcolor:black
enelselectorbody,todoaparecerconfondonegroyletrasnaranjas.
Si nuestra pgina web sencilla llevara un enlace (etiqueta a) el fondo si
aparecera negro, pero el color sera azul porque esa etiqueta si tiene la
propiedadcolorsobreescrita.
Endefinitiva:laspropiedadesdeestiloseheredansiemprehacaabajoenelrbol
salvoquedichapropiedadsearescrita,bienesplicitamente,bienconunaregla
pordefecto.
4.5.ESPECIFICIDAD
Anadieseleescapaaestasalturasqueamedidaquevayamoshaciendoms
complejasnuestrashojasdeestilo,msdificilsersaberenalgunasocasionesque
reglaprevalecersobreotra.Yahemosdichoque,enigualdaddecondiciones
(porejemplo,dosreglasquehacenreferenciaaestiloscontradictoriosparala
Jos Mara Morales Vzquez
Pgina 41
YennuestroHTMLaparecealgocomoesto:
<ul>
<li>Uno
<ol>
<li>Dos</li>
<li class=alerta>TRES</li>
</ol>
</li>
<li>Cuatro</li>
</ul>
Pgina 42
/*
/*
/*
/*
0,1,0,3
0,0,1,0
0,0,1,1
0,0,1,1
*/
*/
*/
*/
Loquenosconfirmaque,efectivamente,elcolordeltextodeberadesalirrojo
independientemente del orden en que se situen las reglas. Si eliminamos esa
regla,eltextosaldrenverde,peropuestoquehayunempateentreestareglay
laquedictaquedeberadesaliramarilloyprevalecelaescritaenltimolugar.
Los selectores de hijos y hermanos (tambin los veremos ms adelante) no
aportanunamayorespecificidadalasreglas.
Laclausula!important
Laclausula!importantsepuedeaplicaracualquierreglaaumentandoassunivel
deprioridaddeformaqueprevalezcasobredefinicionesposterioresdelmismo
selector e, incluso, sobre las valoraciones de especificidad. Ante las siguientes
reglas, un texto etiquetado como strong, dentro de un prrafo (selector
descendiente)yconelidminegrillaapareceraconcolorrojo:
strong {color: red !important;}
p strong#minegrilla {color: blue; }
Pgina 43
5.ELMODELODECAJAS
5.1.ELCONCEPTODECAJA
HTML y CSS definen una caja como una zona rectangular constituida por los
siguienteselementos:
Yaqu,unanotaporsialguienannosehadadocuentadelaimportanciadel
DOCTYPE: El internet explorer ha considerado durante mucho tiempo que el
borde interior y los mrgenes forman parte del contenido pese a que la
Jos Mara Morales Vzquez
Pgina 44
diveslacajamsversatil
AunquemuchoselementosdebloquedeHTMLsonsusceptiblesdeserusados
comocajas,laqueporreglageneralusaremoscomotaleslaetiquetadiv.Esla
msversatilyaquenotieneestilospropiossalvolosquedefinamosnosotros.
5.2.PROPIEDADESDELACAJA
Lasdimensionesdelcontenido
Lasdimensionesdelcontenidodelacajasedelimitanconlaspropiedadeswidth
y height. Ambaspuedetenerporvalorunporcentaje,unamedidaolapalabra
autoqueharaquesutamaoseajustaralomejorposiblealcontenidorealdela
misma. Los valores por defecto de estas dos propiedades son width: 100% y
height:auto;
Cuandollevanunporcentaje,esteseaplicasobreeltamaodelacajadentro
de la que, a su vez, se encuentran (su elemento padre o contenedor). Por
ejemplo,siunacajatieneporanchoel50%ynoestdentrodeningunaotra,esto
seaplicasobreeltamaototaldelasuperficietildelnavegador.Sidentrode
estametemosotratambinconunanchodel50%,tendrunanchodelamitad
de la caja donde se encuentra, es decir, un 25% de la superficie til del
navegador. Cambiemos el ancho de la regla .ejemplo vista antes por 50% y
pongamosestoennuestroHTML:
<div class="ejemplo">Hola caja 1
<p class="ejemplo">Hola caja 2</div>
</div>
Mrgenesinterioryexterior
Alternativamentetenemoslaspropiedades maxheight,minheight,maxwidth y
minwidthparafijarlasdimensionesmximasymnimas.Enestecasonopodemos
usarlapalabraautosinosloporcentajesomedidasconcretas.
Losmrgenesinterioresyexterioressecontrolanconlaspropiedades padding y
marging respectivamente y tenemos varias posibilidades. Podemos poner auto
(paradejarloalarbitriodelopredefinidoporelnavegador),unvalorexactooun
porcentajequeestarareferidoaltamaodelelementopadre.Adems,tambin
podemosespecificarunmargenigualparacadaunadelascuatrodimensiones
delacajaoespecificarquevalorconcretoqueremosparaellas.Laspropiedades
Jos Mara Morales Vzquez
Pgina 45
Un truco habitual para mostrar una caja centrada con respecto al elemento
dondeestcontenidaeshacerquelosmrgenesaizquierdayderechasean
igualesycalculareltamaoexactoquedebentener.Estoesrelativamentefcil
cuandotrabajamosnicamenteconporcentajes,peronosiempreesposible.El
navegadorloharsoloestableciendolosmrgeneslateralesaauto.
Existeunapeculiaridadconrespectoalosmrgenesexterioresdelascajas.As
comolosmrgenesderechoeizquierdodecajascontiguassesuman,lossuperior
einferiordecajasadyacentessesolapan.Imaginemos,porejemplo,doscajas
conmargenexteriorde20pxelesencadaunadesuscuatrodimensiones.Silas
situamosunajuntoaotratendremos40pxelesdeseparacinperosiponemos
unaencimadelaotrasloestarnseparadaspor20pxeles.
Para la propiedad padding la sintaxis es similar. Adems, el margen exterior
permite valores negativos (experimenta con los resultados!) mientras que el
interiortraducirunvalornegativoporcero.
Yunltimodetalle:elbodydeundocumentoHTMLestambinunacajaypuede
tenerpredefinidosvaloresparaelmarginyelpadding deformaquenosquede
unpequeobordesinusarenlasuperficiedelnavegador.Sinoqueremosque
estoseaaspodemosusarestaregla:
body {margin: 0px; padding: 0px; }
Elbordedelacaja
Elbordedelacajasedefinemediantetrespropiedades:color,grosoryestilo:
bordercolor, borderwidth y borderstyle, aunque luego veremos que tenemos
msposibilidadestantoparasimplificarladefinicincomoparaparticularizarla
conmuchomsdetallecomohemoshechoconlosmrgenes.
Laformaabreviadadeespecificarlascaractersticasdelbordedelacajaesesta:
border: red double 5px;
Pgina 46
UNANOTAMUYIMPORTANTE: todosestoselementossonvlidosparacualquier
selectorqueapliquemostantoaunelementodelneacomodebloqueaunque,
tienenmuchomssentido(sobretodoalgunosdeellos)sobreunodebloque.
Existeotrapropiedadllamadaoutlinemuchomenosflexibleparaaplicarbordesa
lascajas.
outline: 3px solid black;
outlinenorobaespacioalasdimensionesdelacajay,portanto,noafectaa
lasdimensionesdeesta.Es,pordecirlodealgunaforma,comosiusramosun
bordeexterioralbordedelacaja.Porcontraesmuchomenosflexiblequeborder
y,porejemplo,nopodemosespecificarpropiedadesdiferentesasusdiferentes
segmentos.
Jos Mara Morales Vzquez
Pgina 47
Imgenesdefondoenlascajasysuspropiedades
Nuestrascajasnoslopuedenteneruncolordefondo:tambinpuedentener
unaimagen.Lasintaxisdelapropiedadeslasiguiente:
background-image: url(http://cort.as/1KYH);
Silaimagenestenelpropiodirectoriodondeseencuentralaimageny,por
ejemplo,sellamaburbujas.jpgseraas:url(burbujas.jpg).Aligualqueocurracon
elvalordelatributosrcdelaetiquetaimg,silaimagenseencuentraenelpropio
servidorperoenotrodirectoriodiferentepodramosespecificarunarutaabsoluta,
relativa,etc.
Pordefectolaimagensecolocaenformatodemosaico.Podemoscontrolareste
valor mediante la propiedad backgroundrepeat cuyos posibles valores son
repeat,repeatx,repeatyonorepeat.Elvalorpordefectoesrepeat.
Mediante la propiedad backgroundposition podemos dar posicin a nuestra
imagen de fondo, tanto si estamos usando norepeat, como si lo estamos
haciendo(encuyocasoposicionaraunadelasimagenesycrearaelmosaicoa
partirdeesta.)Tenemostresposibilidades:
/* Posiciona la esquina superior izquierda de la imagen en la caja. Est
permitido el uso de valores negativos */
background-position: 50px 100px;
/* Idem al anterior pero usando porcentajes sobre las dimensiones de la
caja */
background-position: 20% 50%;
/* alinea la imagen en la caja admitiendo los valores left center o right
para la posicin horizontal y top center o bottom para la vertical. El
orden es indiferente */
background-position: center center;
Podramossustituirlasporestaotra:
background: url(gotas.gif) blue repeat-x top center fixed;
Pgina 48
Elordendelosvaloresesindiferenteysiomitimosalgunodeelloselnavegadorlo
completarconlaopcinquetengadefinidapordefecto.
Cajasyjerarquadeelementos
ObservalaformaenqueapareceestecdigoHTMLentunavegadorusandola
reglaCSScorrespondientealaclase.ejemplovistaanteriormente:
<h1 class="ejemplo">Hola Mundo</h1>
<div class="ejemplo">Soy la caja nmero 1
<div class="ejemplo">Soy la caja nmero 2</div>
</div>
<p>Hola <strong>mundo</strong> de las cajas. Esto es una prueba.</p>
5.3.POSICIONANDOLASCAJAS(YOTROSELEMENTOS)
Hastaahoranonoshemospreocupadodecontrolarlaposicindeloselementos
que colocamos en nuestro HTML y dejamos que estos se vayan situando uno
debajooalladodelanterioryqueseaelnavegadorelquelodisponga.Estose
debeaque,pordefecto,usamosunmododeposicionamientoquesedenomina
esttico(static).LapropiedadCSSquelocontrolasellamaposition.
Apartede static,estapropiedaddisponedetresposiblesvaloresms: relative,
absoluteyfixed.
Siusamos elvalor relative,la posicinseindicarespecto alaque deberade
tenerdeformanormaldichoelemento.Sehacemediantelaspropiedades top,
bottom,leftyrigth.leftytop,lasmsusadas,aplicanundesplazamientomedido
desdelaesquinasuperiorizquierdadelelementopudiendoserestenegativosise
expresamedianteunvalormientrasquebottomyrightmidenesedesplazamiento
desdelaesquinainferiorderechadelelemento.Lgicamente,notienemucho
sentidousarconjuntamentetopybottomoleftyright.Sepuedenusarporcentajes
siendoestosrelativosaltamaodelelementopadrealquepertenecen.
div.caja1 {position: relative; left: 10%; top -20px;}
div.caja2 {position: relative;right: -40px; bottom: 40px;}
Pgina 49
Laspropiedadesfloatyclear
La propiedad float, una de las ms tiles en el mundo de las cajas, nos va a
permitirmodificarelposicionamientodenuestrosbloquesyelementosdeforma
horizontal,colocndolasdeformaflotanteenellugarquedeseamos.Tienetres
posiblesvalores:right,leftononequeessuvalorpordefecto.Vamosaverlocon
unejemplo.EstassernnuestrasreglasCSS:
div#contenedor{width: 90%;
margin-left: 5%;
margin-top: 30px; }
div#top{width: 100%;
background-color: green;
text-align: center;
color: white;
font-weight: bold;
font-size: 3em;
font-family: Verdana, Helvetica, Arial, Sans; }
div#izquierda{width: 80%;
height: 50%;
background-color: aqua;
float: left;}
div.caja{width:90%;
margin-left:5%;
margin-top:10px;
background-color: red;}
div#derecha{width: 20%;
height: 50%;
background-color: teal;
float: right; }
div#pie{width: 100%;
background-color: orange;
font-size: .8em;
text-align: right;
font-family: Courier, Monoespace;}
YahorapondremosestoenelbodydenuestroHTML:
<div id="contenedor">
<div id="top">Cabecera de la pgina</div>
Jos Mara Morales Vzquez
Pgina 50
cuyo
<div id="izquierda">
<div class="caja">Caja 1<br/>
En un lugar de la mancha de
YelHTML:
<img class="aderecha" src="cup.png" alt="copa" />
<p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non
risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa,
varius a, semper congue, euismod non, mi.</p>
Porlgica,setratadeunatributoquenotieneningnefectocuandoestamos
usandoposicionamientoabsoluteofixed.
Lapropiedad clear nospermiteanularlosefectosdelapropiedad float.Tiene
cuatro valores posibles: none (por defecto), right, left o both. Los dos primeros
anularanunfloatrightoleft,respectivamente.Elvalorbothlosanularaaambos.
Paraverelefecto,aadamoslasiguientereglaanuestroCSSanterior:
.sinfloat {clear: right;}
YahoraaadamosalfinaldelHTMLestenuevoprrafo:
<p class="sinfloat"> Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet,
adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam.
Maecenas ligula massa, varius a, semper congue, euismod non, mi.</p>
Jos Mara Morales Vzquez
Pgina 51
Comopodemosver,elnuevoprrafosaltaalaparteinferiordelaimagencomo
sehabracomportadosiestanotuvieraelatributo float mientrasqueelprrafo
anteriorsigueatenindoseasuexistencia.
Introduciendolaterceradimensineneldocumento
Lapropiedad zindex nospermitirestructurarentresdimensionesloselementos
denuestrodocumentoHTML.Pordefectoloselementosaparecenestratificados
segn su aparicin en el documento, de forma que un elemento aparece
siempresobretodoslosanterioresal.Lapropiedad zindex nospermitealterar
esteordenindicandounnmeroentero,positivoonegativo,queindicaelnivelo
lacapaenlaquesituamoselelemento.Unejemplo.Primeroveamoslasreglas
CSS:
.caja1 { position: relative;
background-color: yellow;
border: 5px solid blue;
z-index: 2; }
.caja2 { position: relative;
background-color: purple;
border: 5px solid blue;
top: 1px;
left: 80px;
z-index: 1; }
.caja3 { position: relative;
background-color: orange;
border: 5px solid blue;
top: -100px;
left: -1px;
z-index: -1; }
YluegoestefragmentodeHTML:
<p class="caja1">Hola caja 1!</p>
<p class="caja2">Hola caja 2</p>
<p class="caja3">Hola caja 3</p>
Siprescindimosdelapropiedad zindex,lacaja3solaparala2yestaala1.
Conlapropiedadzindexlacaja3serlaquevayaalfondomientrasquela1se
encontrarenprimerplano.Pordefectoelvalordezindexesautoyelndicede
capabaseseasignaal0.Porconvencinsesueleusarel1comolacapade
fondoyel999comolacapaquequeremosenprimerplano,peroenrealidad
como hemos dicho, la propiedad admite cualquier valor entero negativo o
positivo.Entenders,adems,queestapropiedadnotieneningnefectoante
elementosquenosesolapan.
Porltimo,comovesenlacaja1sehaestablecidolapropiedadpositioncomo
relative aunquenoseefectuaningndesplazamientosobresuposicinnormal.
Estoesporquelapropiedadzindexslotieneefectosobreelementosenlosque
sehanmodificadolaspropiedadespositionofloat.
Jos Mara Morales Vzquez
Pgina 52
Visibilidad,desbordamientosyrecortes
Lapropiedad visibility,comosunombreindica,permiteocultarunelementosin
que este deje de ocupar su espacio en la pgina. Tiene dos posibles valores:
visibleohiddenysonautoexplicativos.Insisto:elelementonoseveperoestah
ysientramosenlaopcindevercdigodelnavegador(habitualmenteCtrl+U)
podremosverlo,asquecuidadocondondeyparaqulousamos!
Lapropiedad overflow ledicealnavegadorloquetienequehacercuandoun
elemento no cabe completamente dentro de la caja o elemento que lo
contiene.Suvalorpordefectoes auto ydejaestagestinalnavegador.Otras
posibilidades son hidden (corta y oculta lo que no cabe), scroll (coloca unas
barrasdedesplazamientoparapoderverloquenocabe)o visible (loqueno
cabedesbordaasucontenedorysemuestraenlapgina).Unpequeocdigo
CSSparaverlo:
.caja { width: 200px;
padding: 5px;
height: 100px;
border: 1px dashed black;
overflow: hidden;}
YesteseraelHTMLdeprueba:
<div class="caja">
<p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed
non risus. Suspendisse lectus tortor, dignissim sit amet,
adipiscing nec, ultricies sed, dolor.</p>
</div>
Estodejaravisibleunrectnguloque,respectoalelementoenelqueseaplique,
empiezaa0pxdelapartesuperior,llegahastalos200pxhacaladerecha,100px
haciaabajoy0pxdesdelaizquierda(osea,cuatrocoordenadasenelsentidode
lasagujasdelrelojempezandodesdearriba,comosiempre)
PuedesverunejemplocompletoconestareglaCSS:
.caja { width: 25%;
padding: 5px;
position: absolute;
border: 1px dashed black;
clip: rect(0 200px 100px 0);}
Jos Mara Morales Vzquez
Pgina 53
YestecdigoHTMLquelausa:
<div class="caja">
<p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed
non risus. Suspendisse lectus tortor, dignissim sit amet,
adipiscing nec, ultricies sed, dolor.</p>
</div>
Ylamismaadvertenciadesiempre:recuerdaquelapartequenoesvisiblese
puedeverconlaopcindeVercdigodelnavegador!
5.4.OTRASPROPIEDADES
Cambiarelaspectodelpunterodelratn
Podemoscambiarelaspectodelcursorcuandopasamossobreunelementocon
lapropiedadcursor.Losvaloresposiblesysuaparienciason:
auto.Elnavegadordeterminaporsmismoelcursorsegnelcontexto.
crosshair.Elcursormuestraunacruz.
default.Elcursorpordefectodelsistemaoperativo,amenudounaflecha.
eresize.Cursorapuntandohaciaeleste.
neresize.Cursorapuntandohaciaelnoreste.
nwresize.Cursorapuntandohaciaelnoroeste.
nresize.Cursorapuntandohaciaelnorte.
seresize.Cursorapuntandohaciaelsureste.
swresize.Cursorapuntandohaciaelsuroeste.
sresize.Cursorapuntandohaciaelsur.
wresize.Cursorapuntandohaciaeloeste.
help. El cursor indica una ayuda. A menudo se muestra un signo de
interrogacin.
move.Elcursorindicaunobjetoquesepuededesplazar.
pointer.Elcursorpresentaundedoqueindicaunenlace.
progress.Elcursormuestraunaflechaconunrelojdearena.
text.Elcursorindicaqueesposibleseleccionareltexto.
wait. El cursor indica una progresin. A menudo se muestra un reloj de
arena.
url.Especificaunarchivodondeseencuentralaimagenquesedeseausar
comocursor.ElarchivodeimagenespecificadoenlaURLdebetenerel
formatocur(cursor)oani(cursoranimado).
Unejemplo:
.caja { width: 50%;
padding: 5px;
border: 1px dashed black;
cursor: crosshair;}
Pgina 54
Alterandosiunelementoesdebloqueodelnea
Lapropiedaddisplaynospermiteredefinirelcaracterdeunelementocomode
bloque o de lnea. block, inline o none. son los valores ms usados. Los dos
primeros son autoexplicativos. El tercero hace que el elemento no se muestre
pero,alcontrariodeloqueocurraconlapropiedad visibility yelvalor hidden,
ahoraelespacioqueocuparaelelementonosereserva.Este,sinembargo,sigue
visiblealdaralaopcindevercdigo.
Una utilidad habitual de esta propiedad es mostrar uno al lado del otro los
elementosdeunalistapara,porejemplo,construirunmen(ampliaremoseste
usoenuncaptuloposterior):
li{ display: inline;
list-style-type: none; }
Enrealidadlapropiedaddisplayesmuchomscomplejaytieneotrasopciones
disponibles, pero no vamos a detenernos a verla. Existe una buena referencia
acercadeellaaqu:
http://www.librosweb.es/referencia/css/display.html
Modificandoelaspectodelosbordesdelasceldasdeunatabla
Las propiedades bordercollapse y borderspacing controlan la forma en que
vemoslosbordesdeunatabla.Laprimeratienedosposiblesvalores:collapsey
separate.Enelprimercasolosbordesadyacentesseunirnenunoslosiempre
queseaposiblemientrasqueconelsegundovalorlaseparacinentrebordesse
controlar mediante la propiedad borderspacing. El valor por defecto es
separate.
borderspacing indica el espacio que habr entre los bordes de celdas
adyacentes,porejemplo:
border-spacing: 2px 0;
Siseindicandosvaloreselprimerohacereferenciaalaseparacinhorizontalyel
segundo a la vertical. En el caso de indicar un slo valor se aplica a ambas
distancias
Por ltimo, la propiedad emptycells tiene dos posibles valores (show o hide)
controlaqueseveanonolosbordesyfondodelasceldasvacasdeunatabla.El
valorpordefectoesshow.
Pgina 55
6.SELECTORESAVANZADOS
Aunquehemosdichoqueprcticamentecualquierpginawebpuedehacerse
con los cinco selectores bsicos que ya conocemos, existen algunos que se
llaman avanzados que nos van a permitir, bien simplificar algunas tareas de
aplicacindeestilosobienpermitirnosalgunosefectosimposiblesdeconseguir
deningunaotraformacomoeselcasodelautilidadproporcionadaporalguna
delaspseudoclases.Lospresentaremosenlassiguientespginas.
Selectordehijos
Elselectordehijosesmuysimilaralselectordescendienteperoesmuchoms
especfico.Cuandousounselectordescendiente,porejemplop.destacadoslo
meimportaqueelelementopertenecientealaclase destacado seencuentre
dentrodelelementop,sinimportarmecuanprofundoseencuentredentrodel
rboljerrquicodeetiquetasdeldocumento.Siusoelselectordehijoesporque
quieroqueelelementoconlaclasedestacadoseahijodirectodelelementopy
noundescendientecualquiera.Ysesimbolizaas:
p > .destacado {color: purple; }
Selectordehermanosadyacentes(oadyacente,sinms)
El selector de hermanos es aquel que nos permite seleccionar elementos que
compartenelmismopadreyestnadyacentesunoalotro.Enelsiguientegrafico
podemos ver destacados los hermanos de un HTML sencillo ya visto en otros
ejemplos:
Paraaplicarundeterminadoestiloalprimerprrafodespusdeuntitulardenivel
1,usaramoslasiguientesintaxis:
h1 + p {text-indent: 2.5em; }
Pgina 56
Selectordeatributos
Losselectoresdeatributosnospermitenaplicarestilosadeterminadoselementos
enfuncindelosatributosqueacompaenalaetiquetaHTMLodelosvalores
quetengandichosatributos.Sinosparamosapensar,enrealidadlosselectores
declaseodeIDsonunaespeciedeselectoresdeatributoporqueaplicanestilos
en funcin del valor de un atributo (class o ID, respectivamente), as que no
vamosavernadademasiadonuevoenesteapartado.
Existencuatrotiposdiferentesdeselectoresdeatributo.Losprimerosseleccionan
loselementosenfuncindeundeterminadoatributoindependientementedesu
valor:
td[rowspan] {background-color: black; color: white; }
Lossegundosseleccionanunelementoenfuncindeunatributoconunvalor
determinado:
a[href="http://www.google.es/"] {color: red; text-weight: bold; }
Podemoscorrerelriesgodepensarquesimplementeesunaformadehacerms
complicado lo que ya sabemos hacer con otros selectores ms simples. Por
ejemplo,estasdefinicionessoncasiidnticas:
div.alerta {color: red;}
div[class=alerta] {color: red;}
div[class~=alerta] {color: red;}
Perotambinpodemospensarenotrasposibilidadesmsinteresantes:
img[alt~=ilustracin] {border: 2px solid;}
table[summary~=2010] {background-color: green;}
*[title~=importante] {color: red; cursor: crosshair; }
Elcuartotipodeselectordeatributoapenastieneutilidad.Permiteseleccionar
elementos con cierto atributo y que incluyen un determinado valor como el
primerelementodeunalistaseparadaporguiones.
*[lang|="es"] { color: blue; }
Elanteriorejemploseleccionaraatodosloselementosconunatributolangque
Jos Mara Morales Vzquez
Pgina 57
6.1.PSEUDOCLASESYPSEUDOELEMENTOS.
ExistenciertosestadosocaractersticasdenuestrodocumentoHTMLalosquees
tilyapropiadoaplicarleunestilodiferenciado:unenlaceyavisitado,laprimera
letra de un prrafo, etc. Esto se consigue mediante las pseudoclases. Para
identificarquehablamosdeunapseudoclaseenunareglaCSSusamoslosdos
puntos comosigno diferenciadoryestaspuedenaplicarsesobreselectores de
tipo,declase,etc.Veremosejemplosenseguida.
Y una nota: en algunos textos se hace una separacin entre pseudoclases y
pseudoelementos mientras que en otras se engloban todas bajo la misma
categora. Aqu haremos la diferenciacin clsica porque, si bien no existen
grandesdiferencias,siqueesnecesariohacerladistincinalahoradecalcularla
especificidaddelasreglasCSS.
Pseudoclases
Las pseudoclases son aquellas que se aplican fundamentalmente sobre los
selectoresdeenlace(aunquealgunadeellaspudeaplicarsetambinsobreotros
elementos).Setratade:link,:visited,:hover,:activey:focus.
Lapseudoclase :link hacereferenciaaunenlacequeannohasidovisitado,
mientrasque :visited hacereferenciaaloopuesto,esdecir,losenlacesqueya
hansidovisitadosporelusuario.Dosejemplos:
a:link {color: green; background-color: yellow;}
a:visited {color: yellow; background-color: green; }
Lapseudoclase:hovernosdictalosestilosaaplicaralpasarelratnporencima
delelementoalqueelselectorhacereferencia.Sesueleusarfundamentalmente
conenlacesperoesaplicableacualquierotroelemento:
a:hover, p.destacado:hover{font-weight: bold; }
em:hover {color: blue;}
Pgina 58
Porltimo,:focusesunareglaqueseaplicacuandoelelementotieneelfoco,
es decir, cuando se activara si pulsamos la tecla Intro. Para poder usarla
debemosdedefinirqueelementostienenelfocoennuestrapginayelordenen
elqueloreciben(cadavezquepulsamossecuencialmenteeltabulador).Estose
hace mediante el atributo tabindex que podemos usar en las etiquetas a
(enlaces)denuestrawebposibilitandoaslanavegacinsinnecesidadderatn.
Porejemplo:
<p>Un enlace a <a href="http://www.google.es/" alt="Google"
tabindex="1">Google</a>, otro a <a href="http://www.bing.es" alt="Bing"
tabindex="2">Bing</a> y un tercero a <a href="http://www.yahoo.es"
alt="Yahoo" tabindex="3">Yahoo</a>.</p>
Yahorayasipodemosverlosefectosdelapseudoclase:focus
a:focus {background-color: black; color: white; font-size: 1.8em;}
Laprimeraseleccionayaplicaestiloaunprrafosiempreycuandoseaelprimer
hijodesupadre,mientrasquelasegundahacelomismosobrelascursivasdeese
mismotipodeprrafos.
Existeunaltimapseudoclasedeaplicacinmuylimitadallamada:langquenos
permiteaplicarestilosdiferenciadosenfuncindelidiomaenqueestescritoel
elemento.Porejemploas:
p:lang(es) {color: red; }
Aunquetienenunusomuysimilaralvistoenunodelosselectoresdeatributo,
existe una ligera diferencia. El selector de atributo es aplicable slo a los
contenidos que usen el atributo lang, mientras que esta pseudoclase sera
aplicable tambin en otras circunstancias, como por ejemplo si el propio
navegadorfuesecapazdeanalizarelcontenidoydetectarelementosescritosen
diferentesidiomas(cosaque,porelmomento,nohacendemasiadobien...).
Pseudoelementos
Losdosprimerospseudoelementosqueveremossonaplicablesaladecoracin
Pgina 59
Existenotrosdospseudoelementosllamados:beforey:afterqueusadosjuntocon
la propiedad content nos permiten insertar contenido (texto, imgenes, etc.)
antesodespuesdeunelemento.
p#insert1:after{ content: " (TM Marca Registrada) ";}
p.insert2:before{ content: url(icon_new.gif);}
Enlosanterioresejemplos,elprimeroinsertaeltextoqueapareceentrecomillasal
finaldecadaprrafoidentificadoconelselectordeIDinsert1,mientrasqueel
segundo inserta el gif animado icon_new.gif delante de cada prrafo
identificadocomopertenecientealaclaseinsert2.
Pgina 60
7.ALGUNOSDISEOSYEFECTOSTILES
7.1.DISEOSDEANCHOFIJO,LQUIDOS(OFLUIDOS)YELSTICOS
Lastresestrategiaspurasdeafrontarundiseowebson:diseosdeanchofijo,
deancholquido(ofluido)odeanchoelstico.
Losdiseosdeanchofijoconfiguransusmedidasmediantepxeles.Sonfcilesde
realizarynotenemosquehacerdemasiadaspruebasniajustesparaasegurarnos
quesevernbien.Puestoqueyacasinoexistenmonitoresconresolucininferior
a800pxelesdeanchosesueletomarcomoestndarunanchode760o780
pxelesparaelcontenido.
Losdiseosdeancholquidosonaquellosquetrabajanmedianteporcentajes.
Aprovechanmuchomejorlasuperficieenlaspantallasgrandesperonosexigen
mspruebasparaasegurarnosdequetodosevecorrectamenteenresoluciones
bajas.
Losdiseoselsticossonlosmsdifcilesdeimplementar.Basansusmedidasenla
unidad em, de forma que si incrementamos el tamao del texto, tambin
aumentamosproporcionalmentelasdimensionesdenuestrodiseo.
Nos encontraremos por ah muchos modelos hbridos pero estos son los
fundamentales.Porejemplo,sehabladeundiseohbridolquidofijocuandolo
fundamentaldeldiseoeslquidoperoexisteenlalgnelementodeanchofijo.
Porejemplo,podemospensarenundiseoadoscolumnasdondeunadeellases
de ancho fijo (para emplazar mens, publicidad, etc.) mientras que la otra,
destinadaaloscontenidos,tieneundiseolquido.
Ejemplo1Cajas
Enelejemplonmero1nosencontramoscuatrodiseosdecajasbsicosdonde
aprendemosasolventardiferentesproblemas.Hastaahoralascajasconlasque
habamostrabajado(enelcaptulo5)tenanelancho,obienfijo,obienlquidoy
elaltofijo.Enelmundorealnecesitamosdisearcajasdealtovariableenfuncin
delcontenidoypartiendodelapremisadequenoconocemoseltamaodeese
contenido.
Jos Mara Morales Vzquez
Pgina 61
color: white;
width: 760px;
padding: 10px;
}
Unasegundasolucinesusartambinlapropiedadfloatenelcontenedor.
#contenedor2 {
border: 2px dotted black;
margin: 5px auto;
width: 780px;
float: left;
}
Unaterceraopcinseradefinirlapropiedadoverflowaautoohiddenen
lacajacontenedora:
#contenedor {
border: 2px dotted black;
margin: 5px auto;
width: 780px;
overflow: auto;
}
Encontramosotroproblemacuandoqueremoscolocartresomscolumnas.
Hastaahoraslohemosusadodosycolocamosunaaladerechaconfloat:right
y otra a la izquierda con float: left. En realidad, si ajustamos bien el espacio
podramoshaberusadodosvecesunouotroporquelosfloatseapilaranen
horizontal llenando todo el espacio disponible. Esto nos da la idea de como
hacerlo con, por ejemplo, tres columnas: podemos apilar la central a la
derechaoalaizquierdapero,esosi,calculandosiemprebienlasdimensiones:
#izquierda2 {
float: left;
width: 31%;
padding: 1%;
}
#centro2{
float: left;
width: 32%;
padding: 1%;
}
#derecha2 {
float: right
width: 31%;
padding: 1%;
Pgina 62
Observemosunacosaenelejemploanteriorenelque,comovemos,eldiseo
delanchoeslquido.Elanchototalsehacalculadoparallenarcompletamente
elcontenedorloves?Elpaddingeselespaciointeriorentreelcontenidodela
cajayelbordedelamismaysedejatantoaderechacomoaizquierda,esdecir,
un2%porcadacolumna.Entotalhacenel100%Silascolumnastuvieranbordes
pasaralomismo:unbordedel.5%ocuparaun1%porcadacolumna.Esunerror
muycomnhacermalestosclculos,tantoendiseoslquidoscomofijos,yen
ese caso las cajas se desbordaran, quedaran descuadradas, con mrgenes
antiestticos,etc.
Enlosdosejemplosanterioreshemosusado,intencionadamente,coloreschillones
paracadacolumnaparaquequedeclaroquelacolumnamsalta,seacual
sea, es la que marca el alto total del diseo. Puedes hacer pruebas de esto
sumandooquitandocontenidoenunasuotras.Elproblemaquetenemoscon
estos diseos es que, o el fondo es blanco para todas, o si queremos usar
imgenesocoloreselresultadoesbastantepocoprofesional.Idemsiquisiramos
usarbordesseparadoresparacadacolumna.Cmolosolventamos?Enlacaja
nmero tres de este ejemplo tenemos una forma rpida de hacerlo pero slo
vlidaparadiseosdeanchofijo:usarunaimagendefondoparaelcontenedor
denuestrascolumnasdondevandibujadoslosfondosyseparadoresdecada
unadeellas.Tanfcilcomoesto:
#contenedor3 {
background-image: url(fondo3.jpg);
border: 2px dotted black;
margin: 5px auto;
width: 780px;
overflow: auto
}
Laimagenainsertardebaradeseralgoas:
Ynuestratablaas:
Pgina 63
Perolasolucinrealvlidaparacualquiertipodesituacionesnoesesta.La
tieneseneldiseonmero4deesteejemplo1.Eltrucoconsisteenusaruna
estructuracondoscontenedoressiguiendolossiguientespuntos:
El primer contenedor tendr, como siempre, el ancho total del diseo y
llevar como color de fondo el que queramos dar a la columna de la
izquierda.
Elsegundocontenedoriradentrodelprimeroconunfloat:right;,ocupando
el ancho de la columna de la derecha y con el color de fondo que
queramosquelleveesta.
Dentrodeestesegundocontenedormetermoslasdoscolumnas.Ladela
derechaocupandoelanchodedichocontenedor.Ladelaizquierdacon
lapropiedad position:relative; yun margin:left; convalornegativopara
desplazaresacolumnaalaposicinalaizquierdaquelecorresponde.El
HTMLsimplificadoalmximoquedaraas:
<div id="contenedor4">
<div id="contenedor4-2">
<div id="izquierda4">Lorem ipsum dolor sit amet</div>
<div id="derecha4">Lorem ipsum</div>
</div>
</div>
YelCSS:
#contenedor4 {
Jos Mara Morales Vzquez
Pgina 64
Ejemplo2Trescolumnas
Ysinecesitamostrescolumnas?Elsistemaseramuysimilaralvistoenelltimo
casoconlasalvedaddequeahoranecesitaramosuncontenedorporcadauna
Jos Mara Morales Vzquez
Pgina 65
Ejemplo3Diseodealtoyanchofijo
Losdiseosdealtoyanchofijosnotienenmayorcomplejidadyseincluyeeste
Pgina 66
Ejemplos4y5Diseosdeancholquido
Lacomplejidaddeldiseodeancholquidoconmltiplescolumnasresideenlos
clculos paraajustarestas sinquesedesborden o descuadren almodificarel
anchodelnavegador.Enelejemplo4tienesuncasoatrescolumnasenelquese
hatratadodedetallarenloscomentarioslaformaderealizarestosclculos.El
ejemplo 5 sera exactamente igual pero aqu ya usamos adicionalmente la
estrategiadecontenedoresanidadosquenospermitequetodaslascolumnas
tengan la misma altura independientemente de cual sea la que tenga ms
cantidad de contenido. En ambos casos usamos, adems, dos columnas
auxiliaresparausarlascomoseparadoresentrelascolumnasprincipales.
Ejemplo6Diseofijo,fluido,fijo
En este ejemplo presentamos una estructura en la que las columnas laterales,
derechaeizquierda,sondeanchofijoyeslacolumnacentrallaquemodificar
suanchodeformafluida(porcentual)enfuncindelanchodelnavegador.
Lostrucosdediseosonlossiguientes:
Suponemosqueelcontenidoprincipalestarenlacolumnacentrallacual
siempretienequeexcederenlongitudalaslaterales.Encasocontrarioel
diseonopodrasertansimplecomosepresentaaqu.
Lascolumnaslateralesllevantrespropiedades: position:absolute;top:0; y
luego,segncorresponda, rigth:0; paralacolumnadeladerechay left:0;
Pgina 67
Ejemplo7Separadoresentrecolumnastransparentes
Enesteejemplousamos unavariantedelmtodovisto paraqueelseparador
entrelascolumnasseatransparenteydejeverelfondodelawebque,eneste
caso,esundegradadodecolorvertical.Paraelloelcontenedorprincipalocupa
elespaciodelacolumnadeladerecha,elsecundario,dentrodeeste,tienelos
atributos de position: relative; y marginright: 260px; para desplazarlo a la
derecha,dejandounespaciovacoentreambosqueactuarcomoseparadory
dejarverelfondodelaweby,porltimo,dentrodeestesegundocontenedor
alojaremoslasdoscolumnas,unadeellas,laizquierda,denuevocon position:
relative;yunmarginleft:710;paradesplazarlaasuposicinenlaizquierda.
Ejemplo8Sombrasydiagonales
Elejemplo8estextraidodirectamentedelawebyesuncasosencillodecomo
introducirsombras,bordesredondeadosylneasdiagonalesennuestrodiseode
formasencilla.Elefectoseconsiguemediantetresimgenes:unadecabecera
queintroduceunosbordesredondeadosyunadiagonalquecruzadepartea
parteeldiseo,unadepiconlosbordesredondeadosylasombrainferior,yotra
que se repite verticalmente a lo largo de todo el cuerpo del diseo para
completar el efecto de sombreado. La eleccin de introducir la imagen de
cabeceraenelhtmlynoenelcssesdiscutible,perohequeridodejareldiseo
Jos Mara Morales Vzquez
Pgina 68
</div>
RepeticindelaimagenenelcuerpodeldiseoenelCSS:
div.article {
padding: 0px;
width: 883px;
margin-top: 0px;
margin-right: auto;
margin-bottom: 20px;
margin-left: auto;
background-image: url(fondo-eldiario.png);
background-repeat: repeat-y; }
Pideldocumento,enelCSS:
#abajo {
background-image: url(fondo-abajo-eldiario.png);
background-repeat: no-repeat;
height: 25px;
margin: 0px;
padding: 0px; }
7.2.DISEODETABLAS
Elejemplo9muestracomodarunaspectoprofesionalaunatablaconapenas
unas pocas propiedades. El fondo del diseo tiene un degradado de color
vertical conseguido mediante la repeticin de una imagen de fondo. Las
propiedades, como puedes ver, no tienen nada especial ms que una
adecuadautilizacindetipografas,coloresyespaciados.Tansolohayunanota
especialatenerencuenta.Latablausalapropieadborderspacing:01px;que
defineelespaciodeseparacinentreceldasadjacentes.Elprimervaloreselque
tendrencuentaparaelespaciadohorizontalyelsegundoparaelvertical(si
hubiera slo un valor aplicara a ambas magnitudes). Con esto conseguimos
anularelespaciadohorizontalpordefecto(deunpixel)quedejaraunpuntoen
blancoentreceldayceldaenlaslneashorizontalesquedelimitanlasfilas.Porlo
demsnoexistenadamsaresear.
Pgina 69
7.3OTROSTRUCOS
Ejemplos10y11Transpariencias
Losefectosconimgenestranslcidasyqueparecenfijarsealfondodelaweb
mientras que el contenido se desplaza son muy utilizados y fciles de
implementar.Enestosdosejemplospodemoscomprobarlo.Lasbasesdeestetipo
dediseosonlassiguientes:
Debemosdecontarconunjuegodeimgenesespecialmentepreparadas.
Todasellassimilaresperoconalgnefectodiferenciador
Situaremoscadaunadeestasimgenesenunacajadiferentedeforma
queelcolordefondodelacaja(backgroundcolor)coincidaconelcolor
defondodelaimagen
Jos Mara Morales Vzquez
Pgina 70
body {
background-color: #ded;
background-image: url(world-1.jpg);
background-position: top left;
background-repeat: no-repeat;
background-attachment: fixed;
padding: 1% 5%;
}
div#contenedor {
background: white url(world-2.jpg) top left no-repeat fixed;
width: 800px;
margin: 15px auto;
border: 1px solid black;
padding: 40px;
}
div#contenedor h2 {
background: #cbb196 url(world-3.jpg) top left no-repeat fixed;
color: white;
padding: 20px;
margin: 20px auto;
border: 1px solid black;
}
Pgina 71
Ejemplo12BoxPunch
El Box Punch es otro ejemplo muy socorrido para disimular el hecho que ya
conocemos de que slo podemos trabajar con cajas perfectamente
cuadrangulares.Mediantelailusindecombinarcoloresdefondoybordesen
diferentes cajas superpuestas se consigue el efecto de hacer creer que estas
cajassonmsirregularesdeloqueenrealidadloson.
Pgina 72
Ejemplos13y14Tooltips
El ejemplo 13 nos muestra como hacer tooltips, ventanas emergentes que nos
muestraninformacinalpasarelratnporencimadealgnpuntodefinidode
nuestraweb.Enelcasodelejemplo13estasventanassemuestransiempreenel
mismopunto,enelpidelaweb.
Pgina 73
Lasclavesdeestetipodediseossonestas:
Tantoeltextoquedisparaelefectocomoeltextoquesemostrarenel
tooltip aparecern en el HTML como contenidos de elementos
diferenciadosyanidados.Enelejemplo13usamosdosspan:
<p>En un <span class="nota">lugar de la Mancha<span class="tip">lugar: no
con el valor de sitio o paraje, sino como localidad y en especial
pequea entidad de poblacin, en nuestro caso situada concretamente en
el Campo de Montiel (I, 2, 47, y 7,93), a caballo de las actuales
provincias de Ciudad Real y Albacete. Seguramente por azar, la frase
coincide con el verso de un romance nuevo.</span></span>, de cuyo nombre
Yenel14unspandentrodeuna:
<a href="http://www.yahoo.es/">Yahoo <span class="txtayuda">1.219
pginas<br/>0,5%</span></a>
Eltextoqueaparecerenlanotasemarcacomoinvisibleusandola
propiedaddisplay:
span.nota span.tip {
display: none;
font-size: .6em;
font-weight: normal;
color: black;
}
Pgina 74
span.nota:hover span.tip{
display: block;
/* La nota ir siempre en la parte inferior de la pantalla */
position: fixed;
width: 96%;
margin: 1%;
padding: 1%;
bottom: 0;
left: 0;
background: #cde;
border: 1px solid gray;
}
Enelcasoanteriorlanotairsiempreenlaparteinferiordelapantalla
(ejemplo13)yporesousamoslapropiedadposition:fixed.bottomyleft
marcaranellugardeaparicin.Enelejemplo14quebuscamosuna
posicindiferenteparacadanotausamosposition:absolute.
ul.menu li a:hover span.txtayuda {
display: block;
width: 10em;
position: absolute;
top: 0;
left: 100%;
margin: -1em 0 0 1em;
padding: 1em;
background: #cde;
border: 1px solid gray;
}
Ejemplos15y16Mens
De los tooltips a los mens slo hay un pequeo paso. De hecho el anterior
ejemplo14podraconsiderarseyaunpequeomenmuyprimitivo
Pgina 75
Pgina 76
Ejemplo17Esquinasredondeadas
ExistenmuchostrucospararealizaresquinasredondeadasconHTML4yCSS2.El
mssencilloconsisteenusarimgenesemplazadasdentrodeunacajamediante
la propiedad position con valor absolute. La caja debera de tener un borde
slidoylaimagendelaesquinadeberadeestarespecialmentepreparadapara
integrarseconelcolordelfondodelapginaydelacajay,adems,morder
el borde de la caja en la que se encuentra para hacer desaparecer
parcialmentelasesquinasdelbordecuadradohabitualdeesta.
Con HTML5 tenemos otros mecanismos ms fciles para hacer bordes
redondeadossimples,perosibuscamosefectosmsllamativos(comoalgunode
losqueacompaanaesteejemplo)tendremosqueseguirusandoestemtodou
otrosimilar:
Ejemplo18Sprites
La carga de una pgina web implica que cada elemento individual que la
compone se recuepera mediante una peticin al servidor. En pginas con
muchasimgenespequeasenlasquequeremosunacargaexcepcionalmente
rpidasesueleusaruntrucoparamejorarelrendimientoqueconsisteenagrupar
variasdeestasimgenesenunaslayseleccionarencadamomentoeltrozode
imagen que queremos ver mediante la propiedad backgroundposition. Se
conoceaestatcnicacomodeSpritesyenelsiguienteejemplopodemosver
comousarla.
Pgina 77
ElejemploqueseacompaausadostiposdeSprites:unoconslotresimgenes
y otro, ms complejo, con seis en el que el desplazamiento de la propiedad
backgroundposition implica moverse tanto en el eje horizontal como en el
verticaldelaimagen.
Ejemplo19Solapas
El efecto de solapas, ampliamente usado en la web actual, es similar en su
construccin inicalal de un men. El truco consiste en mantenemos una caja
diferente por cada contenido y alternar entre su visualizacin o no, segn
corresponda,mediantelapropiedad display ylosvaloresdelamisma block o
none,respectivamente.
Pgina 78
Ejemplos20y21Contorneos
Elcontorneodeimgenes,algotpicodelasrevistas,esunefectosencillopero
laborioso. La forma ms sencilla de hacerlo consiste, bsicamente, en
diseccionarlaimagenacontornearenrodajasdemsomenosalto(segnlo
finoquequeramosqueseaelefecto)yanchovariabley,simplemente,dejarque
lascajasdenuestrotextoseapoyenlateralmenteendichasimgenes,bienala
izquierda,aladerechaoaamboslados.
Pgina 79
Pgina 80
8.FORMULARIOSYJAVASCRIPT
8.1.FUNCIONESYEMPLAZAMIENTODELCDIGOJAVASCRIPT
AligualqueocurraconlosCSS,elcdigoJavascriptsepuedesituardediferentes
formasdentrodelHTML.Laformamsdirectaeslaquehemosvistoenelejemplo
anterior:directamenteenelpuntodelcuerpodeldocumentodondequeremos
queseejecute.Perosilasfuncionessonmscomplejasquemostrarunmensajeo
queremos reutilizarlas debemos de crear funciones y emplazarlas en una
ubicacindiferente.
8.1.1Funciones
Unafuncinesunapiezadecdigoquepuedeinvocarsedesdedistintospuntos
y en diferentes momentos. El cdigo que vimos en el ejemplo anterior slo se
ejecutacuandoelnavegadorestdibujandolapginayenelmomentoenque
leeeltrozodecdigoquelacontiene.Hagamosalgunoscambios:
Jos Mara Morales Vzquez
Pgina 81
Pgina 82
8.2.FORMULARIOS
Elelementoquesirveparaidentificarunformulariollevalaetiquetaform.Dentro
deltendremosdiferenteselementosporcadaobjetoquequeramosmostraren
elmismo.Veamoselejemploelformulariomssencillo:
Pgina 83
8.2.1.Cajadeedicindetexto(type=text)
Comosunombreindica,sirveparaintroducirtextoconlarestriccindequeeste
nopuedetenermsdeunalnea.
<input type="text" name="nombre" size="20" maxlength="40"
value= "Escribe aqu tu nombre" />
El argumento size indica el tamao en caracteres de la caja mientras que
maxlength indica la longitud mxima que puede introducirse. value sirve para
introducir un valor por defecto que aparecer al cargar la pgina (en caso
Jos Mara Morales Vzquez
Pgina 84
8.2.2Cajadeedicindecontraseas(type=password)
Similaralaanteriorperoenestecasoloqueescribamossobreellaaparecer
camufladomediantepuntos,asteriscosoalgosimilar(segnelnavegador).Los
argumentosquepodemosusartambinsonlosmismosqueenelanterior.
<input type="password" name="pwd" size="12" maxlength="12" />
8.2.3.Etiquetas(label)
Elelementolabelsirveparaasociaruncampodetextoconunobjetodeedicin
de forma que, por ejemplo, si el usuario pulsa con el ratn sobre la etiqueta
asociadaauncampodeedicindetextoelcursosapareceraenmodoedicin
enelinteriordedichocampocomosielusuariohubierapulsadoenl.Setrata,
portanto,deunaformadeextenderlasuperficiededichosobjetosdeformaque
resultemscmodolacumplimentacindelosformularios.
Tenemos dos formasdiferentesderealizarestaasociacin. La primeradeellas
consistesimplementeenanidarelelementodeedicindentrodelcontenidodel
elementolabel:
<label>Direccin:<br/><input type="text" name="direccion"
size="80" maxlength="120" /></label>
Elsegundomtodoconsisteenidentificarambosobjetosmedianteelvalordel
argumento for delelemento label yelvalordelargumento id delelementode
edicin:
<label for=txtdir>Direccin:</label><br/><input type="text"
name="direccion" size="80" maxlength="120" id=txtdir />
ATENCIN. Siusamoselprimerodelosmtodoshayquetenermuchocuidado
porquelosestilosqueapliquemosalelemento label seextenderantambinal
objetodeedicin.
8.2.4RadioButtons(type=radio)
Losradiobuttonssonloscaractersticosobjetosredondosparaelegirentrevarias
opciones alternativas pero con la restriccin de que slo puede seleccionarse
unodeellos,deformaquemarcarcualquieraimplicaqueseeliminalaseleccin
delquehubiramosseleccionadopreviamente.Adems,deberadehaberuna
Jos Mara Morales Vzquez
Pgina 85
8.2.5Checkboxes(type=checkbox)
Loscheckboxessonmuysimilaresalosradiobutons.Sediferencianbsicamente
en dos aspectos: visualmenteson cuadrados y desde el punto de vistalgico
deberandepermitir,siaslodeseamos,laeleccindemsdeunaopcindentro
deunmismogrupodeobjetos.Adems,deberadepermitirnosnoelegirninguno
deellos.
<input type="checkbox" name="vehiculo" value="motocicleta"
disabled="disabled" /> Motocicleta<br/>
<input type="checkbox" name="vehiculo" value="moto"
checked="checked" /> Moto<br/>
<input type="checkbox" name="vehiculo" value="coche" />
Coche<br/>
<input type="checkbox" name="vehiculo" value="camin" />
Camin<br/>
<input type="checkbox" name="vehiculo" value="tractor" />
Tractor</p>
Todolodichoencuantoalosargumentosenlosradioesvlidotambinpara
estos.
8.2.6.Agrupacindeobjetos
Podemosagruparvisualmentediferentesobjetosdenuestroformulariomediante
elelementofieldset:
<fieldset>
<legend>Informacin personal</legend>
...
</fieldset>
Pgina 86
8.2.7Cajadeedicindetextodemltipleslneas
Elelementotextareanoscreaunacajadeedicinqueadmitemsdeunalnea.
Lasdimensionesinicialesdelamismaseasignanmediantelosargumentosrowsy
cols.
<textarea name="comentarios" rows="8" cols="50" >Escribe tus
comentarios...</textarea>
No existe forma de limitar desde HTML el nmero de caracteres mximo que
admitelacaja(estosecontrolahabitualmentemediantejavascript).Elcontenido
delelemento,siexiste,serelvalorinicialquecontengalacajadeedicin.
Todoslosnavegadoresmodernospermitencambiareltamaodeestascajasde
texto visualmente mediante un control que aparece en su esquina inferior
derecha.Lamejorformadeevitaresto,siaslodeseamos,esenlosCSS.
8.2.8Cajadeseleccindeficheros
Nosabreunaventanadedilogo(cuyoaspectodependedelnavegadoryel
sistemaoperativo)quenospermiteseleccionarunficherodenuestrodiscoduro
<label>Fotografa:<br/><input type="file"
name="fichero"/></label>
Norealizaningntipodevalidacindelaeleccin.Esonoscorrespondehacerlo
anosotrosposteriormentemediantejavascriptoenelservidorcuandoenviemos
losdatos.
8.2.9Cajasdeseleccin(ComboboxesyListboxes)
Existendoscajasdeseleccintpicasenentornosgrficos:loscomboboxesson
cajascondistintasopcionesenlasqueslopodemosseleccionarunadeellas.
Adems,aunquepodemosdesplegarlaenelmomentodelaseleccin,cuando
elegimos la lista se cierra y slo permanece visible nuestra eleccin. Adems,
debera de ser obligatorio hacer al menos una eleccin. Los listboxes, por el
contrario, nos suelen permitir elegir ms de una opcin simultaneamente (o
ninguna)ysiempresuelenestartotaloparcialmenteabiertos.
EnHTMLambosseimplementamedianteelelementoselectysonlosargumentos
que usemos los que hacen que se comporte de una u otra forma. Veamos
inicialmenteuncombobox:
<select name="oficina" >
<option>Madrid</option>
<option>Sevilla</option>
<option selected="selected" >Alcorcn</option>
<option>Lisboa</option>
<option>Burdeos</option>
</select>
Unlistboxseradeestaforma:
Jos Mara Morales Vzquez
Pgina 87
8.2.10Botones
Todoformulariodeberadetener,almenos,unbotnquesirvaparaindicarque
yahemosterminadodecumplimentarloyquedapasoalprocesadoy/oenvo
delosdatosquehemosrellenado.Estebotndebedeestaridentificadoconel
argumento type y el valor submit y el comportamiento normal al pulsarlo es
invocar el enlace que hemos puesto como valor del argumento action del
elementoform.Dichoesto,tenemosdosformasdeimplementarestebotn:
<input type="submit" value="Enviar" />
<button type="submit">Enviar</button>
Amboselementossecomportaranigualyharanlomismo.Ladiferenciaesten
que el texto que aparece en el primero es el que aparece como valor del
argumento value (o un texto por defecto que pone el navegador si ese
argumentonoaparece)yque,portanto,nopodemosaplicarleestilosmientras
que en el segundo botn el texto es el contenido del elemento y podemos
aplicarestiloscontotallibertado,incluso,ponerunaimagen:
Pgina 88
8.2.11.NuevoselementosenHTML5
Los elementos aqu presentados son, por as decirlo, los clsicos que pueden
usarseconlaversin4deHTML.Perounadelascosasquemshapotenciado
HTML5sonlosformularios apareciendomuchos elementos tiles ymuyvistosos.
Puedesecharleunvistazoenelapartadoenelquesetrataestanuevaversin
dellenguajealfinaldeestedocumento.
8.3.CSSENLOSELEMENTOSDELOSFORMULARIOS
Pgina 89
Pgina 90
8.4.VALIDACINDEFORMULARIOSMEDIANTEJAVASCRIPT
8.4.1.Mtodos,eventosypropiedades
Sinmeternosendemasiadaprofundidad,diremosqueloseventossonacciones
queocurrensobreloselementosdenuestroformulario,generalmentedebidoala
accindelusuario:rellenarunacajadeedicindetexto,pulsarconelratn,etc.
Los eventos vienen predeterminados segn el elemento del formulario y no
podemosaadirningunonuevo.
Losmtodossonlasfuncionesqueseinvocanalproducirseloseventos.Existenya
algunosmtodospordefectoquevienenpredefinidosconlosformulariospero
nosotrossiempretendremoslaposibilidaddecrearotrosnuevosomodificarlosya
existentes.
Porltimo,laspropiedadesson,porreglageneral(aunquenosiempre),losvalores
delosargumentosconqueestnconstruidosloselementosdelformularioylos
valores de los mismos introducidos o elegidos por el usuario y que nosotros
podremosmanipulardesdenuestrosmtodos.
8.4.2.Eventosdelelementoform
ElelementoformrespondeadoseventosdenominadosonSubmityonResetyque
se corresponden con la pulsacin de los botones de submit y/o reset
respectivamente. Por defecto los mtodos que se invocan en cada uno de
ambos casos reciben los nombres de submit y reset, pero nosotros podemos
introducir nuestros propios mtodos. Esto lo hacemos introduciendo nuevos
argumentosenelelementoform.As,porejemplo:
<form name="form2ASI" onSubmit="alert('Enviando el
formulario')" onReset="alert('Limpiando el formulario')"
method="post" action="respuesta.html">
</form>
IMPORTANTE: como ves, en el interior de las funciones alert se usan comillas
simples.Estoesparanoconfundiralnavegadorconlascomillasdoblesquese
usanparaelvalordelargumento.
8.4.3.Eventosdelosbotones
Losbotones,yaseandeltipoquesean,tienenalmenostreseventos: onClick,
onFocus(cuandoobtienenel'foco'delaaplicacin)yonBlur(cuandolopierden)
peroporreglageneralelquenosinteresausarescasisiempre onClick,evento
Jos Mara Morales Vzquez
Pgina 91
8.4.4.DOM,Modelodeobjetosdeldocumento
ElllamadoDOMeslainterfazquenosvaapermitirinteractuarconlatercerapata
queannohemosmencionado:laspropiedades.Setrata,nimsnimenos,de
una nomenclatura especial (que a los programadores habituados a la
orientacin a objetos le resultar familiar) que nos va a permitir identificar los
elementosdelformularioysuspropiedadesypoderleerlasymodificarlas.
ElDOMnosvaapermitirdarlenombrealosobjetosdelformulariodeformamuy
sencilla.Vamosaverunejemplomuysencillo.Imaginemosestebotn:
<input type="submit" value="Enviar" onClick="enviar()"
name="botonenv" disabled="disabled" />
<input type="reset" value="Limpiar"
onClick="limpiar(this.form)" />
Hemosvistoyaquealasfuncionesjavascriptselespuedenpasarparmetros.
this.formesunareferenciaalformularioenelqueapareceelelementodesdeel
quehacemoslareferencia.Lafuncinlimpiarseraas:
function limpiar(formulario){
alert('Haz pulsado el botn de limpiar...');
formulario.botonenv.disabled=true;
}
Siquisieramoshacerlareferenciaalformulariodesdeeleventoform,usaramos
simplementethis:
<form name="form2ASI" onSubmit=enviar(this)
action="respuesta.html">
...
</form>
Apartirdelparametroquelehemosenviadoalafuncinidentificamosalbotn
deenviaratravsdelvalordesuargumento name yalapropiedad disabled
mediante su nombre. De esta forma conseguimos variar su valor y hacer que
cuandoelformularioestlimpioelbotndeEnviaraparezcadeshabilitado.
ExistenotrasreferenciastilesquepodemoshaceratravsdeDOM.Porejemplo,
Jos Mara Morales Vzquez
Pgina 92
8.4.5.Validacindelformulario
Laestrategiahabitualaseguiralahoradevalidadunformulariosigueunodelos
dospatronessiguientes:
Validamosunoaunoloselementosdelformulariomientrasqueserellenan
(respondiendoaloseventosonKeyDown,onKeyUp,onKeyPress,onChange
y/oonBlur)
Validamostodosloselementosdelformulariounavezquesehapulsadoel
botndeenviarrespondiendoaleventoonSubmit
Avecessepuedeusarunaestrategiacombinadadeambos.
Elprimermtodoeselmssencillo.Veamosunejemplomuysimpleenelquela
validacin consiste slo en comprobar que un campo no se ha quedado sin
rellenar.Elformularioseraeste:
<form name="form2ASI" onSubmit="return enviar(this)"
action="respuesta.html">
<p><label>Nombre: <input type="text" name="cajanombre"
/></label></p>
<p><input type="submit" value="Enviar" name="botonenv" />
<input type="reset" value="Limpiar" /></p>
</form>
Lafuncinjavascriptquerealizalavalidacinseraalgoas:
function enviar(formulario){
alert('Haz pulsado el botn de enviar...');
if(formulario.cajanombre.value.length == 0){
alert('No puedes dejar este campo en blanco');
validacionOK = false;
Jos Mara Morales Vzquez
Pgina 93
Pgina 94
8.4.6.ListadeeventosdeJavascriptdisponiblesenlosformularios
A continuacin tienes una tabla con los eventos que podemos usar en un
formulario,loselementosalosqueafectanyunabrevedescripcindelosmismos.
Pgina 95
Descripcin
Elementos
onBlur
button, checkbox,
Cuando un elemento pierde
password, radio, select,
el foco
text, textarea, file
onChange
onClick
onFocus
Cuando el elemento
adquiere el foco
onKeyDown
onKeyPress
onKeyUp
onMouseOut
onMouseOver
onReset
form
onSelect
Cuando se selecciona un
texto con el ratn
text, password,textarea
onSubmit
form
Laspropiedadesfundamentalesquepodemosalteraroconsultarmediante
cdigojavascriptdecadaunodeloselementosdeunformulariosonlas
siguientes:
Pgina 96
Elemento
form
button
text y
password
textarea
name,
value,
disabled,
maxlength, cols, rows
radio y
checkbox
select
options
value, text
file
readonly,
size,
length,
8.5.JAVASCRIPTFUERADELOSFORMULARIOS
AunqueyahemosdichoqueJavascript nacicomounaformadevalidarde
formarpidalosformularios,suusohoytransciendedeestoypodemoshaceruna
pgina que utilice javascript al margen de los formularios o no slo con ellos.
Veremosalgunosejemplossencillosdeusoenesteltimopunto
8.5.1.Alertyotrasventanasdeconfirmacinoentradadedatos
Hemos usado durante todo el captulo la funcin alert que nos muestra una
ventanaconuntextoyunbotndeAceptar.Estafuncinparalizalaejecucin
hastaqueelusuarionopulsaelnicobotnqueapareceenella.
PeroJavascriptdisponedeotrosdostiposdeventanasmstilessegnparaque
lasnecesitemos.Vamosaverlas.
Laventanaconfirmmuestradosbotones(OKyCancelar)ydevuelvelaeleccin
delusuarioparaqueactuemosenconsecuenciacomounavariablebooleana:
truesihemospulsadoOKyfalsesihemospulsadoCancel:
respuesta = confirm("Pulsa un botn");
if (respuesta == true){
alert("Haz pulsado el botn de OK");
}
else{
alert("Haz pulsado el botn de Cancel");
}
Laventanapromptnosmuestraunacajadetextoydevuelveelvalorquehemos
escritoenella.Adems,muestradosbotonesydevuelveelvalor null sihemos
salidopulsandoelbotndeCancelarenlugardeldeOK:
texto = prompt("Escribe tu nombre, por favor");
if(texto == null){
alert("Haz pulsado el botn de cancelar");
Jos Mara Morales Vzquez
Pgina 97
8.5.2.ListadeeventosdeJavascriptdisponiblesdeformagenrica
Loseventosquepodemoscapturarenunapginawebyasociarlosaunmtodo
javascriptyquenotienenrelacindirectaconloselementosdeunformularioson
estos:
Evento
Descripcin
onAbort
onDblClick
onLoad
onMouseDown
onMosueMove
onMove
Se mueve la ventana
onResize
Adems, alguno de los eventos que se usan en los formularios pueden tener
tambinaplicacinfueradeellos.
Veamosuntrozodecdigoconejemplossencillosdeaplicacin:
<body onLoad="alert('La pgina se ha cargado completamente');"
onResize="alert('Haz cambiado el tamao de la pgina');">
<h1 onMouseOver="alert('Haz pasado el ratn sobre el
titular');" >Titular de la pgina</h1>
<p onClick="alert('Haz hecho click en el primer
prrafo');" >Primer prrafo de texto de la pgina</p>
<p onDblClick="alert('Haz hecho doble click en el primer
prrafo');" >Segundo prrafo de texto de la pgina</p>
</body>
Enelejemplo8queacompaaaestetextotienesunejemplomscomplicado
dondesevecomocambiarelestiloCSSdeunelementodelapginaatravsde
Pgina 98
8.5.3.Losobjetosdocumentywindow
ElmodeloDOMnosproporcionadosobjetosdenominados document y window
con una amplia coleccin de propiedades y atributos que nos permiten
interactuar de forma fcil con caractersticas interesantes del navegador y el
documentoHTML.
Porejemplo,elobjetowindownospermiteobtenerlasdimensionesenpxelesde
la superficie til del navegador. La siguiente funcin nos muestra estas
dimensionesenunaventanadealerta:
function muestraDimensiones(){
alert("Ancho: " + window.innerWidth + " pxeles.\nAlto: "
+ window.innerHeight + " pxeles.");
}
Tienesunabuenareferenciadelasposibilidadesqueteofreceelobjetowindow
aqu:
http://www.w3schools.com/jsref/obj_window.asp
La principal utilidad del objeto document es que nos permite obtener una
referencia acualquier elemento HTML de la pgina para interactuar con l a
travsdelvalordesuatributo id que,comoyasabes,deberadesernico.Lo
hacemosmediantelafuncingetElementById(). Lasiguientefuncinobtienela
referenciadeunobjetoHTMLcuyovalordelatributoides caja1 ymodificasu
estilo por uno llamado estilo2. Dicho estilo debera de existir en los CSS del
documentoyseraplicablealobjetoencuestin(puedesconsultarelejemplo8
queacompaaaestedocumentoparaverelcdigocompleto)
function cambiar_estilo(){
objeto = document.getElementById("caja1");
objeto.className="estilo2";
}
Puedo,incluso,cambiarelcontenidodeunelementoatravsdelapropiedad
innerHTML:
function cambiaTitular1(titular){
titular.innerHTML="Nuevo Texto para el Titular";
}
Paravermspropiedadesdelobjetodocumentpuedesconsultarestapgina:
http://www.w3schools.com/jsref/dom_obj_document.asp
Ysiquieresampliarconocimientosovermsejemplossobrecualquierotracosa
de javascript, aqu tienes una completa referencia de todas las funciones
disponibles:
http://www.w3schools.com/jsref/
Pgina 99
9.HTML5
HTML5eslanuevarevisindellenguajeHTMLdefinidoporlaW3C.Seencuentra
anenfasebetaexperimentaly,portanto,hayquetratarconmuchocuidadola
introduccin de sus nuevas caractersticas puesto que muchos navegadores,
sobretodosisonrelativamenteantiguos,nocontemplananestoscambiosono
lohacenensutotalidad.Unadelasgrandesnovedadesesque,porprimeravez,
ladefinicindeHTMLyXHTMLparaestanuevaversin(HTML5yXHTML5)sehan
desarrolladoenparalelo.XHTML5es,bsicamente,HTML5conlasrestriccionesde
sintaxisqueyaplanteamoscuandopresentamosXHTML1
9.1.ESTRUCTURADEUNDOCUMENTOHTML5OXHTML5
Laestructuradeundocumentoconhtml5oxhtml5esmuchomssencillaqueen
versionesanterioresy,adems,idnticaparaambos:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" href="estilos.css" media="all" />
<title>Html5</title>
</head>
<body>
</body>
</html>
Observaqueyanoesnecesariousarelargumentotypeenlasetiquetaslinkque
declaranelusodehojasdeestilo(tampocoenlasquedeclaranunficherocon
funcionesjavascript).TampocoexistendiferenciasenlosargumentosentreHTML5
y XHTML5. De hecho, podemos escribir documentos denominados polglotas
quepuedanserinterpretadoscomounoocomootroindistintamenteysinningn
problemaobservandolassiguientescondiciones:
ElDOCTYPEnoesobligatorioenXHTMLperosienHTML,asquedebemos
deponerlo.Adems,HTMLnoessensibleamaysculasominsculaspero
XHTMLsi,asquehayqueponerlotalycomoapareceenelejemplode
aquarriba.
DebemosdeusarlasintaxisdeHTML5,yobservartodaslasrestriccionesde
XHTML5queyahabamosvisto,asaber:
Loselementosdebendecerrarsesiempre
Loselementossincontenidodebendeusarlasintaxisdeautocerrado
siempre.
Laaperturaycierredeloselementosanidadosnodebedesolaparse.
Losvaloresdelosatributosdebendeirsiempreentrecomillassimples
odobles
Los nombres de etiquetas y atributos deben de ir siempre en
minsculas
Jos Mara Morales Vzquez
Pgina 100
9.2.CAMBIOSENLASETIQUETAS
LoprimeroaresearenHTML5,unlenguajedemarcasbasadoenunconjuntode
etiquetas,deberadeserloscambiossufridosenelconjuntodeestas.Aparecen
25nuevasetiquetas,hayligeroscambiosen7delasantiguasydesaparecen16.
Etiquetaseliminadas
Lasetiquetaseliminadas,delascualesnosotrosnodeberamosdepreocuparnos
demasiadoporqueunaslashemosevitadoexpresamentedesdeelprincipiode
estecursoyotrasnisiquieralashemospresentado,sonlassiguientes:
acronym,applet,basefont,big,center,dir,font,frame,frameset,
isindex,noframes,s,strike,tt,u,xmp
Nuevasetiquetasparalaorganizacindeldocumento.
Dentro de las nuevas etiquetas, el primer grupo que nos interesa ver es el de
aquellas que introducen una mayor informacin semntica a la estructura del
documento.Setratade header,nav,footer,aside,section y article.Setratade
etiquetas que identifican las secciones ms habituales que existen en la gran
mayora de las pginas web y que hasta ahora identificbamos usando la
etiquetadivenfuncinconalgnidoclass,porejempo<divid=footer>o<div
class=article>.
Estasetiquetasnohacennadaespecialynointroducenningunainformacinde
estilo. Su nico propsito es proporcionar informacin semntica a nuestras
pginasdecara,sobretodo,afacilitarsulecturaylavaloracindelcontenido
porpartedelosbuscadores.Pensemos,porejemplo,enunapginawebquese
tituleCarnicerasdecalidadenSevillayotraencuyopidepginaaparezca
elnombredesuautor:JavierCarniceraSevilla.Googlenodeberadetratara
ambasalmismonivelcuandoalguienrealiceunabsquedadecarnicerasen
Sevilla.Estasetiquetasleproporcionan,alyalrestodebuscadores,unaforma
claradevalorarelcontenidodeunawebsegndondesepresentecadatexto.
SolventandolosproblemasdeversionesantiguasdeInternetExplorer
CuandocontemplamoselusodeversionesantiguasdelMicrosoftInternetExplorer
podemostenerunproblemaconestas etiquetas.Elresto denavegadoresnos
permiteinventarnosetiquetasyaplicarlesestilos,peroExplorersinoreconoce
unaetiquetacomovlidalaignora.EstohacequeunaversinantiguadeFirefox
nos permita aplicar estilos a la etiqueta header, aunque no la conozca, pero
Explorer no. Para solucionar esto usamos dos recursos: la posibilidad de incluir
comentarioscondicionalesenInternetExplorerylaslibrerashtml5shiv.
Loscomentarioscondicionalestienenestaforma:
<!--[if IE]>
<p>Esto slo se ver en un Internet Explorer</p>
<![endif]-->
Pgina 101
menores a la 9</p>
menores o iguales a la 7</p>
mayores a la 6</p>
mayores o iguales a la 8</p>
O,incluso,darleotravueltadetuercaalasintaxisymostrarcdigoqueslose
verennavegadoresquenoseanelInternetExplorer:
<!--[if !IE]> -->
<p>Esto slo se ver si no ests con un Explorer</p>
<!-- <![endif]-->
DeestaformayapodemosmostrarunasetiquetasenExploreryotrasenotros
navegadoresdeformarelativamentefcil,peroexisteunmtodomsrpidoy
limpio de solucionar el problema de las nuevas etiquetas de organizacin: la
librerahtml5shivnospermitenqueelExplorerapliqueestilosaetiquetasqueno
conoce.Paraquefuncionenbastaconincluirlasenlaseccinheaddenuestra
weby,siqueremos,podemosincluirlasconuncomentariocondicionalcomolos
vistosparaqueslosecarguencuandorealmentelasnecesitamos:
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
9.3.MEJORASENLOSFORMULARIOS:NUEVOSTIPOSDEINPUT
TalvezunadelasmejorasmssignificativassealagranriquezaqueHTML5aade
alosformulariosconobjetodequepodamosconstruirconfacilidadaplicaciones
web. Son13losnuevostiposdisponiblesparalaetiquetainputademsdealgn
argumentoextraaadidoalosyaexistentes.
Elargumentorequired,vlidoparacasitodoslostiposdeobjetospermite,marcar
comoobligatoriouncampodeformaquenosepuedaejecutarlafuncinsubmit
si no est completo y dando, adems, un efecto visualque cada navegador
podrpersonalizar.
Elargumentoautofocus,quedeberadeusarsesloenunobjetoporformulario,
seleccionaelcampodelmismoquetomarelfocodeformaautomticauna
Jos Mara Morales Vzquez
Pgina 102
Laidentificacinentreelinputyeldatalistsehaceatravsdelosargumentoslist
eidcuyosvaloresdebendeseriguales.
Porltimo,elargumento pattern permiteespecificarunaexpresinregularque
debe de cumplir lo que pongamos en el campo para que el formulario sea
validado.Veamosunpardeejemplos:
<input type="text" name="codpostal" pattern="[0-9]{5}" />
<input type="text" name="nif" pattern="[0-9]{8}[A-Za-z]{1}" />
Enelprimeroelpatrnespecificaqueelcamposlovalidarsiconstadecinco
nmerosseguidossinningncaracteradicional.Enelsegundocaso,elcampo
debedeserrellenadoconochonmerosseguidosdeunaletra,yaseaestaen
maysculasominsculas.Paraaprendermssobrecomoconstruirexpresiones
regularesmscomplejaspuedesconsultarelsiguienteenlace:
http://www.w3schools.com/jsref/jsref_obj_regexp.asp
Yunanotaadicionalacercadelospatrones:sielcamponoestmarcadocomo
requeridomedianteelargumentoantesvistoseraposibledejarloenblancoyeso
nocumpliraconelpatrnespecificado.Asquesisequiereobligarnoolvides
tambinesteargumento.
Los tipos nuevos introducidos a los input son email, url, number, date, month,
Jos Mara Morales Vzquez
Pgina 103
<!funcionanenoperayenchrome>
<input type="number" name="edad" min="18" max="100" step="1" value="18" />
<input name="cursor" name="unidades" type="range" min="3" max="12"
value="6" step="3" />
<!funcionansloenopera>
<input
<input
<input
<input
<input
<input
<input
<!Noimplementadosanporningnnavegador>
<input type="search" name="busqueda" /> <input type="button"
value="Buscar" />
<input type="tel" name="telefono" />
Intimamenterelacionadoconlosformularios,aunquemuchomsuniversalysin
dependencia directa con estos, tenemos el nuevo agumento contenteditable
que convierte, cuando su valor es true, a casi cualquier elemento, ya sea de
bloqueodelinea,eneditabledeformadirectaporelusuario:
<h1 contenteditable="true">Titular editable</h1>
<p contenteditable="true">Este prrafo tambin es editable</p>
<div contenteditable="true">Y este bloque div lo mismo</div>
<p>Pero, incluso <strong contenteditable="true">estas negritas</strong>
este <span contenteditable="true">texto con un span</span> que son
elementos de lnea pueden ser editables</p>
9.4.MODERNIZR
Pgina 104
Dosindicacionesenestepaso:enprimerlugarelnombredelalibrerapuede
cambiarsegnloquenosdescarguemosdelaweb.Revsaloantesdeincluirloen
tu proyecto. En segundo lugar, la carga de la librera de modernizr debe de
hacerse antes de la carga de las hojas de estilo si queremos hacer
comprobacionestambinenestas.
Ahora ya lo nico que tenemos que hacer es, desde nuestro documento,
interrogar a Modernizr si el navegador es capaz de interpretar determinadas
etiquetas y/o argumentos y actuar en consecuencia. Podemos ver una
demostracinsencillaintroduciendoestecdigoenelbodydenuestroejemplo
anterior:
<script>
if (Modernizr.input.required) {
alert("Tu navegador soporta el atributo required");
}
else {
alert("Tu navegador no soporta el atributo required");
}
if (Modernizr.inputtypes.range) {
alert("Tu navegador soporta el input type=range");
}
else {
alert("Tu navegador no soporta el input type=range");
}
</script>
Pgina 105
Otraposibilidadescargarunahojadeestilosdiferentedeformacondicionalalos
elementosquenuestronavegadorsoporteusandolafuncinloaddeModernizr.
Acontinuacinvemosunejemplosencillo:
<script>
Modernizr.load({
test: Modernizr.input.placeholder && Modernizr.inputtypes.date,
yep : 'estilos1.css',
nope: 'estilos2.css'
});
</script>
EnelejemploanteriortesteamosdoselementosHTML5(eltipodeinputdateyel
argumentoplaceholder)yenfuncindequeestnsoportados,ono,cargamos
una hoja de estilos diferente. Lgicamente, se trata de una funcin que
encontraremosmstilalahoradeprobarelsoportedeelementosdeCSS3,
pero puesto que an no los hemos tocado lo vemos aqu y ms adelante
haremosalgnotroejemplo.
Dosapuntesimportantessobreesto.LafuncinloaddeModernizrnovieneenla
versindedesarrollodelaliberay,portanto,parausarladebemosdegenerar
una librera desde la opcin de produccin incluyendo esta utilidad (est
marcada por defecto en el apartado de extras) y todas las comprobaciones
Pgina 106
9.5.ETIQUETASMULTIMEDIA
HTML5incluyedosetiquetas,audioyvideoparafacilitarlainterpretacindirecta
por parte del navegador de contenido multimedia y embed para incrustar
archivosenformatoflash.
Audio
La etiquetaaudio nos permiteinsertarun archivo deaudio en nuestrapgina
websinnecesidaddeusarflashniunplugindejavascriptcomohacamoshasta
ahora.Serelpropionavegadorelquerealicelareproduccinydependemos
tantodequelaetiquetaestimplementadacomodeloscodecsdeaudioque
seacapazdeinterpretar.Elusobsicoeseste:
<audio src=archivo_audio>Su navegador no soporta la etiqueta
audio</audio>
autoplay=autoplay
>Su
Pgina 107
Formatosdeaudio
Son cuatro los codecs de audio diferente a los que, en la actualidad, se da
soporte(deformairregular)enlosdiferentesnavegadoresqueimplementanesta
etiqueta:ogg,mp3,wavyacc(m4a).Ningnnavegadorlosimplementatodos
niningunodeellosesimplementadoportodoslosnavegadores.Almenosnopor
elmomento.Parasolucionarestotenemoslaetiqueta source quenospermite
especificardiferentesarchivosdeformaqueelnavegadortengaeleccin:
<audio controls="controls" >
<source src="finaldetrayecto.ogg" />
<source src="finaldetrayecto.mp3" />
<source src="finaldetrayecto.wav" />
Etiqueta no soportada
</audio>
Cuandoelnavegadorproceseestasetiquetassequedarconelprimerarchivo
que sea capaz de reproducir. Por tanto el orden en que aparezcan es
importante.Sinosotrospreferimosqueunnavegadorquepuedareproducirtanto
el .ogg como el .mp3 se quede con el primero, este debera de aparecer
tambin por delante. La etiqueta source tiene un parametro opcional para
especificar el tipo de archivo y el codec que usa el mismo, por ejemplo
type="audio/mpeg"otype="audio/ogg;codecs=vorbis"
Vdeo
Laetiquetavideo,suusoyproblemticaesmuysimilaraladeaudio.Elcasoms
sencillodeusoseraeste:
<video
src="archivo_video">
video</video>
Su
navegador
no
soporta
la
etiqueta
Enestecasoalusarlanuevaetiquetasinespecificarautoplaynicontrolssiquese
reserva espacio para el primer fotograma del mismo pero la nica forma de
reproducirloserapulsandoconelbotnderechoyusandoelmencontextual
quenossueleofrecerelnavegador.Elatributo src siguesiendo,pues,el nico
obligatorio.Losparmetros controls,autoplay, loop y preload tambinexisteny
su uso es idntico a los vistos para la etiqueta audio. Los nuevos parmetros
disponiblesparalaetiquetavideosonlossiguientes:
widthyheightnospermitencontrolarlasdimensionesdevisualizacindelvdeo.Si
nousamosningunodeestosparmetroselnavegadornosmostrarelvdeocon
susdimensionesoriginales.Siespecificamosunocualquieradeambos,peronoel
otro, se ajustar el no especificado para respetar la proporcionalidad de la
imagen.
Elatributoposternospermitedefinirunaimagenestticaqueaparecermientras
queelvdeosecargaohastaqueelusuariodecidecomenzarsureproduccin
pulsandoelbotndeplay.Sinoseespecificaaparecerelprimerfotogramadel
vdeo.Unejemploconalgunosdeestosargumentos:
Jos Mara Morales Vzquez
Pgina 108
<body>
<video src="video_ogv.ogv" controls="controls" width="700"
poster="thatsallfolk.jpg"> Su navegador no soporta la etiqueta
video</video>
</body>
Formatosdevdeo
Conlosformatosdevdeotenemoselmismoproblemaqueconlosdeaudio:
ningnnavegadorimplementatodoslosreconocidosniexisteningunodeellos
que sea soportado por todos los navegadores. Ogv, H.264, y WebM son las
posibilidadesconlasquejugamosenestecaso.Ogveselmslibre,equivalente
alformatooggdeaudio.H.264yWebMsondosformatospropietarios,elprimero
empujadoporAppleyelsegundopropiedaddeGoogle.Laetiquetasourcese
puedeusartambinenestecasoparaproporcionaralternativasalnavegador:
<video controls="controls" >
<source src="video_ogv.ogv" />
<source src="video_mp4.mp4" />
<source src="video_webm.webm" />
Su navegador no soporta la etiqueta video.
</video>
ArchivosdeFlash
HTML5incorporatambinlaposibilidaddeincrustardirectamentearchivosde
animacinflashatravsdelaetiquetaembed:
<embed src="animacion_flash.swf" />
srces,aligualqueenaudioyvideo,elnicoatributoobligatorio.heightywidth
tambinsonvlidosyfuncionandeigualformaquehemosdescritoenlaetiqueta
vdeo.
9.6.DIBUJOMEDIANTELAETIQUETACANVAS
Pgina 109
fillStyleystrokeStylesonvariablesquenospermitenelegirelcolor,patrno
gradiente de color que usaremos para relleno o lnea de dibujo,
respectivamente. Para seleccionar un color podemos usar los mismos
mtodos que en CSS (por ejemplo, #c0ffee, #fff, orange o
rgb(255,160,23))perosiempreentrecomillascomosifueseunacadena.
Paraseleccionarungradienteounpatrnasignamoselobjetodondeest
definidoelmismo(veremoscomohacerlomasadelante).
fillRect y strokeRect sonfuncionesquenospermitendibujarunrectngulo
especificandocuatroparmetros:elpuntodesuvrticesuperiorderechoy
lasdimensionesdesuslados(x,y,ancho,alto).
clearRect(x,y,ancho,alto)limpiaelcontenidodelrectnguloespecificado.
Para reiniciar el canvas completo podemos hacer un clearRect con las
dimensionestotalesdelmismooreasignarelvalordeanchoodealtodel
mismo,comoporejemploas:
cv.width = cv.width;
moveTo (x,y) mueve el pincel de dibujo al punto de coordenadas
especificadas.
lineTo(x,y) dibujaunalneadesdeelpuntoactualdoneseencuentrael
pincel hasta el punto especificado en las coordenadas. En realidad las
lneasnosedibujansobreellienzodelcanvassinoquesealmacenanen
unaespeciedebuffertemporalqueslosevolcarrealmenteenlapgina
web cuando llamemos alafuncin stroke(). El colorusado ser elque
hayamosdefinidoenstrokeStyle.
lineWidth esunapropiedadquedefine,enpixeles,elanchodelaslneas
Pgina 110
trazadas.
font esunavariablequenospermitedefiniruntipodeletra.Recibeuna
cadena con las caractersticas de este, de forma similar a la de la
propiedadfontdeCSS.Porejemplo"bolditalic30pxmonospace"
fillText(texto,x,y) esunafuncinqueescribeeltextoquerecibecomo
primerparmetroapartirdelpuntodefinidomediantesusegundoytercer
parmetro. El color que escoger ser el ltimo que hayamos definido
mediantefillStyle.
strokeText(texto, x, y) hace lo mismo pero slo dibujando la lnea de
contornodeltextosinrellenarlo.
Eltrabajocongradientesesbastantemsdelicado.Enelsiguienteejemplo
vemoscomodefinirungradienteyrellenarunrectanguloconl:
gradiente = cv.createLinearGradient(250, 50, 350, 250);
gradiente.addColorStop(0, "#0f0");
gradiente.addColorStop(1, "#f00");
cv.fillStyle = gradiente;
cv.fillRect (250, 50, 100, 200);
Laprimeralneacreaelobjetoquecontendrelgradiente.Esteserlinealeir
desdeelpunto250,50hastael350,250.Lascoordenadasestnrefereridasala
superficiedelcanvas.Lasdossiguienteslneasdefinenloscoloresinicialyfinaldel
gradiente.Porltimo,usamoselobjetogradienteparadefinirlavariablefillStyley
dibujamosunrectnguloqueserellenarconelmismo.Notaqueelrectangulo
coincideexactamenteconlasuperficiedelgradienteperonotendraporqueser
as. El gradiente lineal puede crearse mediante una diagonal (como en el
ejemplo) pero tambin mediante una lnea vertical u horizontal. Tambin
podemoscrearunradiantecnicomediantelasiguientefuncin:
createRadialGradient(x0, y0, r0, x1, y1, r1)
Lostresprimerosparmetrosdefinenuncrculoylostresltimosotro.Elgradiente
secreardibujandounasuperficiecnicaentreamboscrculos.
Eldibujodearcosserealizamediantelafuncinarcquerecibeseisparmetros:
lascoordenadas delcentro,elradio,elpuntodeinicioydefinaldelarcoen
radianes y una variable booleana quedefine si elarco se trazar en sentido
horario(false)oantihorario(true).El0delosgradosestarasituadoenelpuntode
lastresenunaesferahoraria.LaconstanteMath.PItambinnosresultartilpara
expresarlosgradosenradianes.Unavezdefinidoelarcooelcrculopodemos
llenarlo o dibujar slo su lnea mediante las funciones fill o stroke,
respectivamente.Veamosunejemplo:
cv.beginPath();
cv.arc(150, 300, 70, 0, 2 * Math.PI, true);
cv.fillStyle = "#9cf";
cv.fill();
Jos Mara Morales Vzquez
Pgina 111
cv.beginPath();
cv.arc(100, 150, 200, 0, Math.PI, false);
cv.lineWidth = 10;
cv.strokeStyle = "black";
cv.stroke();
Tenemosdisponiblestresfuncionesquenosvanapermitirhacertransformaciones
sobre los elementos dibujados: translate(x,y), rotate (angulo) y scale(x,y). La
primear desplaza un elemento al punto indicado por las coordenadas que
enviamoscomoparmetros.Lasegundavaarotarelelementoelnmerode
grados(enradianes)enelsentidodelasagujasdelreloj.Por ltimolatercera
permite cambiar la escala de un objeto indicando el factor de escalado
horizontalyverticalcomoparmetros.Todasellassonacumulativasyseaplican
sobretodosloselementosquesevayanadibujardesdeelmomentoenquese
indicanhastaquesedesactivan.Unejemplo:
for(j=0; j<6; j++){
cv.fillRect(400,50,75,75);
cv.translate(50, 50);
cv.rotate(Math.PI/16);
cv.scale(0.7, 0.7);
}
Canvasnosvaapermirtambininteractuarconlascoordenadasdelratnpara
realizargrficosinteractivos.Enelsiguienteejemplodellibrodiveintohtml5puedes
ver un ejemplo y pulsando sobre el enlace etiquetado como Rules of play te
explicanlofundamentaldesufuncionamiento:
http://diveintohtml5.ep.io/examples/canvashalma.html
En los siguientes enlaces tienes todas las funciones, su descripcin y algunos
ejemplosdeloquepuedesusarcomocontenidodelaetiquetacanvasusandoel
Jos Mara Morales Vzquez
Pgina 112
9.7.GEOLOCALIZACIN
</ul>
<script>
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var latitud = position.coords.latitude;
var longitud = position.coords.longitude;
var altura = position.coords.altitude;
var precision = position.coords.accuracy;
var precisionAltura = position.coords.altitudeAccuracy;
document.getElementById("latitud").innerHTML = latitud;
document.getElementById("longitud").innerHTML =
longitud;
document.getElementById("altura").innerHTML = altura;
document.getElementById("precision").innerHTML =
precision;
Pgina 113
}
}
else {
alert("Su navegador no soporta la geolocalizacin");
}
</script>
Elscript,queesdondeusamoslasfunciones,tienetrespartesbiendiferenciadas.
En primer lugar comprobamos si nuestro navegador soporta la funcin de
geolocalizacininterrogandoalavariable navigator.geolocation. Sielresultado
esnegativomostramosunaalertay,encasocontrario,llamamosaunafuncin
(navigator.geolocation.getCurrenPosition)atravsdelacualobtenemoslalatitud
ylalongitud(positions.coords.latitudeyposition.coords.longitude),laprecisinen
estasmedidassegnelmtodoempleadoparaobtenerlasdelostresvistosen
metros (position.coords.accuracy), la altura (position.coords.accuracy) y la
precisinenlamedidadeesta(position.coords.altitudeAccuracy).Laalturayla
precisinenellasloestardisponiblesicontamosconGPSyserceroenotro
caso.Laltimapartedelscriptmuestralosdatosobtenidosennuestrapgina
HTML usando la funcin Javascript document.getElementById que nos permite
sustituirelcontenidodecualquieretiqueta(innerHTML)simplementeindicandoel
IDdelamisma.
Existen otros dos parmetros ms adems de los vistos en este ejemplo:
position.coords.heading que te proporciona la posicin en grados respecto al
norteyposition.coords.speedque,tomandocomoreferencialaltimaposiciny
eltiempotranscurridoentreunayotra,nosproporcionalavelocidadalaquenos
movemosenmetrosporsegundo.
TienesotroejemplomscompletoqueenlazaconelAPIdegooglemapspara
mostrarlascoordenadasenunplanoaqu:
http://benwerd.com/lab/geo.php
9.8.MSCOSAS
ExistenmuchasotrasnovedadesenHTML5:funcionalidaddearrastrarsoltar(drag
drop) nativa en el navegador, un sistema mejorado de comunicaciones
bidireccionales con el servidor, cookies que permitiran almacenar ms
informacin,etc.Muchasdeestasnuevasfuncionalidades,aligualqueocurre
conlasantesvistasdegeolocalizacinodecanvas,todasellasseproporcionan
mediante el uso de un API externo realizado en javascript. Para seguir
aprendiendo y ampliando conocimientos, as como novedades y cambios de
ltimahora,lamejorreferenciaeslaqueproporcionaelcomitdelW3C:
http://dev.w3.org/html5/spec/Overview.html
Jos Mara Morales Vzquez
Pgina 114
Ysiquieresalgomsdidcticopuedesconsultarellibrogratuitodiveintohtml5:
http://diveintohtml5.ep.io/
Pgina 115
10.CSS3
LoscambiosenCSS3hansidoampliosysignificativosparaconseguirpginasweb
mslmpiasyatractivasconunmenoresfuerzoparaelcodifidador.Repasaremos
algunas de las ms importantes pero no olvidemos que ni el estndar est
cerrado ni lo quehay es compatibleconmuchos delos navegadores quese
siguenusandoampliamente.
10.1.LOSNUEVOSSELECTORESDECSS3
Pseudoelementos
LospseudoelementosexistentesenCSS2.1semantieneninvariablesenCSS3salvo
unpequeodetalle:ahorasedistinguenmsclaramentedelaspseudoclases
usando::delanteenlugarde:comohastaahora.As,porejemplo,usaremos
p::firstletterenlugardep:firstlettercomohastaahora.Adems, seaadeun
nuevo pseudoelemento llamado ::selection que permite aplicar estilos
diferenciados al texto que el usuario ha seleccionado mediante el ratn o el
teclado.
Pseudoclases
ElprincipalcambioenlosselectoresdeCSS3seencuentraaqu,dondesehan
aadido14selectoresnuevos.
Elselector:rootrepresentaalelementorazdeldocumentoHTMLquesiempreha
deserlapropiaetiquetahtml.Noexisteningunadiferenciaapreciableentreusarl
esteolaetiquetabody,salvoque:roottendraunamayorespecificidad.
:emptyesunselectorquedemarcaatodosloselementosvacosdecontenidoy
sinhijos.Porejemplo,tengamoselsiguienteHTML:
<p>A paragraph.</p>
<p></p>
<p>Another paragraph.</p>
Elprrafocentral,vacoysinhijos,seraelnicoqueresponderaaesteselector:
p:empty{ width:200px; height: 40px; background: red; }
Elselector:target sirveparaseleccionarelelementoactivo,osea,aqulenlace
internorealizadomediantelaetiqueta a yqueacabasdevisitar.Veamoseste
cdigo:
<p><a
<p><a
<p><a
<p><a
Yusemosestareglacombinadaconelselector:before
Pgina 116
Elselectorp:firstchildseleccionaraalosprrafosmarcadosenazul(elprimerhijo
delbodyyelprimerhijodeldiv),mientrasqueelselectorp:lastchildseleccionara
alprrafomarcadoenrojo(elltimohijodeldiv).
Siguiendoenestalnea, :onlychild seleccionariaaunelementoquefuesehijo
nicodesupadre.:nthchild(n)seleccionaraalelementoqueestenlaposicin
ndentrodeladescendenciadesupadre.Elprimerelementoserael1y,porlo
tanto, p:nthchild(1) sera equivalete a p:firstchild. Por ltimo, :nthlastchild(n)
seleccionaraalelementoqueestenlaposicinnperoempezandoacontar
porelltimoynoporelprimero.
:nthchild(n) permite un uso avanzado configurando adecuadamente su
argumentonico.Podemoscambiarlaletranporlaspalabrasclavesoddoeven
y, en ese caso, seleccionaramos a todos los elementos impares o pares,
respectivamente. Tambin podemos usar expresiones como 3n (los elementos
mltiplosde3)ousartresreglasdiferentes(3n+1,3n+2y3n+3)paraalternarentre
tresestilosdiferentesenunalistadeelementosiguales.
Similaresaestos,tenemosunconjuntodeselectoresquesecomportandeigual
formaperoconloselementosdeundeterminadotipo.Son:firstoftype,:lastof
type,onlyoftype,:nthoftype(n)y:nthlastoftype(n).
Nuevosselectoresparausoconformularios
Existen, adems, tres pseudoclases nuevas especificamente pensadas para su
uso conformulariosqueson :enabled,:disabled y :checked.Como sunombre
indica,aplicanaloselementosdetipoinputquecumplenconloespecificadoen
elnombredelselector.
Elselector:not()
Existe una ltima pseudoclase que trataremos aparte por su especial
Jos Mara Morales Vzquez
Pgina 117
Lasiguientereglaaplicaraatodosloselementosstrongqueestndentrodeun
divperoquenoestndentrodeunp
div *:not(p) strong{color: red; }
Enlasiguiente,locombinamosconunselectordeatributoparaseleccionartodos
losinputsalvoaquellosdetipopassword.
input:not([type="password"]){color: red; }
Podemosusartambinunalistacomoargumentodelnot.Losiguienteseaplicar
a todos los titulares de nivel h2 salvo a aquellos que pertenecen a las clases
politicayeconomia:
h2:not(.politica, .economia){color: red; }
Y,porsupuesto,sepuedecombinarconcualquierotroselectorquehemosvisto
antes:descendientes,etc.
Nuevosselectoresdeatributos
CSS3aade,adems,tres nuevos selectoresdeatributosquenos permitenun
controlmsfino. Elprimerselectorqueveremos,queusaelsmbolodistintivo ^
sirveparaseleccionaraetiquetasconunatributoscuyovalorempiezaporuna
cadena.Enelejemplo,aaquellasetiquetas a conunatributo href cuyovalor
empiezepormailto:
a[href^="mailto:"]{ color: blue; }
Porltimo,seincluyeunselectorqueusaelsmbolo*queseleccionaaaquellas
etiquetasconunatribuyocuyovalorcontengaencualquierposicinlacadena
especificada. En el siguiente ejemplo, seleccionara a cualquier imagen cuyo
ttulocontengalapalabraimportante.
img[title*="importante"] {border: 3px red dashed; }
Todoslosselectoresdeatributopuedencombinarseentresiy,porsupuesto,con
otrosselectorescomosiempre.Porejemplo,elsiguienteselectorcuadraraconlas
Jos Mara Morales Vzquez
Pgina 118
Selectorgeneraldeelementoshermanos
ElltimodelosnuevosselectoresdeCSS3amplalasposibilidadesdelselectorde
hermanos existente en la versin anterior. Recordemos que el selector de
hermanos(queusabaelsmbolo+)sloseactivabacuandolosdoselementos
de la regla eran hermanos e iban uno a continuacin de otro de forma
inmediata. El nuevo selector usa el smbolo ~ y se activa cuando ambos
elementossonhermanosyelsegundovadespusdelprimeroperosinimportar
queseadeformainmediata.Veamosunejemplosencillo:
<h1>Titular 1</h1>
<h2>Titular 2</h2>
<p>Prrafo 1</p>
<div>
<h2>Titular 3</h2>
</div>
<h2>Titular 4</h2>
Unareglaqueuseelselectordehermanosclsico(porej.h1+h2{color:red;})
slo seleccionarael Titular 2, mientras queusando elselectorgeneralh1 ~ h2
{color:red;}seleccionaraelTitular2yelTitular4.
9.2.LASNUEVASPROPIEDADESDECSS3
SonmuchaslaspropiedadesaadidasenCSS3ymuyirregularlaimplantacinen
losdiferentesnavegadoreshastaelpuntodequecadaunodeellosenmuchos
casoshadesarrolladoporsucuentaalgunasdelasimplementacionesaadiendo
un prefijo distintivo que es o para pera moz para firefox, webkit para
chrome,safariyotrosqueusenelWebkity ms paraInternetExplorer.Veremos
ejemplosdeestoenvariosdelosapartadossiguientes.
Gradientesyunanuevapaletadecolores
CSS3 adopta (con ligeros cambios) la paleta de colores stndard de X11 que
constade147elementosquepodemosusarmedianteunnombrecaracterstico.
LalistadecoloresX11puedesconsultarlaaqu:
http://en.wikipedia.org/wiki/X11_color_names#Color_name_charts
En CSS3 los usaremos siempre en minsculas y eliminando los espacios. Por
ejemplo,elcolorBlanchedAlmondpasaraaserblanchedalmond.
Adems,seincorporalaposibilidadderealizardegradadosdeformaqueyano
necesitamos usar imgenes estticas para estos fines. Existen dos tipos de
gradientes:linealesyradiales.Veamosunejemplodecadauno:
background-image: linear-gradient(bottom, rgb(107,168,104) 13%,
rgb(204,137,180) 57%, rgb(164,219,245) 83%);
background: radial-gradient(center, circle, white, #7DA5CD);
Pgina 119
Enelcasodelosgradienteslineales,tenemosunaherramientawebmuytilque
nospermitegenerarlasreglasdeformaautomticaaqu:
http://gradients.glrzad.com/
Fondosmltiples
CSS3incorporalaposibilidaddeincluirfondosmltiplesenunamismacajasin
necesidaddetenerquesuperponerunacajaporcadaimagen.Laposicin,y
caractersticas de cada imagen (repeticin, etc.) se define tambin de forma
independienteparacadaunadeellas.Veamosunpardeejemplos.Ahoradefinir
imgenes independientes para personalizar las esquinas de una caja es tan
sencillocomoesto:
p.caja2{
padding: 60px;
border: 1px solid black;
Pgina 120
Ysiqueremossolapardosimgenesdefondotransparenteenlamismacajanos
bastaconhacerlosiguiente:
p.caja3{
width: 300px;
height: 400px;
background: url(imagen1.gif) bottom no-repeat,
url(imagen2.gif) bottom no-repeat;
}
Esquinasredondeadasybordesdecoradas
CSS3 incluye, por fin, la posibilidad de redondear bordes sin necesidad de
complicadas maniobras como hemos tenido quehacerhastaelmomento.La
propiedadparahacerestosellamaborderradius.Susintaxisesbiensencilla:
border-radius: 10px;
Elvalorindicaelradiodelarcodecircunferenciaquedelimitaelarco.Sepuede
usarcualquierunidaddemedidavlidaenCSS(pulgadas,em,etc.)ydefinirde
formaindependientecadaunadelascuatroesquinasdelacajaconlasiguiente
sintaxis:
border-top-right-radius: 5px;
border-bottom-right-radius: 2em;
border-bottom-left-radius: 3em;
border-top-left-radius: 10px;
Conelformatoabreviadopodemosponerdosvaloresdiferentes(elprimeropara
las esquinasuperiorizquierda einferiorderecha y elotro paralas otras dos)o
cuatrovalores(unoparacadaesquinaempezandoporlasuperiorizquierday
continuandoenelsentidodelasagujasdelreloj):
border-radius: 10px 5px;
border-radius: 10px 5px 20px 25px;
Podemosusartambinesquinasirregularesespecificandodosradiosdiferentes:
unoparaelejeXyotroparaelejeY.Elformatocuandotodaslasesquinasson
igualeseseste:
border-radius: 10px / 50px;
Cuandoespecificamoslasesquinasunaaunanonecesitamoslabarra:
border-top-right-radius: 5px 10px;
Jos Mara Morales Vzquez
Pgina 121
Ycuandolasesquinassondiferentesperolasespecificamosengrupo:
border-radius: 10px 10px / 20px 30px;
border-radius: 5px 10px 5px 10px / 10px 5px 10px 5px;
Elredondeadodeesquinasmedianteestapropiedadsepuedeaplicar,adems
deaunacaja,tambindirectamenteaunatablaoaunaimagen:
table {
width: 200px;
background-color: rgb(185,205,225);
text-align: center;
margin: 30px;
border: 1px solid gray;
border-radius: 20px;
}
#imgredondo {
width: 600px;
height: 150px;
margin: 0 auto;
border-radius: 1em;
border: 1px solid gray;
background-image: url(header.jpg);
}
Sombras
CSS3incorporadospropiedadesquesirvenpardarsombrasatextosycajasque
se llaman, respectivamente, textshadow y boxshadow. El formato bsico de
ambasessimilar.Veamosunpardeejemplos:
text-shadow: 15px 5px 10px orange;
box-shadow: -5px -10px 5em #000;
Pgina 122
Opacidad
La propiedad opacity permite definir elementos parcial o totalmente
transparentes.Elvalordeestapropiedadesunnmerodecimalentre0y1,de
formaque1definelatotalopacidad(cuerposlidoynotranslucido)yel0la
totaltranspariencia.
opacity: .3;
Mscontroldelatipografa
EnCSS3senormalizaelusodetipografasexternas(comolasdeGoogleFonts
quevimoshaceyatiempo)deformaquepodamosusarcualquiertipodefuente
disponibleenlaredennuestraspginas.Laincorporacinydescargadefuentes
sehacemediantelainstruccin@fontfacequetieneelsiguienteformato:
@font-face {
font-family: "fantasia";
url("fantasia.ttf");
}
Siquisiramosimportarmsdeunafuenteennuestroproyectonecesitamosuna
instruccin@fontfaceporcadaunadeellas:
@font-face { font-family: vera; src: url("VeraSeBd.ttf"); }
@font-face { font-family: fantasia; src: url("fantasia.ttf"); }
Pgina 123
Aunquepuedeaproximarseaojoporelmtododepruebaydeerror,existeun
recursowebquenoslistalasfuentesdisponiblesennuestrosistemaynoscalcula
loscoeficientesdeajuste:
http://www.brunildo.org/test/xheight.pl
La propiedad textoverflow decide lo que se har con un texto que no cabe
completamente dentro de la caja en la que se encuentra. Tiene dos posibles
valores: clip (lo corta sin ms) o (lo corta pero antes coloca tres puntos
suspensivos).
Lapropiedadfontstretchpermitirajustarelanchodeloscaracteres,peroporel
momento ningn navegador la implementa. Sus valores posibles son, de ms
ancha a ms estrecha, wider, narrower, ultracondensed, extracondensed,
condensed, semicondensed, normal, semiexpanded, expanded, extra
expandedyultraexpanded.
Lapropiedadtextwrapdefinecomocortarlaslneasdeuntextoytampocoest
implementadaporelmomento.Elvalor normal,pordefecto,indicaqueslose
puedenromperenlosespaciosypuntos.noneindicaquenopuedenromperse,
unrestricted quepuedenromperseentredoscaracterescualesquieray suppress
indicaquenoslonopuedenrompersesinoquesesuprimeninclusolossaltosde
lneamanualesquehayamoscolocado.
Columnasmsfciles
CSS3 dispone de siete propiedades que nos van a permitir mostrar el texto
mediantecolumnasdeformamuyfcil.Son columns, columngap,columnfill,
columnspanycolumnrule.Aligualqueocurreconlaspropiedadesrelacionadas
con los gradientes, esta coleccin de propiedades precisa llevar el prefijo del
navegador(moz,webkit)parafuncionarenfirefoxychromeperonoasen
opera.Explorernolasimplementaan.Losejemplosacontinuacinseverncon
lasintaxisnecesariaparamozillasalvoqueseindiquelocontrario.
columnsdefineelnmerodecolumnasyelanchomnimoesperadoparacada
una de ellas. Puede separarse en dos propiedades independientes: column
widthycolumncount.Elfuncionamientodeambosparmetrosestntimamente
relacionadoperolainterpretacinquehacendeelloslosdiferentesnavegadores
no es unnime. Mozilla, por ejemplo, da preferencia al nmero de columnas
mientrasqueOperalohaceconelanchodeestas.
/* -moz-columns: 200px 3; */
-moz-column-width: 200px;
-moz-column-count: 3;
Pgina 124
columngapdefineelespaciodeseparacinentrecolumnas:
-moz-column-gap: 50px;
columnspannospermitemarcaralgnelementoparaquenosepropagueentre
diferentes columnas sino queestcompleto enuna deellas.Imaginemos,por
ejemplo, un texto de entradilla o un titular. Tiene dos valores vlidos: 1 y auto
segnquedebalimitarsealaprimeracolumnaoexpandirseporlasqueprecise.
SloloimplementanOperayChrome:
column-span: 1;
-webkit-column-span: 1
Transformacionesytrancisiones
Lapropiedad transform permiterealizardiferentestransformacionesen2Do3D
sobrecualquierelemento(textos,cajas...)denuestraweb.Setratadeunadelas
propiedadessobrelasqueanseesttrabajando(sobretodoenelterrenode
3D),implementadaentodoslosnavegadoresexceptoelexplorer,quehayque
usarconlosprefijospropiosdecadanavegador(moz,webkityo)yparala
quesloveremosalgunosejemplosbsicos.
Las transformaciones disponibles son rotacin cambio de escala, deformacin
oblicuaydesplazamiento.
Larotacinsepuedeexpresarengrados(deg),radianes(rad),aplicarsealosejes
XeYporseparado(rotateXyrotateY),aambosporigual(rotate),yespecificarun
nmero de grados positivo (en el sentido de las agujas del reloj) o negativo
(sentidocontrario).Unejemplo:
transform: rotate(-20deg);
-moz-transform: rotate(-20deg);
-webkit-transform: rotate(-20deg);
-o-transform: rotate(-20deg);
Loscambiosdeescalaseespecificanmedianteunnmeroenteroodecimalque
Jos Mara Morales Vzquez
Pgina 125
Porltimo,translatenospermitedefinirundesplazamientoindicandoesteenuna
medidaconcretaoentantoporciento,convalorespositivos(abajoyhaciala
derecha)onegativos(arribayhacialaizquierda).Enestecasoelvalordela
propiedadpuedellevarunoodosvaloresaplicandoenelprimercasoaambos
ejesyenelsegundodistinguiendoentreambos:
-moz-transform: translate(100px, -50px);
-webkit-transform: translate(100px, -50px);
-o-transform: translate(100px, -50px);
transform: translate(100px, -50px);
Pgina 126
Enlaprimerareglaespecificamosquelatrancisinafectaralborde(trancision
property),quedurar5segundos(trancisiontimingfunction)yqueserrpidaal
principioymslentaalfinal(easeout).Enlasegundaregla,queseactivaral
colocarelratnencima,hacemosuncambioenelbordedelelemento(tantode
tamaocomodecolor)ylatrancisinrealizarlatransformacinentreelestado
originalyelfinalconlosdatosespecificados.Alretirarelratnlaanimacinse
invertir.
Lapropiedadpuedeserelancho(width),elalto(height),el color,unalistade
propiedades diferentes separadas por coma o all (todas las propiedades que
cambien entre uno y otro estado). Los tiempos y retrasos se especifican en
segundos (s) o milisengudos (ms). Por ltimo, el timingfunction puede ser
constante(linear),delentoarpido(easein),derpidoalento(ease o ease
out)olentoalprincipioyalfinalymsrpidoenelcentro(easeinout).
Se pueden especificar tambin diferentes parmetros para diferentes
propiedades:
transition: width 2s ease, height 3s linear;
Pgina 127
11.ENLACES,BIBLIOGRAFAYREFERENCIAS
Esabsolutamenteimposiblereseartodaslasayudasyreferenciasquealolargo
delaoenqueheredactadoestosapuntesydurantemuchotiempoanteshe
tomado de la web, libros de consulta, ejemplos de pginas encontradas en
Internet,etc.Perosituvieraquequedarmeconalgunascomoreferenciasde
cabecera,serajustomencionaralmenosalassiguientes.
http://www.librosweb.es/ es una coleccin de libros web escritos en
castellanoqueabarcantodaslasdisciplinasquehemostocadoaqu.
http://www.w3schools.com/ es,sinduda,lamejorreferenciaqueexisteen
la web cuando quieres consultar los argumentos de una etiqueta, los
valoresquepuedetomaro,simplemente,veralgunosejemplossimplesde
cualquierelementoHTMLy/oCSS
http://meyerweb.com/ eslapginawebdeEricA.Meyer,unverdadero
monstruo de esta disciplina y artfice de la gran mayora de trucos y
tcnicasquehemosvistoenelcaptulo7
Y,paralosfanticosdelpapel,sitengoquemencionardoslibrosdemibiblioteca
personalsobreestetemamequedoconestos:
HTML5yCSS3.VanLancker,Luc.EdicionesENI.2011
CSS,Tcnicasprofesionalesparaeldiseomoderno.Meyer,EricA.Editorial
AnayaMultimedia.2011
Pgina 128