Iframe og Frame - hva de er og hvordan man best kan bruke rammer i Html. Bruke rammer i HTML Hvordan åpne dokumenter ved hjelp av en lenke i en ramme

Begrepet "ramme" kom til oss fra på engelsk. Oversatt betyr dette ordet "ramme" og representerer et eget område av vinduet. I sin struktur er en slik seksjon et helt ferdig HTML-dokument.

Individuelle rammer deler nettleservinduer inn i seksjoner som er plassert side om side. I dette tilfellet er hver ramme lastet med sin egen helside. Rammeteknologi forårsaker fortsatt mye kontrovers, men det må sies at toppen av populariteten allerede har passert. I dette øyeblikket denne teknologien er utdatert og vanlige rammer støttes ikke lenger i HTML5.

Teknologihistorie

I dag kan vi slå fast at beslutningen om å gå bort fra å jobbe med rammeteknologi er endelig tatt. Nettstedet https://www.w3.org/TR/html5-diff/#obsolete-elements sier tydelig at de vanlige frame-, frameset- og noframes-taggene for å lage en slik struktur er utdatert. Som et argument gis det data om at bruken av en slik struktur negativt påvirker brukervennligheten til nettsteder og deres tilgjengelighet på Internett.

Men moderne teknologier støtter IFRAME-elementet. Bruken lar deg sette inn rammer i tekstblokker på sider. Dessuten kan slike elementer justeres i forhold til selve teksten. Et viktig poeng: du kan ikke endre størrelsen på innebygde rammer i prinsippet. De har ikke en tilsvarende attributt for å endre størrelse.

I fremtiden, uten sprang i teknologi, er ytterligere bruk av rammer usannsynlig. Og det er verdt å huske at den ledende organisasjonen for standardisering av Internett-teknologier - W3C - klart har indikert at slike strukturer ikke skal brukes av nettstedsutviklere.

Det vil si at rammer i prinsippet ikke skal brukes til å strukturere sider ved opprettelse av nye ressurser. Men med støtte og forbedring av eksisterende nettsteder, vil kunnskap om funksjonene til teknologien og deres bruk være svært nyttig og produktiv.

Fordeler med rammer

Blant fordelene med rammeteknologi er brukervennlighet, høy hastighet og muligheten til å nøyaktig posisjonere informasjon i visse områder av vinduet.

Bruken av rammer gir besparelser på volumet av overført trafikk mens du arbeider med nettstedet. Når alt kommer til alt, når du får tilgang til en annen del med informasjon, oppdateres vanligvis bare én del av siden, og ikke hele koden.

Denne strukturen gir interessante navigasjonsalternativer gjennom ressursinnhold. Tross alt, inne i nettleservinduet i tilstøtende rammer kan du se ulike informasjonsblokker. Det er viktig for brukere å vite at søk innenfor en ramme tilsvarer å utføre en slik operasjon på en egen side.

Mens du jobber med nettstedet, kan du dynamisk endre størrelsen på en egen seksjon, noe som er vanskelig å implementere ved å bruke andre teknologiske løsninger.

Mulige ulemper

Problemer med nettsider som bruker rammer akkumulerte gradvis, men i dag har de nådd et terskelnivå. Blant de viktigste ulempene er:

  1. Utilfredsstillende brukervennlighet. I dag vokser andelen brukere av mobile enheter og nettbrett med liten skjermoppløsning og overgår allerede antallet som besøker nettsteder fra stasjonære datamaskiner og bærbare datamaskiner. Og her skaper bruken av rammer alvorlige problemer med sidenes tilpasningsevne når de vises på ulike enheter. Dette problemet har ingen praktisk løsning i dag.
  2. Forringelse av områdets tilgjengelighet for ulike programmer. En økning i antall tilleggsprogrammer (for eksempel skjermlesere) avslører mye dårligere tilgjengelighet for informasjon for lesing.
  3. Sidene vises ikke riktig. Ofte ser utformingen av sider med en slik struktur feil ut i nettlesere fra et designsynspunkt. Og dette er på grunn av funksjonene til teknologi. Fra et SEO-synspunkt er bruk av rammer i HTML-oppsettet på en side svært uønsket.
  4. Tilgjengelighet av en enkelt adresse for hele strukturen. Som et resultat kan de interne sidene til et slikt nettsted ikke bokmerkes. Dette fører til ulemper for brukerne.
  5. Feil indeksering av søkemotorer. Tilstedeværelsen på et nettsted av flere fullverdige dokumenter, hvorfra en side er dannet, kompliserer arbeidet til søkemotorer betydelig. Dette fører til betydelige feil under indeksering. Som et resultat fører feil definisjon av emner og sideadresser til tap av kritisk innhold fra indeksering.
  6. Respektløshet. Dette er en ganske uvanlig feil for ressurser på nettverket. Og likevel må det sies at det faktum at utformingen av nettsteder på rammer blir foreldet fører til at forfatterne og eierne av slike ressurser anses som retrograde. Men det er noen unntak. Selv moderne nettsteder som er vert for chatterom bruker vanligvis rammer.

Indeksering av rammer av søkemotorer

Informasjonen som kommer fra søkemotorer forteller oss tydelig at nettsteder med rammer indekseres merkbart tregere. I dette tilfellet oppstår det ofte feil knyttet til selve strukturen. Tross alt viser hver ramme en fullverdig Internett-side. Og nettopp en slik del av nettstedet kan være inkludert i indekseringsdatabasen.

Det negative med slik indeksering er at når brukeren går til innsiden av siden, ser brukeren vanligvis ikke menyer og andre navigasjonsmekanismer. Og dette er ikke overraskende. Du må forstå at oppdatering av rammen ikke er en løsning på problemet i dette tilfellet. Tross alt er alle navigasjonsmekanismer plassert i en annen beholder.

Et annet problem er at hovedsiden til en beholderstruktur ofte bare inneholder en tittel, metabeskrivelseskoder og en FRAMESET-tag. Og dette virker logisk - meningsfullt innhold ligger tross alt i separate dokumenter. Det er disse som den besøkende vil se på siden i rammer.

Men en søkerobot indekserer nesten aldri en slik side. Han finner ikke noe innhold på den som er nyttig for besøkende. Søkeroboter er konfigurert på en slik måte at de prøver å hente og indeksere informasjon plassert inne i body-taggen. Det er her søket etter nyttig innhold for brukeren skjer. Men på rammesiden er det ingen slik tag; den erstattes av FRAMESET.

Dette problemet kan delvis løses ved å bruke NOFRAMES. Men på mange nettsteder, når du får tilgang til den, gis det bare informasjon om at nettleseren ikke støtter rammer. Og for å se siden må du bruke et annet program.

Slike tilfeller skaper mange problemer for brukere som ved besøk på et nettsted ikke ser menyen og annen informasjon som skal vises. Hvis rammer plasseres på et nettsted, reduseres parametrene fra et SEO-synspunkt. Samtidig indikerer brukeratferdsstatistikk at ressursens autoritet blant søkemotorer faller. Dette har definitivt en negativ innvirkning på nettstedtrafikken.

Det er spesielt vanskelig for søkemotorer og indekseringsroboter å behandle nestede og flere personellstrukturer. Det faktum at hver beholder har alle funksjonene til et separat dokument, men ikke inneholder full navigasjon og annen informasjon, kompliserer situasjonen ytterligere.

Du kan gjøre arbeidet til søkemotorer enklere ved å bruke riktig kobling på sider. I dette tilfellet må du duplisere alle menykoblingene slik at de kan finnes innenfor hver enkelt del av siden. Men dette kompliserer og bremser arbeidet med å optimalisere nettstedet og oppdatere informasjon på det betydelig.

Erfaringen til mange optimister og webmastere tyder også på at sider på rammer ikke får høye rangeringer i søkeresultatene. Dette skjer selv om de er inkludert i indekseringsdatabasen.

Funksjoner ved nettstedpromotering i rammer

Noen søkemotorer indekserer innrammede filer feil eller svært feil. Som et resultat er indeksdatabasen ikke fylt med adressene til overordnede ressurser (som den burde være), men med lenker til underordnede nettsteder.

For å minimere problemene med å indeksere nettsteder basert på rammer, brukes spesielle tagger og parametere når de beskriver dem. Hovedelementet i beholderstrukturen er rammesettet. Det er han som erstatter standardkroppen; i kildekoden. Hver enkelt beholder i strukturen er beskrevet med en ramme. Antallet i sidekoden tilsvarer antallet individuelle seksjoner som vises i nettleservinduet når de vises.

Disse taggene bør plasseres på hjemmeside nettsted, og duplisere deretter innholdet i hver av dem.

Bruksområder for rammer

Utviklere av HTML-dokumenter har et ganske bredt utvalg av skjemaer for å vise informasjon på sider. Tekst og grafisk informasjon kan ordnes og organiseres ved hjelp av lister, tabeller, eller ganske enkelt ved å bruke justeringsalternativer, sette horisontale linjer og dele inn i avsnitt. Noen ganger er ikke disse funksjonene nok, og da må du dele nettleservinduet i separate områder eller rammer. I en rekke russiskspråklige beskrivelser av HTML-språket brukes begrepet rammer i stedet for begrepet rammer. Hyppigheten av bruk av begge begrepene er omtrent den samme.

Valget av en rammestruktur for visning av informasjon på WWW er berettiget i følgende tilfeller:

  • om nødvendig, administrer lasting av dokumenter til et av underområdene i nettleserens visningsvindu mens du arbeider i et annet underområde;
  • å lokalisere informasjon på et bestemt sted i visningsvinduet som alltid må være på skjermen, uavhengig av innholdet i andre underområder på skjermen;
  • å presentere informasjon som er hensiktsmessig arrangert i flere tilstøtende underområder av vinduet, som hver kan sees uavhengig.

Den gitte listen uttømmer ikke alle mulige tilfeller der rammer kan påføres, men er av anbefalende karakter.

La oss først vurdere typisk bruk av rammer ved å bruke eksempler på virkelige HTML-dokumenter, og deretter gå til reglene for utvikling av dokumenter som inneholder rammer.

I fig. Figur 5.1 viser en av HTML-sidene til Finmarket-byrået, som spesialiserer seg på å gi informasjon fra finans- og aksjemarkedene i Russland.

Ris. 5.1. Et typisk webdokument med en rammestruktur

Denne siden deler nettleservinduet i tre rammer. Nedre del vinduet opptar 20 % av høyden på hele vinduet og inneholder permanent informasjon, som i dette tilfellet er en grafisk meny som lar deg få tilgang til de viktigste delene til enhver tid. Denne rammen kan ikke endre størrelsen basert på brukerkommandoer og har ikke rullefelt. Øverste del vindu (80 % av høyden) er delt horisontalt i to rammer. Den venstre rammen inneholder innholdsfortegnelsen til dokumenter som kan ses av brukeren. Den høyre rammen, som opptar det meste av visningsvinduet, er ment å vise selve dokumentene. Når de først ble lastet, deler disse to rammene nettleservinduet horisontalt med et forhold på 15 % til 85 %. Dette forholdet kan endres av brukeren under visning, noe som lar deg velge de optimale rammestørrelsene under hensyntagen til innholdet i de lastede dokumentene. Hver av disse rammene har sin egen rullefelt, slik at du kan se hele innholdet i rammen, uavhengig av størrelsen på selve rammen, hele nettleservinduet eller skriftene som brukes. Når du velger en kobling i venstre ramme, vil det tilsvarende dokumentet lastes inn i høyre ramme. Denne strukturen lar deg se både innholdsfortegnelsen til dokumenter og innholdet i det valgte dokumentet på skjermen.

Her, uten forklaring, er et fragment av HTML-koden som brukes til å bygge et dokument med denne strukturen:

Dette eksemplet viser den mest typiske bruken av rammestrukturer, der en ramme fungerer som en innholdsfortegnelse for dokumenter og en annen brukes til å laste inn innholdet. Å løse et slikt problem uten å bruke rammer gjøres vanligvis som følger. På en av sidene er det en innholdsfortegnelse, bestående av lenker til andre dokumenter eller deres individuelle fragmenter. Når du klikker på en slik lenke, forsvinner innholdsfortegnelsen, og det nødvendige dokumentet lastes inn på plass, etter å ha lest som du vanligvis trenger å gå tilbake til innholdsfortegnelsen. Ved bruk av rammer blir denne returen unødvendig, siden innholdsfortegnelsen alltid ligger på en del av skjermen.

Du finner den på Internett nettsiden til den elektroniske utgaven av den populære adresse- og telefonkatalogen "All Petersburg" i St. Petersburg.

Den elektroniske versjonen av katalogen er tilgjengelig på http://www.allpetersburg.ru og lar deg finne nødvendig informasjon basert på brukerforespørsler. Denne dokumentsiden har også en rammestruktur og består av to rammer, hvorav den første er 100 piksler bred, og den andre tar opp hele den gjenværende bredden av visningsporten. Rammen på venstre side brukes til en grafisk meny som hele tiden er tilstede på skjermen, og inneholder også Nevalink firmalogo. Den andre rammen inneholder dokumentet, som i dette tilfellet er et brukerforespørselsskjema. Strukturen til denne siden er definert av følgende HTML-kode:

Rammer ligner veldig på tabeller - de deler begge opp nettleservinduet i rektangulære områder der noe informasjon er plassert. Ved hjelp av rammer kan du imidlertid løse ikke bare problemet med formatering av dokumentsider, men også organisere samspillet mellom dem. Den grunnleggende forskjellen mellom rammer og tabeller er at hver ramme må ha sitt eget separate HTML-dokument, men innholdet i alle tabellceller er alltid en del av det samme dokumentet. I tillegg kan siden som vises i rammen rulle når den vises uavhengig av de andre. Hver ramme er egentlig en egen "mininettleser". I motsetning til rammer, hvis hele strukturen alltid vises på skjermen, kan det hende at tabeller ikke passer helt inn i vinduet og kan bare sees i deler. Det følger at hvis det totale antallet celler i HTML-tabeller er praktisk talt ubegrenset og kan nå flere hundre, så overstiger vanligvis ikke antall rammer i et dokument flere enheter.

Råd

Hvis du bare trenger å formatere et dokument, er det nok å begrense deg til å bruke tabeller. Hvis du trenger å løse mer komplekse problemer, for eksempel organisere interaksjon mellom vindusdelområder eller lage delområder som er permanent plassert på skjermen, er det praktisk å bruke rammer.

Til syvende og sist avhenger valget av dokumentstruktur - tabellform eller ramme - av mange faktorer og kan ikke entydig forhåndsbestemmes.

Det er ogsåsider som ser ut til å være bygget på samme måte som de forrige. For eksempel kan du ta side med en veldig populær verdensomspennende samling av programvareprodukter designet primært for arbeid med Internett. Server adresse http://www.tucows.com. Merk at navnet på serveren ble bestemt av en forkortelse avledet fra forkortelsen av det fulle navnet på samlingen - The Ultimate Collection of Winsock Software. Siden forkortelsen tucows viste seg å stemme overens med uttrykket to cows (to cows), er bilder av kuer ofte funnet på serversidene, og vurderingen av programvareprodukter er estimert i antall mooings ("Moo") og er grafisk avbildet som en rad med tilsvarende antall kyr. De fleste serversidene er bygget på samme måte - på venstre side av vinduet er det en liste over tilgjengelige seksjoner, og på høyre side er det en liste over programvareprodukter for den valgte delen. Ved første øyekast bør strukturen til dokumentet se omtrent den samme ut som i de foregående eksemplene. Dette dokumentet bruker imidlertid ikke rammer! Denne siden er bygget ved hjelp av en tabell som består av bare én rad med to celler. Tabellen har ingen ramme og tjener kun formålet med å formatere siden. Inntrykket av en vertikalt delt skjerm skapes ved å bruke en bakgrunnsgrafikk som inneholder vertikal linje, og ikke et tabellnett i det hele tatt. Du kan bekrefte dette ved å se på siden uten å laste inn bilder. Bruken av en tabell her skyldes tilsynelatende hensyn til større tilgjengelighet av dokumenter, siden rammer ikke tillater visning i alle nettlesere.

Ulempen med denne tilnærmingen i dette tilfellet er behovet for å gjenta hele listen over seksjoner (venstre side av siden) i hvert dokument, noe som øker filstørrelsen litt.

En sammenligning av eksemplene ovenfor viser at bruken av tabeller og rammer noen ganger kan være utskiftbare og bestemmes av utviklernes ønsker. Merk at når du ser på en side med et dokument vist på den, er det ofte umulig å fastslå hvordan den er bygget opp. Sluttbrukeren trenger ikke å kjenne den interne strukturen til dokumentet, men når han utvikler sine egne websider, vil det være svært nyttig å gjøre seg kjent med kildekoden til eksisterende dokumenter. I det første eksemplet (se fig. 5.1) er rammestrukturen til dokumentet umiddelbart synlig - tilstedeværelsen av to vertikale rullefelt bestemmer allerede tilstedeværelsen av individuelle rammer. De følgende to eksemplene er veldig like i utseende, og det er umulig å fastslå at den første av dem er bygget ved hjelp av rammer, og den andre - ved hjelp av tabeller. Forskjeller vil bare vises når du arbeider med dem. I eksemplet med en telefonkatalog, når du ruller et dokument, vil venstre del av vinduet forbli på plass, noe som bare er mulig hvis det er en rammestruktur. I det følgende eksempelet (en samling programvareprodukter), vil rulling flytte hele innholdet i vinduet.

Du kan se dokumentstrukturen når du arbeider med Netscape-nettleseren ved å bruke Side Info-elementet (i versjon 3.x av Netscape-nettleseren ble dette menyelementet kalt Document Info) i Vis-menyen (fig. 5.2).

Ris. 5. 2 . Netscape-nettleservisningsmeny

I tillegg kan du alltid se HTML-kildekoden til hele dokumentet ved å bruke Sidekilde-elementet i Vis-menyen (eller View Frame Source-elementet på høyreklikk-kontekstmenyen for å se HTML-koden til dokumentet som er lastet inn i valgt ramme).

Råd

Du bør ikke misbruke bruken av rammer unødvendig, og antallet bør ikke overstige tre eller fire.

Ofte på ekte sider på Internett kan du se følgende tilfeller av bruk av rammer:to tilstøtende rammer brukes til å laste inn dokumenter som er praktiske å se samtidig og sammenligne med hverandre. Hvert av de to dokumentene som er lastet inn i rammer bruker en tabellform for å presentere informasjon. Som et resultat av denne organiseringen av data kan hver av de to tabellene sees (eller skrives ut) separat, eller studeres i sammenligning med den andre.

Alle eksemplene gitt i denne delen er hentet fra sidene til populære WWW-servere og kan kanskje tjene som eksempler på bruk av rammer i HTML-dokumenter.

Etterfølgende deler av dette kapittelet dekker regler for å skrive dokumenter som inneholder rammer.

Regler for beskrivelse av rammer

La oss nå gå videre til å vurdere reglene for å skrive tagger som brukes for dokumenter med rammestrukturer.

La oss først se på den komplette HTML-koden som lager et dokument med rammer med middels kompleksitet:

</p> <p>

Dette eksemplet lager den innrammede siden vist i figuren. 5.3. Som du kan se, definerer denne HTML-koden fire rammer. Den øverste rammen spenner over hele sidens bredde og inneholder overskriften. Neste er to sentrale rammer, hvorav den ene er plassert på venstre side og tar opp 25 prosent av skjermbredden, og den andre tar opp den resterende plassen. Den siste, fjerde rammen opptar den nedre fjerdedelen av skjermen. Et separat HTML-dokument lastes inn i hver ramme, hvis navn bestemmes av SRC-parameteren.

Som det fremgår av eksempelet, brukes tagger for å beskrive strukturen til rammer , Og . La oss se på formålet med disse kodene.</p> <span> <br><img src='https://i0.wp.com/webnav.ru/books/html4/frames/07.gif' width="100%" loading=lazy loading=lazy></span> <p><i><b>Ris. 5. <span>3 . </b> Resultatet av at Netscape-nettleseren viser HTML-dokumentet med rammer vist i eksempelet</span> </i></p> <p><b>stikkord <FRAMESET> </b></p> <p>Rammer er definert i en struktur kalt FRAMESET, som brukes for sider som inneholder rammer i stedet for en BODY-seksjon <a href="https://whatsappss.ru/no/tips/pole-html-dokumenta-1s-obychnye-formy-upravlyaemye-formy-pole-html.html">vanlig dokument</a>. Nettsider som består av rammer kan ikke inneholde en BODY-seksjon i HTML-koden. På sin side kan sider med BODY-seksjon ikke bruke rammer.</p> <p><i><b>Råd</b> </i></p> <p><i> <span>Siden innrammede sider ikke har en BODY-seksjon, er det ingen måte å angi et bakgrunnsbilde og bakgrunnsfarge for hele siden. Husk at disse innstillingene bestemmes av BACKGROUND- og BGCOLOR-parametrene skrevet i BODY-taggen. Dette hindrer deg imidlertid ikke i å laste inn dokumenter med sine egne bakgrunnsinnstillinger i hver ramme.</span> </i></p> <p>Beholder med tagger <FRAMESET>Og</FRAMESET> rammer hver rammedefinisjonsblokk. Inne i beholderen <FRAMESET>kan bare inneholde tagger <FRAME>og nestede tagger <FRAMESET>. </p> <p>stikkord <FRAMESET>har to parametere: ROWS (rader) og COLS (kolonner) og er skrevet som følger:</p> <p><FRAMESET ROWS="список_ значений" COLS="список_ значений">. </p> <p><i><b>Merk</b> </i></p> <p><i> <span>Noen nettlesere tillater ekstra tag-parametere <FRAMESET></span> </i></p> <p>Du kan definere verdier for ROWS eller COLS, eller begge deler. Det er nødvendig å definere minst to verdier for minst én av disse parameterne. Hvis en annen parameter utelates, antas verdien å være 100 %.</p> <p><i><b>Råd</b> </i></p> <p><i> <span>Hvis i en tag <FRAMESET>Hvis bare én verdi er definert for ROWS og COLS, vil denne taggen anses som ugyldig og nettleseren vil ignorere den. Det er med andre ord umulig å fastslå <FRAMESET>, bestående av kun én ramme.</span> </i></p> <p>Liste over tag ROWS og COLS parameterverdier <FRAMESET>er en kommadelt liste over verdier som kan spesifiseres i piksler, prosenter eller relative enheter. Antall rader eller kolonner bestemmes av antall verdier i den tilsvarende listen. For eksempel, ta opp</p> <p><FRAMESET ROWS="100,240,140"> </p> <p>definerer et sett med tre rammer. Disse verdiene er absolutte pikselverdier. Med andre ord, den første rammen (første rad) er 100 piksler høy, den andre er 240 piksler, og den siste er 140 piksler høy.</p> <p>Å angi verdier for rammestørrelse i piksler er ikke veldig praktisk. Dette tar ikke hensyn til at nettlesere kjører på forskjellige operativsystemer og med forskjellige skjermoppløsninger. Samtidig er det mulig å definere absolutte størrelsesverdier for noen tilfeller, for eksempel for å vise et lite bilde med kjente dimensjoner. Det beste alternativet ville være å angi verdiene i prosenter eller relative enheter, for eksempel:</p> <p><FRAMESET ROWS="25%,50%,25%">. </p> <p>Dette eksemplet lager tre rammer som er plassert som rader over hele skjermens bredde. Den øverste raden vil ta opp 25 prosent av tilgjengelig skjermhøyde, den midterste raden vil ta opp 50 prosent, og den nederste raden vil ta opp 25 prosent. Hvis summen av de spesifiserte prosentene ikke tilsvarer 100%, vil verdiene skaleres proporsjonalt slik at resultatet blir nøyaktig 100%.</p> <p>Verdiene i relative enheter er som følger:</p> <p><FRAMESET COLS="*,2*,3*">. </p> <p>En stjerne (*) brukes til å dele mellomrom proporsjonalt. Hver stjerne representerer en del av helheten. Ved å legge sammen alle verdiene til tallene ved siden av stjernene (hvis et tall er utelatt, antas ett), får vi nevneren til brøken. I dette eksemplet vil den første kolonnen ta opp 1/6 av den totale bredden av vinduet, den andre kolonnen vil ta opp 2/6 (eller 1/3), og den siste vil ta opp 3/6 (eller 1/ 2).</p> <p>Husk at en numerisk verdi uten tegn spesifiserer det absolutte antallet piksler for en rad eller kolonne. En verdi med et prosenttegn (%) angir andelen av den totale bredden (for COLS) eller høyden (for RADER) til visningsporten, og en verdi med en stjerne (*) angir den proporsjonale fordelingen av gjenværende plass.</p> <p>Her er et eksempel som bruker alle tre alternativene for å angi verdier:</p> <p><FRAMESET COLS="100,25%,*,2*">. </p> <p>I dette eksemplet vil den første kolonnen være 100 piksler bred. Den andre kolonnen vil ta opp 25 prosent av hele visningsportens bredde, den tredje kolonnen vil ta opp 1/3 av den gjenværende plassen, og til slutt vil den siste kolonnen ta opp 2/3. Det anbefales å tilordne absolutte verdier først i rekkefølge fra venstre mot høyre. De blir fulgt <a href="https://whatsappss.ru/no/utilities/formula-v-eksel-umnozhenie-na-odnu-yacheiku-kak-v-eksele.html">prosentverdier</a> av plassens totale størrelse. Til slutt registreres verdier som bestemmer den proporsjonale deling av gjenværende plass.</p> <p><i><b>Råd</b> </i></p> <p><i> <span>Hvis du bruker absolutte COLS- eller ROWS-verdier, hold dem små slik at de kan passe inn i et hvilket som helst nettleservindu, og fyll dem etter behov. <a href="https://whatsappss.ru/no/browser/adaptaciya-tablicy-dlya-vseh-razmerov-ekranov-povorachivat.html">i det minste</a>, en enkelt verdi, spesifisert i prosent eller relativ form, for å fylle den gjenværende plassen.</span> </i></p> <p>Hvis taggen brukes <FRAMESET>, der både COLS- og ROWS-verdier er spesifisert, vil et rutenett med rammer opprettes. For eksempel:</p> <p><FRAMESET ROWS="*,2*,*" COLS="2*,*"> </p> <p>Denne linjen med HTML-kode lager et rammenett med tre rader og to kolonner. Den første og siste linjen tar opp 1/4 av høyden hver, og den midterste linjen tar opp halvparten. Den første kolonnen tar opp 2/3 av bredden, og den andre - 1/3.</p> <p>Container <FRAMESET> </FRAMESET> kan nestes inne i en annen lignende beholder, som vist i det første eksemplet. La oss vurdere bruken av taggen ytterligere <FRAME>. </p> <p><i><b>Merk</b> </i></p> <p><i> <span>Noen kilder på HTML-språket indikerer at COLS- og ROWS-parametrene til taggen <FRAMESET>utelukker hverandre. Både Netscape og Microsoft Internet Explorer tillater imidlertid at de brukes sammen.</span> </i></p> <p><b>stikkord <FRAME> </b></p> <p>stikkord <FRAME>definerer en enkelt ramme. Den må være plassert inne i et par tagger <FRAMESET>Og</FRAMESET>. For eksempel:</p> <p><FRAMESET ROWS="*,2*"> </p> <p><FRAME> </p> <p><FRAME> </p> <p></FRAMESET> </p> <p>Vær oppmerksom på at taggen <FRAME>er ikke en beholder og ulik <FRAMESET>har ikke sluttmerke. Hele definisjonen av en enkelt ramme gjøres med én linje med HTML-kode.</p> <p>Det er så mange tagger å ta opp <FRAME>hvor mange individuelle rammer som er definert når du spesifiserer taggen <FRAMESET>. I det forrige eksemplet, taggen <FRAMESET>to strenger ble gitt, så to tagger måtte skrives <FRAME>. Imidlertid er dette eksemplet i hovedsak ubrukelig, siden ingen av rammene har noe innhold!</p> <p>stikkord <FRAME>har seks parametere: SRC, NAME, MARGINWIDTH, MARGINHEIGHT, SCROLLING og NORESIZE.</p> <p><i><b>Merk</b> </i></p> <p><i> <span>Noen nettlesere lar deg bruke en rekke ekstra kodeparametere <FRAME>. En oversikt over funksjonene til nettleserne Netscape og Microsoft Internet Explorer er gitt på slutten av kapittelet.</span> </i></p> <p>Her er tag-oppføringen: <FRAME>med alle parametere:</p> <p><FRAME SRC="url" NAME="window_name" SCROLLING=YES|NO|AUTO </p> <p>MARGINWIDTH="verdi" MARGINHEIGHT="verdi" NORESIZE></p> <p>I praksis i taggen <FRAME>Sjelden brukes alle parametere samtidig.</p> <p>Mest <a href="https://whatsappss.ru/no/office-programs/grafika-dlya-gta-5-s-avtomaticheskoi-ustanovkoi-grand-theft-auto-v.html">viktig parameter</a>- SRC (forkortelse for kilde). Ganske ofte i taggen <FRAME>en enkelt SRC-parameter er spesifisert. For eksempel:</p> <p><FRAME SRC="url">. </p> <p>Verdien til SRC-parameteren bestemmer URL-en til dokumentet som først skal lastes inn i denne rammen. Vanligvis er denne adressen navnet på en HTML-fil som ligger i samme katalog som hoveddokumentet. Da vil rammedefinisjonslinjen se for eksempel slik ut:</p> <p><FRAME SRC="sample.htm">. </p> <p>Merk at enhver HTML-fil spesifisert i rammedefinisjonen må være et komplett HTML-dokument, ikke et fragment. Dette betyr at dokumentet må ha HTML, HEAD, BODY osv.-tagger.</p> <p>Selvfølgelig kan SRC-verdien være en hvilken som helst gyldig URL. Hvis for eksempel rammen brukes til å vise et GIF-bilde som ligger på serveren til utgiveren av denne boken, bør du skrive:</p> <p><FRAME SRC="http://www.bhv.ru/example.gif">. </p> <p><i><b>Råd</b> </i></p> <p><i> <span>Ikke ta med noe innhold i dokumentet som beskriver rammestrukturen.</span> </i></p> <p>Ren tekst, overskrifter, grafikk og andre elementer kan ikke brukes direkte i et dokument som beskriver en rammestruktur. Alt innhold i rammer må defineres i separate HTML-filer, hvis navn er spesifisert av SRC-parameteren til taggen <FRAME>. </p> <p>NAME-parameteren spesifiserer et rammenavn som kan brukes til å referere til denne rammen. Vanligvis settes koblingen fra en annen ramme som ligger på samme side. For eksempel:</p> <p><FRAME SRC="sample.htm" NAME="Frame_1">. </p> <p>Denne oppføringen oppretter en ramme kalt "Frame_1" som kan refereres til. For eksempel:</p> <p>Klikk her for å laste ned</p> <p>dokument other.htm inn i en ramme kalt Frame_1.</p> <p>Legg merke til TARGET-parameteren, som refererer til rammenavnet. Hvis en ramme ikke får et navn, vil en ikke navngitt ramme bli opprettet og det vil ikke være mulig å referere til den fra en annen ramme. Rammenavn må begynne med et alfanumerisk tegn.</p> <p>Parameterne MARGINWIDTH og MARGINHEIGHT lar deg angi bredden på rammemarginene. Dette er skrevet som følger:</p> <p>MARGINWIDTH="verdi",</p> <p>der "verdi" er den absolutte verdien i piksler. For eksempel:</p> <p>Denne rammen har marger øverst og nederst på 5 piksler, og til venstre og høyre - 7 piksler. Husk at vi snakker om marginer her, ikke grenser. Parameterne MARGINWIDTH og MARGINHEIGHT definerer rommet innenfor rammen der ingen informasjon vil bli plassert. Minste akseptable verdi for disse parameterne er én.</p> <p>Rammer vil automatisk opprette og vise rullefelt hvis innholdet i rammen ikke passer helt innenfor den tildelte plassen. Noen ganger bryter dette utformingen av siden, så det ville være nyttig å kunne kontrollere visningen av rullefelt. SCROLLING-parameteren brukes til disse formålene. Opptaksformat:</p> <p><FRAME SCROLLING="YES|NO|AUTO">. </p> <p>RULLING-parameteren kan ha tre verdier: YES, NO eller AUTO. AUTO-verdien har samme effekt som om det ikke var noen RULLING-parameter. Verdien JA gjør at rullefelt vises uavhengig av om de er nødvendige, og NEI hindrer dem i å vises. For eksempel:</p> <p><FRAME SCROLLING=YES>. </p> <p>Vanligvis kan brukeren endre størrelsen på rammer mens de ser på siden. Hvis du plasserer musepekeren på rammen, vil markøren få en form som indikerer muligheten for å endre størrelse og tillate deg å flytte rammen til ønsket plassering. Dette bryter noen ganger strukturen til vakkert designede rammer. For å forhindre at brukeren endrer størrelsen på rammer, bruk NORESIZE-parameteren:</p> <p><FRAME NORESIZE>. </p> <p>Denne parameteren krever ingen verdier. Naturligvis, når NORESIZE-parameteren er satt for en av rammene, kan heller ikke størrelsen på noen av de tilstøtende rammene endres. Noen ganger, avhengig av utformingen av rammene, vil bruk av NORESIZE-parameteren på en av rammene være nok til å forhindre at noen av dem endres på skjermen.</p> <p><b>stikkord <NOFRAMES> </b></p> <p>Muligheten til å jobbe med rammer var ikke inkludert i hverken HTML 3.0- eller HTML 3.2-standarden. Her var det inntil nylig en ganske typisk situasjon når faktisk brukte funksjoner brukes aktivt på mange WWW-sider, men ikke er en del av standarden. Dette betydde at nettlesere legitimt kunne ignorere rammer. Med bruken av HTML 4.0-standarden har situasjonen endret seg - nå er støtte for rammestrukturer nedfelt i standarden. Vær oppmerksom på at de fleste moderne nettlesere gjenkjente rammer allerede før bruken av HTML 4.O. Det er imidlertid nødvendig å gi informasjon til brukere som bruker nettlesere som ikke støtter rammer. For slike nettlesere er det mulig å gi alternativ informasjon som er skrevet mellom et par tagger <NOFRAMES>Og. Det ser slik ut:

</p> <p>hele HTML-dokumentet</p> <p>

Alt plassert mellom tagger Og, vil vises av nettlesere som ikke har rammestøttefunksjoner. Rammebevisste nettlesere vil ignorere all informasjon mellom disse taggene.

Merk at i det virkelige liv bruker HTML-sideutviklere ofte ikke kodens funksjoner å lage sider uten rammestrukturer, men ganske enkelt lage to versjoner av HTML-dokumentene sine. For dette alternativet <a href="https://whatsappss.ru/no/browser/kak-sdelat-stranicu-startovoi-v-mozile-ustanovka-nachalnoi-stranicy-v.html">hjemmeside</a> Vanligvis tilbys du valget mellom å laste et dokument med eller uten rammestruktur. Deretter, avhengig av brukerens valg, lastes bare én versjon av dokumentet.</p> <p><b><span>Funksjoner ved å beskrive rammestrukturer</span> </b></p> <p>En av de viktigste taggene som brukes når man beskriver rammestrukturer, er taggen <FRAME>. En tag har en rekke parametere, hvorav ingen er påkrevd eller avhengig av de andre, men det er en rekke ting du bør vurdere når du skriver dem.</p> <p>Det viser seg at hvis du trenger å lage en ramme som et dokument senere kan lastes inn i, for eksempel ved kommando fra en annen ramme, bør du bruke taggen <FRAME>skriv SRC-parameteren. Hvis dette</p> <p>parameteren er utelatt, rammen vil ikke bli opprettet, selv om det blir igjen plass til den. For eksempel en plate som <FRAME NAME="B">er ganske logisk og kan definere en ramme kalt "B" som ikke noe dokument først lastes inn i. Men på grunn av fraværet av SRC-parameteren, vil en ramme med det navnet ikke eksistere, så ytterligere forsøk på å laste et dokument inn i den vil forbli mislykket, og plassen i vinduet som er tildelt for denne rammen, vil være tom. Dessuten vil noen nettlesere (for eksempel Microsoft Internet Explorer versjon 3 for Windows Z.xx) vise en feilmelding og avslutte når de prøver å laste et dokument inn i en slik ramme.</p> <p>Kravet til å sette SRC-parameteren kan ikke forklares logisk, så det er best å bare legge merke til dette faktum. Deretter, selv om det ikke er noe dokument som må lastes inn i denne rammen helt fra begynnelsen, bør du spesifisere navnet på en fil i SRC-parameteren. For eksempel kan en slik fil kalles empty.htm (tom), hvis innhold vil være et minimum mulig korrekt HTML-dokument, nemlig:</p> <p><HTML> </p> <p><HEAD> </p> <p></HEAD> </p> <p><BODY> </p> <p></BODY> </p> <p></HTML> </p> <p>Du kan redusere dette dokumentet til to koder: <HTMLX/HTML>, som også vil være et gyldig HTML-dokument. Ved å følge banen for å maksimalt redusere størrelsen på et "tomt" dokument, kan du begrense deg til en fil hvis størrelse er lik én byte, som lagrer mellomromstegnet (eller et hvilket som helst annet tegn som ikke kan vises). Denne filen vil ikke være et gyldig HTML-dokument, men vil ikke forårsake problemer med de fleste nettlesere. Ytterligere å redusere størrelsen på en slik fil til null er ikke berettiget, siden når den lastes inn av Netscape-nettleseren, vil den vise en advarsel (fig. 5.4) om at dokumentet ikke inneholder data.</p> <span> <img src='https://i0.wp.com/webnav.ru/books/html4/frames/08.gif' height="119" width="332" loading=lazy loading=lazy></span> <p><i><b>Ris. 5. <span>4 . </b> Advarselsmelding ved opplasting av en null-lengde fil</span> </i></p> <p>Samtidig, på <a href="https://whatsappss.ru/no/security/akkompanirovat-otpravit-kopiyu-na-moi-e-mail-avtomaticheskaya-otpravka-kopii.html">Denne meldingen</a> du må reagere ved å trykke på en tast <Enter>eller museknapp. Hver gang dokumentet lastes inn på nytt eller nettleservinduet endres, vil meldingen vises igjen.</p> <p>Du kan også spesifisere navnet på en ikke-eksisterende fil, men i dette tilfellet vil Netscape-nettleseren vise en advarselsmelding (fig. 5.5), som ikke vil forhindre videre arbeid, men vil føre til lignende ulemper.</p> <span> <img src='https://i0.wp.com/webnav.ru/books/html4/frames/09.gif' height="139" width="314" loading=lazy loading=lazy></span> <p><i><b>Ris. 5. <span>5 . </b> Advarsel når du prøver å laste ned en ikke-eksisterende fil</span> </i></p> <p><i><b>Råd</b> </i></p> <p><i> <span>Lag en fil kalt empty.htm som er én byte stor og inneholder et mellomrom. Gjør det til en regel når du skriver en tag <FRAME>spesifiser alltid SRC=empty.htm hvis det er umulig å umiddelbart spesifisere navnet på en spesifikk fil.</span> </i></p> <p>Eksempler på rammer</p> <p>Denne delen gir noen typiske eksempler på rammedefinisjoner.</p> <p>La oss gå tilbake til eksemplet gitt i begynnelsen av denne delen (fig. 5.3). Dette eksemplet bruker en nestet struktur <FRAMESET>. Ekstern tag <FRAMESET>oppretter tre rader med høyde, henholdsvis 25, 50 og 25 prosent av den totale høyden til visningsporten:</p> <p><FRAMESET ROWS="25%,50%,25%">. </p> <p>Innenfor dette definisjonsomfanget er den første og siste linjen enkle rammer:</p> <p><FRAME SRC="header.htm"> <FRAME SRC="footer.htm"> </p> <p>Hver av disse linjene fyller hele bredden av skjermen. Den første linjen øverst på skjermen tar opp 25 prosent av høyden, og den tredje linjen nederst tar også opp 25 prosent av høyden. Mellom dem er det imidlertid en nestet tag <FRAMESET>: </p> <p><FRAMESET COLS="25%,75%"> </p> <p><FRAME SRC="list.htm"> </p> <p><FRAME SRC="info.htm"> </p> <p></FRAMESET> </p> <p>Denne taggen definerer to kolonner som den midterste raden på skjermen er delt inn i. Raden som inneholder disse to kolonnene tar opp 50 prosent av skjermhøyden, som definert i den ytre taggen <FRAMESET>. Den venstre kolonnen bruker 25 prosent av skjermbredden, mens den høyre kolonnen tar opp de resterende 75 prosentene av bredden.</p> <p>Rammene for disse kolonnene er definert i et nestet par med tagger <FRAMESET>Og</FRAMESET>, mens definisjonen av rammer for den første og siste linjen er skrevet utenfor dette paret, men innenfor den ytre <FRAMESET>i riktig rekkefølge.</p> <p>Poststrukturen er lett å forstå hvis du tenker på den som en nestet blokk <FRAMESET>som et eget element <FRAME>. I vårt eksempel, den ytre taggen <FRAMESET>definerer tre linjer. Hver av dem må fullføres. I dette tilfellet fylles de først med et eget element <FRAME>, deretter - som en nestet blokk <FRAMESET>to kolonner brede og deretter et annet element <FRAME>. </p> <p>Nå kan spørsmålet oppstå om verdien av SRC-tag-parameteren kan være <FRAME>angi navnet på filen, som igjen inneholder en beskrivelse av rammestrukturen. Ja, dette er akseptabelt. I dette tilfellet taggen <FRAME>vil bli brukt til å peke på et HTML-dokument som er en rammestruktur og brukes som en egen ramme.</p> <p>La oss gå tilbake til eksemplet og erstatte det nestede <FRAMESET>til en separat <FRAME>. Naturligvis trenger du to HTML-filer i stedet for én, siden nestet <FRAMESET>vil nå ligge i et eget dokument. Her er innholdet i den første (eksterne) filen:</p> <p><HTML> </p> <p><HEAD> </p> <p></HEAD> </p> <p><FRAMESET ROWS="25%,50%,25%"> </p> <p><FRAME SRC="header.htm"> </p> <p><FRAME SRC="frameset.htm"> </p> <p><FRAME SRC="footer.htm"> </p> <p></FRAMESET> </p> <p><NOFRAMES> </p> <p>Nettleseren din kan ikke vise rammer</p> <p>

Den andre filen, kalt frameset.htm, inneholder følgende kode:

I dette tilfellet oppfører topp- og bunnlinjen seg likt. Men den andre linjen er nå en enkel ramme som de andre. Frameset.htm-filen som SRC-parameteren peker på, definerer imidlertid sin egen rammestruktur. Som et resultat vil skjermen vise nøyaktig det samme som i det originale eksemplet.

Merk

Det er i prinsippet mulig å lage nestede strukturer , ved å bruke tagger , som refererer til den samme filen som beskriver rammestrukturen, men dette bør ikke gjøres. Denne situasjonen vil føre til endeløs rekursjon og vil ikke tillate videre arbeid. Noen nettlesere kontrollerer denne situasjonen og forhindrer muligheten for feil. Hvis adressen skrevet til SRC samsvarer med en av de tidligere adressene i rammehierarkiet, ignoreres den, som om SRC-parameteren ikke var til stede i det hele tatt.

Råd

Bruke nestede strukturer i ulike kombinasjoner er det mulig å lage nesten hvilket som helst rammenett du kan tenke deg. Husk imidlertid å lage et brukervennlig grensesnitt og ikke bare demonstrere din evne til å jobbe med rammer.

Her er et eksempel på hvordan du lager et vanlig rektangulært rutenett med rammer:

Dette eksemplet lager et rammenett med to rader og tre kolonner (Figur 5.6). Siden et sett med seks rammer er definert, er det også nødvendig å definere seks individuelle rammer . Vær oppmerksom på at rammedefinisjoner er gitt linje for linje. Det vil si den første taggen definerer innholdet i den første kolonnen i den første raden, den andre definerer innholdet i den andre kolonnen, og den tredje definerer dataene for den siste kolonnen i den første raden. De tre siste rammene fyller deretter kolonnene i den andre raden.


Ris. 5. 6 . 2 x 3 rammer rutenett

Merk også at summen av prosentverdiene i COLS-parameteren ikke er 100, men bare 90 prosent. Det er ingenting galt med dette, siden nettleseren automatisk vil proporsjonalt endre bredden på kolonnene for å eliminere denne motsetningen.

Funksjoner ved navigering ved bruk av rammer

Arbeid med dokumenter som har en rammestruktur har noen funksjoner du trenger å kjenne til. Disse funksjonene til JB er hovedsakelig manifestert i navigasjon når du laster dokumenter. Betydelige forskjeller i navigasjon er karakteristiske ikke bare for forskjellige nettlesere, men også forskjellige versjoner samme nettleser.

Netscape-nettleserversjonene 3.x og 4.x, når du klikker på Tilbake-knappen, returnerer dokumentet tilbake til rammen som sist ble utført. De samme handlingene vil bli utført hvis Tilbake-elementet er valgt når du kaller opp kontekstmenyen i noen av rammene. La oss minne deg på at kontekstmenyen hentes frem ved å klikke med høyre museknapp. Dermed, uavhengig av hvilken ramme kontekstmenyen ble kalt inn, vil et trykk på Tilbake-knappen avbryte den siste operasjonen, selv om den ble utført i en annen ramme.

Netscape 2.x-nettleseren fungerte helt annerledes. Kontekstmenyen inneholder kommandoen Tilbake i ramme, som returnerer dokumentet til gjeldende ramme i stedet for å angre den siste operasjonen.

I enhver versjon av Netscape kan du bokmerke et dokument i en valgt ramme. For å gjøre dette, må du velge Legg til bokmerke-modus fra kontekstmenyen nevnt ovenfor. Hvis du ganske enkelt velger Legg til bokmerke-modus fra hovedmenyen til nettleseren, vil det lages et bokmerke på dokumentet med en beskrivelse av rammestrukturen , som ikke vil peke nøyaktig til en bestemt ramme. Muligheten til å lage et bokmerke på et dokument med en separat ramme betyr ikke at den samme rammestrukturen vil oppstå når du fortsetter å bruke dette bokmerket. Dokumentet peker på av bokmerket vil bli lastet inn i et fullt vindu utenfor rammestrukturen.

Interaksjon mellom rammer

Den enkleste formen for visning av informasjon på WWW består av å lese sider og følge lenker, der gjeldende dokument i nettleservinduet erstattes av et annet dokument. Når du arbeider med rammer, kan du organisere et mer brukervennlig opplegg for dokumentlasting.

Interaksjon mellom rammer er muligheten til å laste dokumenter inn i den valgte rammen ved hjelp av kommandoer fra en annen ramme. Til dette formålet brukes TARGET-tag-parameteren<А>. Denne parameteren spesifiserer navnet på rammen eller nettleservinduet som dokumentet som denne koblingen peker til, skal lastes inn. Som standard, hvis det ikke er noen TARGET-parameter, lastes dokumentet inn i gjeldende ramme (eller vindu). Denne standarden kan overstyres ved å spesifisere en tag med ønsket verdi av TARGET-parameteren. Det er veldig nyttig å spesifisere navnet på standardrammen som skal lastes inn når et stort antall lenker må dirigere dokumenter til en bestemt ramme. En typisk situasjon med en innholdsfortegnelse i én ramme, lenker som laster tilsvarende dokumenter inn i en tilstøtende ramme, ble vist i begynnelsen av dette kapittelet (Figur 5.1). For dette eksemplet i seksjonen fil med navnet LIST.htm, er det tilrådelig å skrive følgende linje: . Ellers må du spesifisere en TARGET-parameter for hver lenke.

Rammenavn må begynne med en latinsk bokstav eller tall. Navnet kan være navnet på et eksisterende vindu eller en ramme, eller et nytt navn kan angis som et nytt vindu vil bli åpnet under. Det er fire reserverte navn som utfører spesielle handlinger når de er spesifisert. Disse navnene begynner med en understreking (_): "_blank", "_selv", "_foreldre" og "_top". Ethvert annet navn som begynner med en understrek er ikke gyldig.

TARGET="_blank" - sørger for at dokumentet lastes inn i et nytt vindu. Dette vinduet vil ikke ha et navn, og det vil derfor ikke være mulig å laste inn et annet dokument i det.

TARGET="_selv" - dokumentet vil bli lastet inn i gjeldende ramme (eller vindu). Denne oppføringen skal brukes til å omgå standarden spesifisert av taggen .

TARGET="_top" - fører til at dokumentet lastes inn i hele vinduet. Hvis dokumentet allerede er i et fullt vindu, har denne verdien samme effekt som"_selv".

TARGET="_foreldre" - fører til at dokumentet lastes inn i området som er okkupert av den overordnede rammen til gjeldende ramme. Hvis det ikke er noen overordnet ramme, har denne parameterverdien samme effekt som"_top" .

Merk

Noen HTML-kilder oppgir feilaktig at hvis en ramme ikke har noen overordnet, er verdien "_parent" ekvivalent med "_self". Denne uttalelsen er ikke alltid riktig.

Advarsel

De reserverte rammenavnene "_blank", "_self", "_parent" og "_top" må skrives med små latinske bokstaver. Legg merke til at en slik nøyaktighet er unik for Netscape. Microsoft Internet Explorer gjenkjenner i alle fall reserverte navn som er skrevet.

Her er eksempler på interaksjon mellom rammer og individuelle nettleservinduer. Tenk på følgende HTML-kode:

Bruk av rammer

Dette HTML-dokumentet beskriver en struktur som består av tre rammer kalt "A", "B" og "C". Rammenavn vil være nødvendig senere for å organisere koblinger mellom rammer. Merk at rammen kalt "A" i i dette eksemplet det vil ikke være noen referanser, så det kunne ha stått uten navn i det hele tatt. Når du laster dokumentet ovenfor i en nettleser, vil rammene vise informasjonen i filene identifisert av SRC-parameteren. Ramme "A" vil motta innholdet i frame_a.htm-filen, og de to andre rammene vil motta data fra den tomme.htm-filen, som ikke har noen data å vise. La oss minne deg nok en gang om at HTML-dokumentet som beskriver strukturen til rammer ikke har en del .

Her er teksten til filen som heter frame_a.htm:

Dokument for ramme A

D

4. Laste et dokument i et nytt vindu

5. Laste et dokument i fullt vindu

6. Laste et dokument inn i gjeldende ramme

Dette dokumentet er et komplett HTML-dokument med seksjoner Og og har på sin side lenker til en fil kalt test.htm, som ligger i samme katalog som filen frame_a.htm.

Teksten til test.htm-filen er ekstremt enkel:

Testdokument

Testdokumenttekst

Filen frame_a.htm, hvis innhold ble lastet inn i ramme "A", har seks lenker til samme fil test.htm med forskjellige verdier for TARGET-parameteren.

La oss vurdere handlingene som vil skje når du implementerer disse koblingene. Den første lenken med verdien TARGET="B" vil laste filen test.htm inn i en ramme kalt "in". Merk at etter å ha implementert noen av de seks lenkene, vil Netscape-nettleseren automatisk farge alle seks i en annen farge, siden de peker til den samme filen. Microsoft Internet Explorer merker kun koblinger som faktisk er implementert.

Den andre lenken vil gjøre det samme for ramme "C". Til å begynne med er det ingenting i rammene "B" og "C" (mer presist, innholdet i den tomme filen empty.htm lastes inn). Implementeringen av den første og andre lenken vil fylle disse rammene.

Den tredje lenken med verdien TARGET=MD" vil føre til dannelsen av et nytt nettleservindu med navnet "D" og laste test.htm-filen inn i den. Merk at formen for å skrive denne lenken ikke er forskjellig fra den første to. Forskjellen er at i den første I to tilfeller ble det gitt referanser til eksisterende rammer, hvis navn ble definert i filen med rammestrukturen, og i dette tilfellet ble referansen gitt til et ikke-eksisterende objekt. denne referansen gjøres minst én gang, deretter opprettes et vindu med navnet "D" og gjentatt klikk på lenken vil kun laste inn dataene på nytt inn i det nå eksisterende vinduet "D". Selvfølgelig kan brukeren lukke det når som helst tid og lag den på nytt ved å velge denne lenken Figur 5.7 viser situasjonen etter at de tre første lenkene er implementert Husk at plasseringen og størrelsene på vinduene på skjermen bestemmes av brukeren.

Ris. 5. 7 . Situasjonen oppnådd etter sekvensiell implementering av de tre første koblingene tilgjengelig i venstre ramme

Den femte lenken med verdien TARGET="_top" vil laste dokumentet i hele vinduet i stedet for hele rammestrukturen. Med denne verdien av TARGET-parameteren opprettes ikke et nytt vindu. Gå tilbake til rammestrukturen er mulig ved å klikke på Tilbake-knappen.

Merk

Navnene på rammer eller nettleservinduer må ikke forveksles med navnene på nedlastede dokumenter. Navnene på rammene er ikke synlige noe sted når de vises; de kreves bare for å organisere interaksjon og er derfor skjult for brukeren. Du kan bare se dem når du ser på kildeteksten til HTML-filer.

Råd

La oss minne deg på at navnene på nedlastede dokumenter er spesifisert av taggen . Hvis et dokument er lastet inn i et fullt vindu, vises navnet øverst i nettleservinduet. Hvis et dokument er lastet inn i en ramme, vises ikke navnet hvor som helst, og tittelen på dokumentet som inneholder en beskrivelse av dokumentets rammestruktur vil fortsatt være plassert i den øvre delen av vinduet. Derfor er ikke navnene på dokumenter som skal vises i rammer, veldig viktige. For eksempel, i fig. 5.7 det samme dokumentet lastes inn i rammene "B" og "C", samt i et eget vindu kalt "D", mens navnet på dokumentet kun er synlig i vindu "D". Det anbefales imidlertid neppe å utelate navnene på dokumenter som er lastet inn i rammer, da de for eksempel kan vises i bokmerkelisten når du oppretter et bokmerke for et dokument som ligger i en ramme eller liste over viste dokumenter.</span> </i></p> <p>La oss se på et annet interessant eksempel på organisering av interaksjon mellom rammer og nettleservinduer. La det være teksten til det hovedlastede HTML-dokumentet:</p> <p><HTML> </p> <p><HEAD> </p> <p><TITLE>Bruker vindusnavn

Et dokument med en rammestruktur inn i et nytt vindu

Bruk av rammer

Vær oppmerksom på at hvis hoveddokumentet er et standard HTML-dokument, så inneholder frame.htm-filen som er lastet fra en lenke fra hoveddokumentet rammestrukturen og i sin tur lenker til den tomme.htm-filen.

Etter å ha lastet inn hoveddokumentet, vil nettleservinduet se ut som vist i fig. 5.8 (venstre vindu). Hele dokumentet består av to lenker. La oss følge den første lenken. Et nytt vindu vil bli opprettet med navnet "D", der teksten til test.htm-filen vil vises (fig. 5.8, høyre vindu). Å gjenta denne koblingen vil bare laste inn dataene i vindu "D".


Ris. 5.8. Eksempel på samvirkende rammevinduer

La oss følge den andre lenken. Et nytt vindu vil bli dannet uten navn, der frame.htm-filen vil bli lastet inn, som definerer to rammer med navnene "C" og "D" (Fig. 5.8, nederste vindu). Det er ingenting i begge rammer (mer presist, et tomt dokument tomt.htm er lastet inn). Legg merke til at det nå er et åpent vindu kalt "D" og et vindu med rammer, hvorav ett også heter "D". La oss følge den første lenken igjen. I motsetning til det første tilfellet, vil data ikke lastes inn i vindu "D", men i en ramme kalt "D". Resultatet av alle de beskrevne handlingene er vist i fig. 5.8.

Merk

Utseendet til åpne vinduer og deres innhold kan noen ganger til og med avhenge av rekkefølgen på brukerhandlinger. Arbeid med dokumenter hvis oppførsel er vanskelig å forutsi forårsaker vanligvis berettiget irritasjon for brukeren og indikerer mangel på omtenksomhet i datastrukturen hos utviklerne.

Hvis du endrer rekkefølgen på handlinger, dvs. først utfører den andre lenken, og deretter den første, vil vinduet med navnet "D" ikke vises i det hele tatt! Dette vil skje fordi etter implementering av den andre lenken, vil en ramme kalt "D" bli opprettet og det vil ikke være nødvendig å åpne et nytt vindu for den første lenken.

Dette eksemplet er ikke et forbilde i det hele tatt, men viser bare den mulige kompleksiteten ved å organisere samhandling. Tvert imot, du bør prøve å ikke unødvendig komplisere organiseringen av data, langt mindre skape situasjoner der resultatet endres avhengig av rekkefølgen på brukerens handlinger.

Råd

Unngå kollisjoner i ramme- og vindusnavn. Selv om det ikke er formelt forbudt å ha rammer med samme navn, kan det føre til forvirring.

Advarsel

Ramme- og vindusnavn sammenlignes på en måte som skiller mellom store og små bokstaver. Så, for eksempel, rammer kalt "frame_1" og "Frame_1" vil være forskjellige.

Eksempler på mer komplekse interaksjoner mellom rammer

Ganske enkle typiske eksempler på interaksjon mellom rammer ble diskutert ovenfor. Oppgavene med å lage nye vinduer, erstatte innholdet i individuelle rammer, samt vise et dokument i et fullt vindu med ødeleggelse av hele rammestrukturen ble vurdert. Det er gitt eksempler på bruk av egendefinerte rammenavn, samt de reserverte navnene "_blank", "_selv" og "_top". Å bruke det siste reserverte navnet "_parent" er mer komplekst og vil bli beskrevet nedenfor.

Denne delen vil se på mer komplekse alternativer for interaksjon mellom rammer. Spesielt vil utskifting av innholdet i flere tilstøtende rammer gjennomføres.

En av de vanligste bruken av rammer, som allerede er nevnt i dette kapittelet, er tilfellet med to rammer, hvorav den ene inneholder en liste med lenker, og den andre inneholder selve dokumentene (fig. 5.1).

La oss prøve å utvide formuleringen av problemet. Anta at du vil vise innholdet i et ganske stort dokument som består av kapitler delt inn i seksjoner på skjermen. Et typisk eksempel er teknisk litteratur om et bestemt emne. La oss beskrive ønsket presentasjon av et slikt dokument på skjermen. La oss dele skjermen inn i tre rammer, hvorav den ene vil inneholde en liste over bokkapitler, den andre - en liste over deler av det valgte kapittelet, og den tredje - teksten til den valgte delen. Når du velger en kobling i den andre rammen, bør innholdet i den tredje rammen endres. Implementeringen av dette kravet er triviell. Når du velger en kobling i den første rammen, bør innholdet i både den andre og tredje rammen endres samtidig. Ved første øyekast er det umulig å implementere denne oppgaven i HTML (uten å bruke programmering i JavaScript eller andre), siden når en kobling utføres, lastes bare ett dokument, og ikke to eller flere. Likevel er det fullt mulig å løse dette problemet.

La oss vise en mulig løsning på et slikt problem ved å bruke et enkelt eksempel. Anta at du vil vise tre rammer på skjermen og laste inn noen dokumenter i dem. La oss sette oppgaven med å lage lenker i hver av disse rammene, hvor implementeringen for eksempel byttet ut innholdet i to rammer. La den første rammen ta opp 50 % av vinduets bredde og 100 % av høyden og plasser den på venstre side av vinduet. Høyre halvdel av vinduet er også delt horisontalt i to og inneholder to andre rammer. Denne strukturen er beskrevet av følgende kode:

Ved å bruke denne HTML-koden vil den nødvendige strukturen bli opprettet, men å løse problemet er umulig. Det er nødvendig å fjerne den nestede strukturen inn i en egen fil, og i denne HTML-koden beskrive en ramme som refererer til den opprettede filen. Da vil teksten i kildedokumentet se slik ut:

Eksempel på interaksjon mellom rammer

Laget fil med nestet struktur har navnet 1_2.htm og inneholder følgende kode:

1-2

Ved første øyekast har ingenting endret seg. I begge tilfeller er det tre rammer som dokumentene left.htm, 1.htm og 2.htm lastes inn i. Men når rammene samhandler, vil forskjellen vises. Hvis i det første tilfellet ingen av rammene har en overordnet ramme, vil overordnet i det andre tilfellet for to rammer være en ramme kalt "Two_Frames". Derfor, hvis du i noen av to rammer bruker en kobling med en TARGET-parameterverdi lik "_parent", vil resultatet være forskjellig for det første og andre tilfellet. For det første tilfellet vil implementering av en slik kobling laste dokumentet inn i et fullt vindu, og erstatte den eksisterende rammestrukturen. Det er her "_parent"-verdiegenskapen kommer inn i bildet, som fungerer som "_top" i fravær av en overordnet ramme. I det andre tilfellet vil en ramme kalt "Two_Frames" erstattes, som opptar høyre halvdel av skjermen og i hovedsak består av to rammer.

Det andre tilfellet skiller seg formelt fra det første også ved tilstedeværelsen av en ramme kalt "Two_Frames" som det kan refereres til. Det er nettopp denne funksjonen som vil tillate oss å løse problemet.

Her er innholdet i left.htm-filen, som først lastes inn i den første av rammene som vurderes:

Venstre ramme

dokumenter i to rammer plassert på høyre side av vinduet.

Velg alternativ for dokumentplassering:

1 _2.htm" TARGET="Two_Frames">Alternativ 1-2

Alternativ 2-1

2-1<TITLE> </p> <p></HEAD> </p> <p><FRAMESET ROWS="*,*"> </p> <p><FRAME SRC="2.htm"> </p> <p><FRAME SRC="1.htm"> </p> <p></FRAMESET> </p> <p></HTML> </p> <p>Vær oppmerksom på at teksten til filene 1_2.htm og 2_1.htm bare er forskjellige i rekkefølgen på lenker til filene 1.htm og 2.htm.</p> <p>La oss nå vurdere konstruksjonen av et dokument som er lastet inn i venstre ramme. Den inneholder to lenker med parameteren TARGET="Two_Frames". Implementeringen av en av disse koblingene skaper to rammer på stedet for "Two_Frames"-rammen (dette er høyre halvdel av skjermen), og laster inn dokumenter 1.htm og 2.htm i en eller annen rekkefølge. Når du velger alternativ 1-2, blir dokument 1.htm lastet inn i øvre høyre ramme, og 2.htm i nedre høyre ramme. Når du velger alternativ 2-1, endres rekkefølgen på dokumentene. Som et resultat skaper det vekslende utvalget av alternativer et inntrykk av at dokumentene i de to rammene bytter plass. Det er akkurat denne effekten vi søkte å oppnå (fig. 5.9).</p> <p>Innholdet i dokumentene 1.htm og 2.htm har ingen betydning for det beskrevne eksemplet. Men for eksempel, i stedet for trivielle dokumenter, vil vi lage dokumenter med lenker som implementerer de samme handlingene.</p> <p>Tekst til fil 1.htm:</p> <p><HTML> </p> <p><HEAD> </p> <p><TITLE>Dokument 1

Dokument 1

Alternativ 1 -2

Alternativ 2-1

Fil 2.htm skiller seg fra 1.htm bare i overskriften.

Det er to lenker med verdien TARGET="_parent" som peker til den overordnede rammen. Disse koblingene kan også skrives med et eksplisitt navn på den overordnede rammen, dvs. TARGET="Two_Frames", men å bruke et implisitt navn er vanligvis mer praktisk. For eksempel, hvis du ekskluderer koblinger fra venstre ramme (dokument left.htm), kan du utelate rammenavnet "Two_Frames" spesifisert når du beskriver hovedrammestrukturen. Dette vil skape en ramme uten navn, men koblingene fra dokumentene 1.htm og 2.htm med TARGET="_parent" vil fortsatt fungere korrekt.

Råd

Når det er mulig, bruk implisitt rammenavn. For eksempel "foreldre", "topp", "selv" i stedet for å spesifisere spesifikke navn.


Ris. 5.9. Samvirkende rammevinduer med effekten av å endre innlastede dokumenter

Forskjellen mellom rammer og nettleservinduer

Når du arbeider med rammer, oppstår spørsmålet om den grunnleggende forskjellen mellom å organisere rammestrukturen til et nettleservindu og å lage flere vinduer. Ved første øyekast kan det virke som om du kan klare deg med muligheten til å lage flere vinduer, siden arbeid med vinduer og rammer er veldig likt. Hver ramme krever at et separat dokument lastes inn, har muligheten til å rulle innhold uavhengig, og kan endres med kommandoer fra andre rammer. Disse egenskapene til rammer er lik egenskapene til nettleservinduer. Med en tabellbasert organisering av data er det umulig å oppnå en slik handlefrihet.

Det er imidlertid en betydelig forskjell mellom rammer og vinduer. Med rammeorganisering utføres inndelingen av visningsområdet i rammer av selve HTML-dokumentet, som indikerer dimensjonene og deres plassering. Ved visning kan brukeren endre størrelsen på rammer, med mindre dette er forbudt i beskrivelsen av deres struktur. Arrangementet av vinduer bestemmes av de generelle reglene for å jobbe med Windows-systemet - brukeren kan utvide et hvilket som helst vindu til full skjerm, minimere det til et ikon eller vilkårlig angi størrelse og plassering. Vinduer, i motsetning til rammer, kan overlappe hverandre. Denne rikdommen av valg har sin ulempe - du må manuelt plassere vinduer på skjermen hver gang og endre størrelsen på dem for å oppnå det optimale visningsalternativet. Når det gjelder rammer er det optimale størrelsesforholdet vanligvis spesifisert av utvikleren i beskrivelsen av rammestrukturen og trenger ofte ikke endres.

Råd

Selv om rammer ikke kan gi alle mulighetene for å jobbe med individuelle vinduer, vil deres rasjonelle organisering skape maksimal bekvemmelighet for brukeren.

Arbeid med vinduer har også andre ulemper. Å lage hvert vindu krever mye minne. I Netscape er hvert vindu egentlig en annen kopi av nettleseren, komplett med et komplett sett med knapper og menyer. Den samme situasjonen er typisk for Microsoft Internet Explorer.

Merk at organiseringen av individuelle vinduer i nettlesere gjøres annerledes. Å lage et nytt vindu med et dokument resulterer i at det vises en egen oppgave i Windows-systemet, som du kan se når du ser på listen over kjørende oppgaver. Derfor kan bytte mellom vinduer gjøres på samme måte som å bytte mellom ulike oppgaver, for eksempel ved å trykke på en hurtigtast +.

Mange populære Windows-applikasjoner har konseptet med et dokumentvindu. Eksempler inkluderer Microsoft Word-tekstbehandleren eller grafikkprogrammet Paint Shop Pro og mange andre. Hver av disse applikasjonene tillater samtidig bruk av flere vinduer med data, og som regel er det en Vindu-meny som gir en liste over vinduer og gir muligheten til å bytte mellom dem. Opprettelsen av et nytt vindu i slike applikasjoner skjer vanligvis når du åpner en eksisterende fil eller oppretter en ny. Men i disse programmene, når et nytt vindu opprettes, opprettes ikke en ny kjørende oppgave.

Netscape har også en Vindu-meny som viser eksisterende vinduer. (I Netscape 4.x-versjoner leveres denne funksjonen av Vindu-elementet på Communicator-menyen.) La oss gå tilbake til Fig. 5.8. I dette eksemplet er tre vinduer åpne samtidig, som hver i hovedsak er en separat nettleser. Men for brukeren er de alle vinduer i samme nettleser som kan samhandle med hverandre. I hvilket som helst av disse vinduene kan du åpne Vindu-menyen og se en liste over tre vinduer. I fig. Figur 5.10 viser situasjonen når dette er gjort for det nederste vinduet.


Ris. 5.10.Åpne Frame Windows i Netscape-nettleseren

Hvert vindu kan lukkes separat (ved å bruke Lukk-kommandoen fra Fil-menyen). For å fullføre arbeidet med nettleseren i et hvilket som helst vindu, kan du åpne Fil-menyen og velge Avslutt (Fig. 5.11).

Hvis flere vinduer var åpne, vil alle lukkes, men før dette vises en varselmelding (Fig. 5.12).

Hvert nettleservindu kan ha sine egne innstillinger (men ikke alle). Se på fig. 5.11. To vinduer er åpne, hvorav det ene er delt i tre rammer. Det samme dokumentet er lastet i to av de tre rammene, samt i et eget vindu. Muligheten til å konfigurere parameterne for hvert vindu uavhengig lar deg vise det samme dokumentet annerledes. I eksemplet ovenfor er skriftstørrelsen på dokumentet i det ene vinduet større enn i det andre. Denne effekten oppnås ved å angi forskjellige kodinger for hvert vindu (dokumentkoding-elementet i Options-menyen eller Character Set-elementet i View-menyen for versjon 4.x), med begge kodingene som bruker samme font, men av forskjellige størrelser. Å endre et hvilket som helst element i menyen Generelle innstillinger påvirker alle vinduer.


Ris. 5.11. Avslutte Netscape-nettleseren

Ris. 5.12. Advarsel om lukking av vinduer i Netscape-nettleseren

Ytterligere nettleserfunksjoner

Alle de ovennevnte rammebeskrivelsestaggene med de tilsvarende parameterne implementeres nesten identisk i Netscape- og Microsoft Internet Explorer-nettleserne, men hver av disse nettleserne lar deg i tillegg bruke sine egne unike koder eller parametere.

Netscape-nettleserfunksjoner

Netscape-nettleseren, som starter med versjon 3.0, tillater tre tilleggsalternativer: BORDER, RAMEBORDER og BORDERCOLOR. BORDER-parameteren gjelder bare for taggen . Verdien til BORDER-parameteren bestemmer tykkelsen på grensene mellom rammer i piksler.

Parameteren FRAMEBORDER kan brukes både i taggen , og i taggen og bestemmer tilstedeværelsen av en ramme mellom rammer. Denne parameteren kan være Ja eller NEI. Hvis parameteren er skrevet i taggen , så gjelder effekten for alle rammer i denne gruppen. For en individuell ramme kan verdien overstyres. Standardverdien er Ja.

Legg merke til at BORDER- og FRAMEBORDER-parameterne fungerer uavhengig av hverandre. For eksempel, hvis RAMEBORDER er satt til NO og BORDER er satt til en annen verdi enn null, vil ikke grensen mellom rammene bli tegnet, men plassen spesifisert av BORDER-parameterverdien vil fortsatt bli tildelt den.

BORDERCOLOR-parameteren kan brukes som i taggen , og i taggen og definerer kantfargen, som kan spesifiseres av fargenavnet eller dens heksadesimale representasjon.

Her er et eksempel:

Den første linjen i denne HTML-koden spesifiserer tre rammer, med mellomrom mellom dem for en 10-piksler tykk ramme (Figur 5.13).


Ris. 5.13. Tegne grenser mellom rammer i Netscape-nettleseren

Mellom rammevinduene "A" og "B" tegnes ingen ramme på grunn av NO-verdien til RAMEBORDER-parameteren, men fargen rød er definert for rammen. For den siste rammen "c" settes RAMEBORDER-verdien til Ja og overstyrer verdien satt på den første linjen. Derfor, mellom rammene kalt "B" og "C", vil en rød ramme med en tykkelse på 10 piksler fortsatt tegnes.

Merk

Hvis grenser mellom rammer ikke er tegnet, vil ikke Netscape-nettleseren tillate størrelsen på rammer ved å dra dem med musen, selv uten NORESIZE-parameteren. For Microsoft Internet Explorer er situasjonen annerledes.

Merk at rammer uten rammer ikke brukes veldig sjelden. Det bør huskes at fraværet av rammer ikke forhindrer utseendet på rullefelt (fig. 5.14).


Ris. 5.14. Rullefelt i ramme uten rammer

Microsoft Internet Explorer-nettleserfunksjoner

Microsoft Internet Explorer-nettleseren lar deg bruke parameteren FRAMEBORDER til samme formål som beskrevet ovenfor, men lar deg ikke angi fargen og tykkelsen på rammene. Imidlertid kan bare den numeriske verdien "O" brukes som en verdi for parameteren FRAMEBORDER for å avbryte tegning av en ramme, eller en numerisk verdi som ikke er null for å tegne en ramme.

Forskjellen i reglene for å angi verdiene til FRAMEBORDER-parameteren for forskjellige nettlesere er veldig ubehagelig. Prøv for eksempel å sette FRAMEBORDER=Ja. Denne oppføringen er riktig for Netscape, men for Microsoft Internet Explorer vil det resultere i fravær av en ramme. Det forrige eksemplet (fig. 5.13) når det vises i Microsoft Internet Explorer vil bli presentert uten en ramme.

Råd

Det anbefales alltid å skrive verdien til parameteren RAMEBORDER i numerisk form, for eksempel RAMMEBORDER=0. Dette følger reglene for å skrive en parameter for Microsoft Internet Explorer, men bryter reglene for Netscape (selv om det oppfattes riktig av sistnevnte).

Merk

Hvis rammene mellom rammer ikke er tegnet, vil Microsoft Internet Explorer-nettleseren (i motsetning til Netscape), i fravær av NORESIZE-parameteren, tillate deg å "berøre" endre størrelsen på rammene ved å dra rammene med musen. Du kan finne stedet der rammen skal være ved å endre formen på musepekeren.

Microsoft Internet Explorer-nettleseren tillater bruk av en ekstra FRAMESPACING-parameter skrevet i taggen , hvis verdi bestemmer antall piksler mellom bilder som skal stå tomme.

La oss gi et eksempel, hvis visningsresultat er vist i fig. 5.15.

Endre avstanden mellom rammer


Ris. 5.15. Tom plass mellom rammer i Microsoft Internet Explorer

Merk

Dessverre oppgir mange HTML-språkbeskrivelser feilaktig at parameteren FRAMESPACING må brukes i taggen . Microsoft Internet Explorer tillater bare at denne parameteren brukes i en tag .

Flytende rammer

Microsoft Internet Explorer-nettleseren tillater bruk av en unik kode . I TEGS

Microsoft Internet Explorer er den første nettleseren (og så langt den eneste) som støtter såkalte «flytende» rammer.

Disse rammene kan plasseres hvor som helst på skjermen, akkurat som grafikk og tabeller.

Rammen til høyre for denne teksten plasseres på siden ved hjelp av en spesiell tag

Hovedforskjellen mellom