Med ramar (frames) kan man dela upp det fönster som användaren ser i flera mindre fönster och varje sådant fönster kan innehålla ett specifikt dokument.
När man använder sig av ramar måste man dela upp det besökaren ska få se i flera mindre filer/sidor eftersom varje ram innehåller ett eget dokument. Den sida som innehåller alla ramar innehåller just ingenting annat än ramarna och är lite speciell, istället för märkena <BODY> och </BODY> använder man sig av märkena <FRAMESET> och </FRAMESET>. Den grundläggande strukturen för "huvuddokumentet" blir alltså:
<HTML> <HEAD> </HEAD> <FRAMESET> </FRAMESET> </HTML>
Det man gör med märket <FRAMESET> är att dela in det aktiva fönstret (eller ramen) i flera små ramar genom att ange antingen de horisontella ramarnas placering eller de vertikala ramarnas placering. Man anger antingen <FRAMESET ROWS=> eller <FRAMESET COLS=&gT;. Bredden kan anges i absoluta bildpunkter, i procent eller kvarvarande område. För att ange att man vill ha en bredd av 100 absoluta bildpunkter skriver man bara <FRAMESET COLS="100">, vill man istället ange den som 10 procent av ramen/fönstret skriver man <FRAMESET COLS="10%"> och vill man att bredden ska vara resterande bredd skriver man <FRAMESET COLS="*">. Om man anger att flera ramar ska ha resterande bredd så får de automatiskt hälften var. Man kan också ange <FRAMESET COLS="2*, *"> vilket betyder att den vänstra ramen får 2/3 av resterande utrymme och den högra 1/3.
Då man använder absoluta bildpunkter för att ange bredden eller höjden måste man alltid ange en ram med hjälp av resterande utrymme. Man ska alltid tilldela ramarna så mycket utrymme att de tillsammans tar upp det totala utrymmet. <FRAMESET ROWS=> fungerar likadant som <FRAMESET COLS=> förutom att det påverkar höjden och inte bredden.
Det går att dela in en ram i flera mindre ramar genom att använda ännu ett <FRAMESET> märke (se exempel).
När man skapat strukturen för ramarna med märket <FRAMESET> är det dags att tala om för webläsaren vilka dokument som ska visas i ramarna. Det gör man med märket <FRAME>. Där kan man ställa in SRC="" som är adressen till dokumentet som ska visas. Man kan också ställa in NAME="" som används för att identifiera rätt ram då man använder länkarna. Det behövs om man vill ha en mindre ram till vänster med en meny som påverkar innehållet i den större ramen till höger.
Marginalen från ramens kant kan specificeras i bildpunkter med <FRAME MARGINHEIGHT=> och <FRAME MARGINWIDTH=>. Marginalen får vara minst en bildpunkt och den får inte heller vara större än att dokumentet kan visas i ramen.
Med <FRAME SCROLLING=> kan man tala om för webläsaren om det ska finnas en rullningslist på ramen. Man kan ange YES, NO eller AUTO. Om man inte anger något blir det automatiskt AUTO, vilket betyder att webläsaren själv får avgöra om det ska vara rullningslister. Om man inte har en väldigt speciell anledning bör man låta webläsaren besluta detta själv.
Det sista man kan ställa in är <FRAME NORESIZE> som innebär att besökaren inte får ändra storlek på ramen.
När man sedan skapar länkar kan man ange i vilken ram dokumentet ska visas. Det gör man genom att lägga till TARGET i länkanvisningen. Om länken vanligtvis skrivs: <A HREF="www.server.com"> skriver man, för att få resultatet att synas i den ram man gett namnet "huvudram", <A HREF="www.server.com" TARGET="huvudram">.
Här följer ett exempel på ett dokument som skapar ramar:
<HTML> <HEAD><TITLE>Ramexempel</TITLE></HEAD> <FRAMESET ROWS="20%,*"> <FRAME SRC="tom.htm" NAME="1"> <FRAMESET COLS="*,*"> <FRAME SRC="tom.htm" NAME="2"> <FRAMESET ROWS="30%, *"> <FRAME SRC="tom.htm" NAME="3"> <FRAMESET COLS="*,*,*"> <FRAME SRC="tom.htm" NAME="4"> <FRAME SRC="tom.htm" NAME="5"> <FRAME SRC="tom.htm" NAME="6"> </FRAMESET> </FRAMESET> </FRAMESET> </FRAMESET> </HTML>