PDA

View Full Version : svårt att göra en snygg layout med frames?


maqe
2005-01-13, 21:34
Jag skall göra en site med den http://www.mjardevi.se layouten ungefär, alltså att sidan skall ligga i mitten av sidan och under den stora bilden på första sidan till vänster hade jag tänkt att lägga meny i form av en treeview som måste ligga i en egen fram för annars tappar den viewstate läget när man klickar på den. Nån som har några tips på om det går att göra något sånt med frames?

ade
2005-01-13, 21:36
Jag minns att jag försökte det för 2 år sedan. Det var mycket svårt. Ett tips är att köra med tabeller och celler. Det blir lättare designmässigt, kodmässigt och med anpassning till upplösning.

Impact
2005-01-13, 21:37
Frames bör i allra högsta grad ej användas. Läs gärna följande artikel.
http://www.456bereastreet.com/archive/200411/who_framed_the_web_frames_and_usability/

maqe
2005-01-13, 22:09
Näe jag vet att frames bör undvikas dock så verkar min treeview kontrol inte tycka om att ligga direkt i en cell för den tappar som sagt sin viewstate då och collapsar hela tiden eftersom när jag klickar på en länk så laddas sidan om utan att det är en postback och då laddar den all data från början. Nån kanske har nått tips på hur man åtgärder det istället? Jag har fått tips om att använda onselectednodechanged i min treeview för asp.net men jag ser inte lösningen direkt

jarvklo
2005-01-13, 22:18
Hmm...

Frames är inte svårt när man lärt sig hantera dem ;) .
Frames har för- och nackdelar jämfört med det ade föreslår (bl.a. hamnar rullningslisten inte i högerkanten utan i den frame som du lägger ditt innehåll i den typen av layouter du frågar efter)
Frames bör kanske iofs undvikas av flera skäl, men det är fullt tillåtet att använda dem (än så länge) om man bara ser till vad man får och inte får göra enligt kodstandard
Det du vill göra är enkelt med frames också...


Exempel:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="sv" xml:lang="sv">
<head>
<title>Ett exempel</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<frameset cols="*,600,*">
<frame name="vanster" src="egenfil.html" frameborder="1" />
<frameset rows="200,*,100">
<frame name="ovre" src="egenfil.html" frameborder="1" />
<frameset cols="200,*">
<frame name="treeview" src="egenfil.html" frameborder="1" />
<frame name="innehallet" src="egenfil.html" frameborder="1" />
</frameset>
<frame name="sidfoten" src="egenfil.html" frameborder="1" />
</frameset>
<frame name="hoger" src="egenfil.html" frameborder="1" />
<noframes><body><div>Detta är ett exempel</div></body></noframes>
</frameset>
</html>


Och för den som tvekar på om det där är giltig kod eller ej, är det bara till att validera... (tips: det är det - Frames är tillåtna både i HTML4 och xhtml 1.0 om man väljer "rätt" <!DOCTYPE ;) )

Vill du ha bort ramarna runt frame-fälten, byter du bara värdet på de frameborder-attribut som hör till dessa till "0" ;)


Och behöver du mer hjälp med frames, är det bara att fråga igen :birp

maqe
2005-01-14, 06:26
Många frames blir det :) ... Ingen som har jobbat med en treeview likt den här (http://www.dustin.se) men jag antar att man måste använda frames när det handlar om sånna kontroller?
Hmm...

Frames är inte svårt när man lärt sig hantera dem ;) .
Frames har för- och nackdelar jämfört med det ade föreslår (bl.a. hamnar rullningslisten inte i högerkanten utan i den frame som du lägger ditt innehåll i den typen av layouter du frågar efter)
Frames bör kanske iofs undvikas av flera skäl, men det är fullt tillåtet att använda dem (än så länge) om man bara ser till vad man får och inte får göra enligt kodstandard
Det du vill göra är enkelt med frames också...


Exempel:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="sv" xml:lang="sv">
<head>
<title>Ett exempel</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<frameset cols="*,600,*">
<frame name="vanster" src="egenfil.html" frameborder="1" />
<frameset rows="200,*,100">
<frame name="ovre" src="egenfil.html" frameborder="1" />
<frameset cols="200,*">
<frame name="treeview" src="egenfil.html" frameborder="1" />
<frame name="innehallet" src="egenfil.html" frameborder="1" />
</frameset>
<frame name="sidfoten" src="egenfil.html" frameborder="1" />
</frameset>
<frame name="hoger" src="egenfil.html" frameborder="1" />
<noframes><body><div>Detta är ett exempel</div></body></noframes>
</frameset>
</html>


Och för den som tvekar på om det där är giltig kod eller ej, är det bara till att validera... (tips: det är det - Frames är tillåtna både i HTML4 och xhtml 1.0 om man väljer "rätt" <!DOCTYPE ;) )

Vill du ha bort ramarna runt frame-fälten, byter du bara värdet på de frameborder-attribut som hör till dessa till "0" ;)


Och behöver du mer hjälp med frames, är det bara att fråga igen :birp här (http://www.dustin.se)

zcorpan
2005-01-14, 10:34
Inte alls. http://inspire.server101.com/js/xc/

maqe
2005-01-14, 10:57
Inte alls. http://inspire.server101.com/js/xc/
Nu är det en speciell kontroll för asp.net jag använder mig av och har inte för avsikt att gå över till något annat

maqe
2005-01-14, 12:03
Finns det någon möjlighet att göra så att en div breder ut sig över gränsen mellan 2 frames?

Web-Tor
2005-01-14, 12:34
Finns det någon möjlighet att göra så att en div breder ut sig över gränsen mellan 2 frames?Nej, däremot kan du trigga en div som ligger i en annan frame. Så har man t.ex. gjort på www.skandiabanken.se

maqe
2005-01-14, 12:43
Okay det fungerar inte för mig dock ... skulle vilja att den kunde gå över kanten istället eftersom jag har en div som "tänds" när jag högerklickar i en trädstruktur

Web-Tor
2005-01-14, 12:49
Det går som sagt var inte. Det närmaste du kan komma är createPopup() (http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/createpopup.asp). Men det är en IE-function så det är inte att rekommendera på en "publik" webbsida.

maqe
2005-01-14, 12:54
Mitt dilemma är att jag använder en asp.net kontroll som enbart fungerar i IE men det gör mig absolut ingenting då jag inte bryr mig om dom som har alternativa läsare. Jag har heller inte källkoden så jag kan ändra i denna webusercontrol så det får bli såhär då ...

mrsgreen
2005-01-14, 12:59
Varför inte använda stylesheets istället för frames??
Stylesheets fungerar ju bättre och bättre, fast det hänger ju kanske på vilken din målgrupp är och om de har den senaste webbrowsern.
En tanke bara....

frankof
2005-01-14, 13:04
Varför inte använda stylesheets istället för frames??
Stylesheets fungerar ju bättre och bättre, fast det hänger ju kanske på vilken din målgrupp är och om de har den senaste webbrowsern.
En tanke bara.... Hur förhindrar css att sidan laddas om och tappar "minnet" i detta specifika fallet?

maqe
2005-01-14, 13:04
Hm ... stylesheet? Jag måste ladda innehållet från min treeview i en annan browser eller eller del av sidan t.ex. en frame pga. att jag använder denna (http://www.9rays.net/cgi-bin/components.cgi?act=1&cid=89) webbusercontrol

zcorpan
2005-01-14, 13:15
Jag kan knappast rekommendera den "webbusercontrol" då den endast fungerar med IE med JavaScript och ActiveX aktiverat.

Därmed har du säkert tappat minst 20% av användarna samt helt stängt ute sökmotorer.

ade
2005-01-14, 15:54
maqe; som jag sa, att det är så viktigt med upplösningar när du kodar frames annars får du som jarvklo sa, rullningslist i framen. Kör med divvar eller tabeller. Jag föredrar tabeller.

Sedan så kan du ju köra med divvar och tabeller via ett styleshet om du vill.

Lycka till.

ade
2005-01-14, 15:55
Så har jag en fråga i tråden :e

Jag vet att teckensnitt, färg, borders med mera ska gärna placeras i en css. Men är det nödvändigt att köra tabeller genom css?

icaaq
2005-01-14, 16:51
Vill man ändra utseendet på sin tabell ska man göra det med css.

Men jag förstår nog inte din fråga riktigt :OO

mv icaaq