Continguts:

INTRODUCCIÓ
Els frames HTML permeten als autors presentar els documents en múltiples vistes, les quals poden ser finestres o subfinestres independents. Les vistes múltiples ofereixen als dissenyadors una manera per mantenir visible certa informació mentre que altres vistes es desenrotllen (mitjançant l'scroll) o es reemplacen. Per exemple, dins d'una mateixa finestra un frame podria visualitzar un banner estàtic, un segon frame podria visualitzar un menú de navegació, i un tercer podria visualitzar el document principal que es pot desenrotllar o pot ser reemplaçat mitjançant la navegació en el segon frame.

Si l'agent d'usuari no pot visualitzar frames o està configurat per a no visualitzar-los, presentarà els continguts de l'element NOFRAMES.
DISPOSICIÓ DELS FRAMES
Un document HTML que descriu una disposició de frames (s'anomena un document frameset) té un aspecte diferent que un document HTML sense frames. Un document estàndard té una secció HEAD i una secció BODY. Un document frameset té una secció HEAD, i una secció FRAMESET enlloc de la secció BODY.

La secció FRAMESET d'un document especifica la disposició de les vistes en la finestra principal de l'usuari. A més, la secció FRAMESET pot contenir un element NOFRAMES per proporcionar contingut alternatiu per a agents d'usuari que no suporten frames o que estan configurats per a no visualitzar frames.

Els elements que normalment podrien estar situats en l'element BODY no poden aparèixer abans del primer element FRAMESET o sinó el FRAMESET serà ignorat.
L'element FRAMESET
L'element FRAMESET especifica la disposició de la finestra principal de l'usuari en termes de subespais rectangulars (anomenats frames).

Ex.1:
	<FRAMESET rows="50%, 50%">
	   ...la resta de la definició...
	</FRAMESET>
Aquest exemple divideix la pantalla verticalment en dues parts (és a dir, crea una meitat superior i una meitat inferior).

Ex.2:
	<FRAMESET cols="1*,250,3*">
	   ...la resta de la definició...
	</FRAMESET>
Aquest exemple crea tres columnes: la segona té una amplada fixa de 250 píxels (útil, per exemple, per suportar una imatge de mida coneguda). La primera rep un 25% de l'espai restant i la tercera rep un 75% de l'espai restant.

Ex.3:
	<FRAMESET rows="30%,70%" cols="33%,34%,33%">
	   ...la resta de la definició...
	</FRAMESET>
Aquest exemple crea una graella de 2x3 subespais.

Ex.4:
	<FRAMESET rows="30%,400,*,2*">
	   ...la resta de la definició...
	</FRAMESET>
Per a aquest exemple se suposa que la finestra del navegador és actualment de 1000 píxels d'alçada. A la primera vista se li assigna un 30% de l'alçada total (300 píxels). La segona vista està especificada per a ser exactament de 400 píxels d'alçada. Això deixa 300 píxels que han de ser dividits entre els altres dos frames. L'alçada del quart frame està especificada com a "2*", per tant, és dues vegades més alt que el primer frame, l'alçada del qual és de només "*" (equivalent a 1*). Per tant, el tercer frame tindrà 100 píxels d'alçada i el quart en tindrà 200.

Les longituts absolutes que no sumen el 100% de l'espai real disponible haurien de ser ajustades per l'agent d'usuari. Quan no s'hagi especificat el contrari, l'espai restant s'hauria d'assignar proporcionalment a cada vista. Quan les vistes estiguin sobreespecificades, cada una hauria de ser reduïda d'acord amb la seva proporció especificada de l'espai total.

Conjunts de frames aniuats.

Els conjunts de frames (framesets) es poden aniuar fins a qualsevol nivell.

En el següent exemple, el FRAMESET més extern divideix l'espai disponible en tres columnes iguals. El FRAMESET més intern aleshores divideix la segona àrea en dues files d'alçada diferent:
   <FRAMESET cols="33%, 33%, 34%">
        ...continguts del primer frame...
        <FRAMESET rows="40%, 50%">
           ...continguts del segon frame, primera fila...
           ...continguts del segon frame, segona fila...
        </FRAMESET>
        ...continguts del tercer frame...
   </FRAMESET>


Compartició de dades entre els frames.

Els autors poden compartir dades entre diversos frames amb la inclusió d'aquestes dades mitjançant l'element OBJECT. Els autors haurien d'incloure l'element OBJECT dins l'element HEAD d'un document frameset i anomenar-lo amb l'atribut id. Qualsevol document que es trobi en els continguts d'un dels frames del frameset pot fer referència a aquest identificador.

El següent exemple il·lustra com un script podria fer referència a un element OBJECT definit per a un frameset sencer:
 
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
   <HTML>
   <HEAD>
      <TITLE>Això és un frameset amb un OBJECT en el HEAD</TITLE>
      <!-- Aquest OBJECT no es presenta! -->
      <OBJECT id="elmeuobjecte" data="dades.bar"></OBJECT>
   </HEAD>
   <FRAMESET>
      <FRAME src="pagina.html" name="pagina">
   </FRAMESET>
   </HTML>

   <!-- A pagina.html -->
   <HTML>
   <HEAD>
      <TITLE>Pàgina</TITLE>
   </HEAD>
   <BODY>
      ...el començament del document...
      <P>
         <SCRIPT type="text/javascript">
            parent.elmeuobjecte.lamevapropietat
         </SCRIPT>
      ...la resta del document...
   </BODY>
   </HTML>
L'element FRAME
L'elment FRAME defineix els continguts i l'aparença d'un sol frame.

Fixar els continguts inicials d'un frame.

L'atribut src especifica el document que inicialment estarà contingut dins el frame. El següent exemple de codi HTML:
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
   <HTML>
   <HEAD>
      <TITLE>Un document frameset</TITLE>
   </HEAD>
   <FRAMESET cols="33%,33%,33%">
      <FRAMESET rows="*,200">
         <FRAME src="continguts_del_frame1.html">
         <FRAME src="continguts_del_frame2.gif">
      </FRAMESET>
      <FRAME src="continguts_del_frame3.html">
      <FRAME src="continguts_del_frame4.html">
   </FRAMESET>
   </HTML>
hauria de crear una disposició de frames com aquesta:



i fer que l'agent d'usuari carregui cada arxiu en una visualització separada.

Com que els continguts d'un frame no poden estar en el mateix document en el que es troba la definició del frame, aquest exemple següent és il·legal (els continguts del segon frame es troben en el mateix document que el frameset):
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
      "http://www.w3.org/TR/REC-html40/frameset.dtd">
   <HTML>
   <HEAD>
      <TITLE>Un document frameset</TITLE>
   </HEAD>
   <FRAMESET cols="50%,50%">
      <FRAME src="continguts_del_frame1.html">
      <FRAME src="#ancla_en_el_mateix_document">
      <NOFRAMES>
         ...algun text...
         <H2><A name="ancla_en_el_mateix_document">Secció important 
         </A></H2>
         ...text...
      </NOFRAMES>
   </FRAMESET>
   </HTML>


Presentació visual d'un frame.

El següent exemple mostra l'ús dels atributs decoratius de FRAME. Aquí s'especifica que el frame 1 no contindrà barres d'scroll. El frame 2 deixarà espai en blanc al voltant dels seus continguts (inicialment, un fitxer d'imatge), i a més no es podrà canviar de tamany. No es dibuixarà cap vora entre els frames 3 i 4. Les vores es dibuixaran (per defecte) entre els frames 1, 2 i 3:
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
   <HTML>
   <HEAD>
      <TITLE>Un document frameset</TITLE>
   </HEAD>
   <FRAMESET cols="33%,33%,33%">
      <FRAMESET rows="*,200">
         <FRAME src="continguts_del_frame1.html" scrolling="no">
         <FRAME src="continguts_del_frame2.gif" marginwidth="10" 
            marginheight="15" noresize>
      </FRAMESET>
      <FRAME src="continguts_del_frame3.html" frameborder="0">
      <FRAME src="continguts_del_frame4.html" frameborder="0">
   </FRAMESET>
   </HTML>
ESPECIFICAR INFORMACIÓ DEL FRAME OBJECTIU
Com que no hi ha cap garantia que el nom d'un frame objectiu sigui únic, es descriu un mètode per a trobar un frame donant el seu nom objectiu:



Assignant un nom a un frame via l'atribut name els autors poden fer-hi referència com a l'"objectiu" dels links definits per altres elements. L'atribut target es pot inicialitzar per a elements que creen links (A, LINK), mapes d'imatge (AREA) i formularis (FORM).

Exemple: il·lustració de com els objectius (targets) permeten la modificació dinàmica dels continguts d'un frame. Primer es defineix un frameset en el document frameset.html:
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
      "http://www.w3.org/TR/REC-html40/frameset.dtd">
   <HTML>
   <HEAD>
      <TITLE>Un document frameset</TITLE>
   </HEAD>
   <FRAMESET rows="50%,50%">
      <FRAME name="fixe" src="ini_fixe.html">
      <FRAME name="dinamic" src="ini_dinamic.html">
   </FRAMESET>
   </HTML>
aleshores, a dinamic.html es linka al frame anomenat "dinamic":
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
      "http://www.w3.org/TR/REC-html40/loose.dtd">
   <HTML>
   <HEAD>
      <TITLE>Document amb ancles amb objectius específics</TITLE>
   </HEAD>
   <BODY>
      ...començament del document...
      <P>Cal anar a 
      <A href="slide2.html" target="dinamic"><i>slide 2</i>.</A>
      ...més document...
      <P>I ara cal anar a
      <A href="slide3.html" target="dinamic"><i>slide 3</i>.</A>
   </BODY>
   </HTML>
L'activació de qualsevol link obre un nou document en el frame anomenat "dinamic" mentre que l'altre frame, "fixe", manté els seus continguts inicials.

Nota. La definició d'un frameset no canvia mai, però els continguts d'un dels seus frames sí que pot. Un cop els continguts inicials d'un frame canvien la definició del frameset ja no reflecteix l'estat actual dels seus frames. Actualment no hi ha cap manera de codificar l'estat sencer d'un document en una URI. Per tant, molts agents d'usuari no permeten als usuaris assignar un bookmark a un frameset. Aquesta és una de les raons per les quals aquest Manual d'HTML Dinàmic s'ha construit sense cap frame, a fi de facilitar la navegació i l'accés directe als diversos documents.

Els framesets poden fer que la navegació endavant i enrera a través de l'historial d'un agent d'usuari sigui més dificultosa per als usuaris.
Fixar l'objectiu per defecte dels links
Quan molts links en un mateix document designen el mateix objectiu (target) és possible especificar l'objectiu una sola vegada i dispensar-lo amb l'atribut target de cada element. Això es fa inicialitzant l'atribut target de l'element BASE.

Exemple: retornant a l'exemple previ, aquesta vegada la informació de l'objectiu es defineix en l'element BASE i es substrau de tots els elements A:
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
      "http://www.w3.org/TR/REC-html40/loose.dtd">
   <HTML>
   <HEAD>
      <TITLE>Un document amb un objectiu específic per a BASE</TITLE>
   <BASE href="http://www.empresa.com/Slides" target="dinamic">
   </HEAD>
   <BODY>
      ...començament del document...
      <P>Cal anar a <A href="slide2.html"><i>slide 2</i>.</A>
      ...més document...
      <P>Ara cal anar a 
      <A href="slide3.html"><i>slide 3</i>.</A>
   </BODY>
   </HTML>
Semàntiques dels objectius
Els agents d'usuari haurien de determinar el frame objectiu en el qual s'ha de carregar un recurs linkat d'acord amb les següents regles de precedència (de més alta a més baixa prioritat):

  1. Si un element té el seu atribut target inicialitzat a un frame conegut, quan l'element és activat (és a dir, es segueix un link o un formulari és processat) el recurs designat per l'element hauria de ser carregat dins del frame objectiu.
  2. Si un element no té l'atribut target inicialitzat però sí l'element BASE, el target de l'element BASE determina el frame objectiu.
  3. Si no s'ha especificat l'atribut target de l'element i tampoc el de l'element BASE, aleshores el recurs designat per l'element hauria de carregar-se dins del mateix frame que conté l'element.
  4. Si un atribut target fa referència a un frame F desconegut, l'agent d'usuari hauria de crear una nova finestra i frame, assignant-li el nom F al frame, i carregar el recurs designat per l'element en el nou frame.

Els agents d'usuari poden proporcionar als usuaris un mecanisme per invalidar l'atribut target.
CONTINGUT ALTERNATIU
L'element NOFRAMES
Els autors haurien de proporcionar contingut alternatiu per a aquells agents d'usuari que no suporten frames o bé que estan configurats per a no visualitzar-los. L'element NOFRAMES s'encarrega de dur a terme aquesta tasca.
Descripcions llargues dels frames
Mitjançant l'atribut longdesc es permet als usuaris designar un recurs que proporciona una descripció llarga del frame actual.
FRAMES INLINE: L'ELEMENT IFRAME
L'element IFRAME permet als autors inserir un frame dins d'un bloc de text, la qual cosa és semblant a inserir un objecte via l'element OBJECT: ambdós permeten inserir un document HTML enmig d'un altre, ambdós es poden alinear respecte el seu entorn, etc.
Tancar
Pàgina Principal
Introducció al Manual d'HTML Dinàmic
Glossari
Referències























HTML 4.0
Introducció al manual d'HTML 4.0
Taules
Formularis
Objectes, imatges i applets
Scripts
Informació de l'idioma i sentit del text
Frames
Nous elements
Elements menyspreuats i obsolets
Fulls d'estil
Nous atributs de l'HTML 4.0
Índex d'atributs nous
Índex d'atributs menyspreuats
DTD
Annexe












Introducció als CSS
Introducció als CSS2 i al manual
Propietats CSS2
Fulls d'estil audibles
Model de caixa
Sintaxi i tipus bàsics de dades
Model de formatat visual
Detalls del model de formatat visual
Assignar valors de propietats, la cascada i l'herència
Interfície d'usuari
Efectes visuals
Text
Taules
Fonts
Contingut generat, numeració automàtica i llistes
Colors i fons
Selectors
Tipus de mitjans
Mitjans paginats
Suport de CSS2
Annexe




Introducció al DOM
DOM Nivell 1 - Nucli
DOM Nivell 1 - HTML
Articles sobre el DOM






















Programació en DHTML
Demos