WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   HTML struktur problem (https://www.wn.se/forum/showthread.php?t=1057931)

jonssondesign 2013-05-15 01:45

HTML struktur problem
 
Jag besväras av ett problem som jag inte tycks kunna lösa. Jag har funnit en lösning, men den buggar.

Problemet:

Sidan består av 3 sektioner:
[-------------Header-------------]
[Content]
[-------------Footer-------------]

Problemet uppstår när Content är väldigt litet, och hela dokumentet blir mindre än webbläsaren. Det skapas då alltså ett stort tomrum under footer ner till webbläsarens nederkant.

Hur löser man detta tro? Jag kan tyvärr inte lägga till mer content!

Jag löste det tidgare genom att lägga position:absolute; och bottom:0px; på footer när <body> var mindre än webbläsaren. Iom att det finns ajax laddad kontent också, så måste jag köra en intervall som kollar om body är mindre än window.

Problemet som uppstår med denna lösningen är att det blir en scroller från header ner till contents nerderkant. Varför vet jag inte, och jag tycks inte hitta vad som orsakar problemet heller.

Om någon tros veta problemet, berätta gärna, och behöver du se hemsidan så skicka ett PM. Sidan är fortfarande väldigt hemlig, därför vill jag gärna inte dela ut länken.

Mvh,
Fredrik

allstars 2013-05-15 09:24

html,body{min-height:99.99%;padding:0;margin:0}
#content {padding-bottom: @footer-height;}

Löser det problemet

jonssondesign 2013-05-15 09:58

Tack Allstars, men antingen gör jag fel eller så fungerar det inte riktigt som tänkt.

Min html struktur ser ut såhär:

Kod:

<body>
    <header></header>
    <section></section>
    <footer></footer>
</body>

Alltså, inte som traditionellt:

Kod:

<body>
    <div class="wrapper"></div>
    <div class="footer"></div>
</body>

Jag la "min-height:99.99%; padding:0; margin:0" på html, body {},
och footerns höjd på section {}, men som sagt, det fungerade inte som förväntat. Det blev bara ett tomrum mellan section och footer på en höjd lika hög som footer. That's it.

Några andra smarta idéer, eller vet du kanske vad jag gör för fel? :)

Linuus 2013-05-15 10:54

Detta är ett väldigt vanligt bekymmer. Googla "css sticky footer" så får du fram en massa lösningar.

T.ex:
http://www.cssstickyfooter.com/
http://ryanfait.com/resources/footer...ottom-of-page/

jonssondesign 2013-05-15 11:06

Tack linus för försöket, men sticky footer förlitar sig på en html struktur beståendes av två delar (antar jag?). Likt den struktur som jag beskrev som "traditionell". Jag har som sagt inte så.

Jag har testat att göra precis som sticky footer och applicerat allt som skulle appliceras på #wrapper på section elementet istället, men nada..

JesperA 2013-05-15 11:15

Citat:

Ursprungligen postat av jonssondesign (Inlägg 20469972)
Jag har testat att göra precis som sticky footer och applicerat allt som skulle appliceras på #wrapper på section elementet istället, men nada..

Resten då?

allstars 2013-05-15 11:22

Du borde ändå ha id-properties på dina element, speciellt section, då det kan finnas flera section-element på en sida.

jonssondesign 2013-05-15 13:20

Citat:

Ursprungligen postat av JesperA (Inlägg 20469973)
Resten då?

Jag menade att jag gjorde precis som dom sa, men istället för att sätta viss css på #wrapper satte jag det på section istället.

Har även testat att linda in <header och <section i en <div id="wrapper"> och gjorde precis som dom sa, men fortfarande inget.

jonssondesign 2013-05-15 14:06

Ärsch, jag körde en fuling och satte en min-height på det dynamiska elementet som förstörde min footer.

JesperA 2013-05-15 14:18

Citat:

Ursprungligen postat av jonssondesign (Inlägg 20469990)
Jag menade att jag gjorde precis som dom sa, men istället för att sätta viss css på #wrapper satte jag det på section istället.

Ja jag vet vad du menade, med resten menade jag givetvis resten...alltså footern, "main" osv som i deras exempel.

jonssondesign 2013-05-15 14:45

Som sagt, jag gjorde precis som dom sa med allt. Men fick det inte att fungera ändå. Troligen har jag något på sidan som gör att det inte fungerar.

jonssondesign 2013-05-15 15:01

Okej, det gick nu!

använde detta http://ryanfait.com/sticky-footer/

jonas.o 2013-05-16 11:00

Fick du ändra HTML strukturen då?

Jag antar det, annars går det väll att lösa med någon from av Javascript. Som räknar ut storleken av content jämfört med browserns fönster.

jonssondesign 2013-05-16 13:00

Precis, jag fick ändra lite på html strukturen för att få det att fungera. inga drastiska saker faktiskt, mest bara lägga till en div runt <header> och <seaction>. :)

Helt rätt! Jag kunde ha gjort så.. tror jag..

Det jag gjorde med js var sen att jag kollade hur många pixlar som skiljde mellan hela body och webbläsarens storlek. Och sen applicerade jag de kvarvarande pixlarna på footer som en margin-top.

Kommer inte ihåg varför jag inte körde på det, om det blev fel ibland osv. Men jag slutade upp med en lösning som bara satte footerns position som absolute och bottom:0;. Det gjorde att det blev en konstig scroll på något sätt. Vettefan.

Oavsett så fungerar det bättre nu :)

jonssondesign 2013-05-17 22:24

Nä det sket sig det här!

Alla dropdowns på sidan blev som fixed. Alltså - dom följde med när man scrollade.
Boven var att man sätter height:100%; på html, body {}

Hur som helst, jag följde istället jonas.o råd, och tog fram height() på #master och körde en bottom-margin på den baserat på hur många pixlar som återstod till bottom av window.

Jag satte intervalen på 1ms. Någon som vet om detta kan orsaka problem? Tänker på webbläsarens minne eller något sånt? Är det sämre att ha 1ms istället för typ, 1sekund?

Linuus 2013-05-17 23:54

Citat:

Ursprungligen postat av jonssondesign (Inlägg 20470190)
Nä det sket sig det här!

Alla dropdowns på sidan blev som fixed. Alltså - dom följde med när man scrollade.
Boven var att man sätter height:100%; på html, body {}

Hur som helst, jag följde istället jonas.o råd, och tog fram height() på #master och körde en bottom-margin på den baserat på hur många pixlar som återstod till bottom av window.

Jag satte intervalen på 1ms. Någon som vet om detta kan orsaka problem? Tänker på webbläsarens minne eller något sånt? Är det sämre att ha 1ms istället för typ, 1sekund?

Intervall? Om du vill använda js är det ju bara att sätta margin när sidan laddas. Behöver ju inte ändras mer sedan...

jonssondesign 2013-05-18 00:20

Det kan man ju tycka, men om hela content baseras på ajax och det finns "tabbar" på sidan, så blir content olika hög, vilket betyder att det skall vara olika margin-bottom beroende på vilken "tabb" du är på. Förstår du?

därför går det inte att appliceras bara en gång, för då stannar footern sen på samma ställe. Så säg att content är 100px hög, och man har då fått footern på rätt plats, sen hoppar du till en annan tabb, där content bara är 50px hög, ja då flyttas också footern upp 50px, vilket resluterar i att js koden var totalt onödig ;)

P3N 2013-05-18 16:10

Har du provat att köra wrappern min-height: 100%; och sen lägga footern efter wrappern med negativ top margin?

jonas.o 2013-05-18 21:23

Antar det många missar är att sidans innehåll ändras utan att sidan uppdateras. Därför måste JS antingen gå på tidsintervall. Jag hade istället valt att kolla var 0,2 sekund eller 0,5s och sätta en animation så fungerar det nog bra och tar mycket mindre på webbläsaren och datorn. Även fast det förmodligen inte är något problem.

Förmodligen fungerar också P3N lösining, vilket i så fall är den bästa!

Linuus 2013-05-18 22:24

Citat:

Ursprungligen postat av jonssondesign (Inlägg 20470195)
Det kan man ju tycka, men om hela content baseras på ajax och det finns "tabbar" på sidan, så blir content olika hög, vilket betyder att det skall vara olika margin-bottom beroende på vilken "tabb" du är på. Förstår du?

därför går det inte att appliceras bara en gång, för då stannar footern sen på samma ställe. Så säg att content är 100px hög, och man har då fått footern på rätt plats, sen hoppar du till en annan tabb, där content bara är 50px hög, ja då flyttas också footern upp 50px, vilket resluterar i att js koden var totalt onödig ;)

Då är jag med. Då blir det ju lite klurigare såklart :)

jonssondesign 2013-05-18 22:35

Precis som jonas säger, sidans innehåll ändras utan att sidan laddas om.

jag löste det dock genom att istället kolla höjden efter laddning, och nästa gång jag klickar någonstans i dokumentet, så kör den 500ggr var 1ms (= i 500ms).

P3N 2013-05-19 01:10

Prova att få till det med cssen. Är ju prio ett. Är det sen HELkört så kan man rädda med js. Men är ju absolut sista utvägen...

jonssondesign 2013-05-19 01:55

Jag har försökt och försökt med CSS. Med alla trix och fix som jag lärt mig från mina år med frontend så lyckades inte jag fixa det faktiskt.

Den dagen då vi tröttna på designen eller anser att det är dags att byta, så får vi ta med detta redan från början.


Alla tider är GMT +2. Klockan är nu 10:38.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson