DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   Div čija se dužina prilagođava rezoluciji? (http://www.devprotalk.com/showthread.php?t=6134)

mb_sa 03. 09. 2008. 16:15

Div čija se dužina prilagođava rezoluciji?
 
Pozdrav.

Na stranici imam footer koji u vecini slucajeva bi trebao da ima fiksnu dužinu od 60px. Ta većina slučajeva je kada je ukupna dužina stranice veća od rezolucije monitora.

Medjutim, ponekad stranica nije duža (manje teksta i fotografija) od rezolucije monitora (čak i na nekim standardnim rezolucijama, a pogotovo na velikim).

Meni je potrebno da se taj footer produži do rezolucije monitora.

Footer je u div-u. Rješeno sve preko CSS-a.

Ja sam pokusao sam min-height i widht: auto, ali ne ide. Da li se iko susretao sa slicnim problemom?

Unaprijed hvala na pomoci.

Pozdrav,
mb

Damjan 04. 09. 2008. 00:37

Ako sam te dobro razumio, kada kazes duzina mislis na height, to mi nekako ima najvise smisla :)
Ako je tako onda bi ovaj kod trebao biti rjesenje tvog problema:

HTML kôd:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
body {
        margin: 0;
        padding: 0;
}
</style>
<script language="javascript">
function getWindowHeight() {
        var windowHeight=0;
        if (typeof(window.innerHeight)=='number') {
                windowHeight=window.innerHeight;
        }
        else {
                if (document.documentElement&&document.documentElement.clientHeight) {
                        windowHeight=document.documentElement.clientHeight;
                }
                else {
                        if (document.body&&document.body.clientHeight) {
                                windowHeight=document.body.clientHeight;
                        }
                }
        }
        return windowHeight;
}

function setFooter() {
        if (document.getElementById) {
                var windowHeight=getWindowHeight();
                if (windowHeight>0) {
                        var contentHeight=document.getElementById('sadrzaj').offsetHeight;
                        var footerElement=document.getElementById('futer');
                        var footerHeight=footerElement.offsetHeight;
                                if (windowHeight-(contentHeight+footerHeight)>=0) {
                                        footerElement.style.height=(windowHeight-contentHeight)+'px';
                                }
                                else {
                                        footerElement.style.height='60px';
                                }
                }
        }
}
window.onload = function() {
  setFooter();
}
window.onresize = function() {
  setFooter();
}
</script>
</head>

<body>
<div id="sadrzaj" style="background: #bbb; height: 600px;">sadrzaj</div>
<div id="futer" style="background: #999; height: 60px;">futer</div>
</body>
</html>

Ne znam koliko dobro poznajes JavaScript pa sam ti ubacio cijelu stranicu.
Uglavnom, izracuna se visina prozora i ako je veca od sadrzaja onda poveca div za id-om futer tako da div#futer zauzme prostor do kraja prozora.

Inace u div#sadrzaj moraces da stavis cijeli gornji dio strane ili ako imas vise divova onda ce biti potrebna manja prerada funkcije setFooter().
Ako teba javi, nije problem.

Ovo bi trebalo da radi u svim browserima (FF, IE, Op, Saf).

Pozdrav ;)

mb_sa 04. 09. 2008. 10:40

Damjan, hvala.

Ovo mi se cini kao moguce rješenje.

Imam vise div-ova (nije upitanu samo #sadrzaj). Vise mi se dopada ideja da se preradi JS, nego da trpam sve u jedan div. Pokusacu sam to da uradim, pa se javim ako bude problema.

Jos jednom hvala.

pkrstic 04. 09. 2008. 12:20

ovo smo radili kolega i ja

http://www.noformat.com/clients/e2pbs/design.html

imas zalepljen div dole i to drvo koje se seta sa promenom rezolucije. Sve je bez skripta, js je koristen samo za iskljucivanje pojedinih delova za manje rezolucije (trazili da radi pod 800x600)

Damjan 04. 09. 2008. 13:07

Citat:

Originalno napisao pkrstic (Napišite 59998)
ovo smo radili kolega i ja

http://www.noformat.com/clients/e2pbs/design.html

imas zalepljen div dole i to drvo koje se seta sa promenom rezolucije. Sve je bez skripta, js je koristen samo za iskljucivanje pojedinih delova za manje rezolucije (trazili da radi pod 800x600)


HTML kôd:

position: absolute; bottom: 0;
Ovo je super rjesenje kada imas luksuz ignorisanja verzija IE prije sedmice.

A i postoji mogucnost da ti futer prekrije sadrzaj iznad, kao sto se to i desava na tvom sajtu (futer ti prekrije elemente sa desne strane).
Tj ne pojavljuje se skrol na prozoru browsera (testirano u ff i ie).

Moguce rijesnje je u paddingu ili marginama, ali sad nemam vremena da se pozabavim sa tim.

Pozdrav :)

Nemanja Avramović 04. 09. 2008. 13:17

Za rešavanje tih gluposti iz IE < 7 možete koristiti IE7 { css2: auto; }

http://code.google.com/p/ie7-js/

Ja sam ga koristio na par sajtova i sve se vidi u IE6 (skoro) isto kao u FF/Opera/IE7

mb_sa 10. 09. 2008. 14:45

Tek sam sada stigao da probam implementirati ovo rješenje.
Rješenje savršeno radi ono sto meni treba.

Ako ima vise divova dovoljno je da se saberu u varijabli contentHeight.

Kôd:

var contentHeight=document.getElementById('header').offsetHeight+document.getElementById('sadrzaj').offsetHeight;
Rješenje radi pod IE6, Ie7, FF, Opera i Safari (sve pod Windows XP), kao sto reče Damajn.

Jos jednom hvala na pomoći i svima koji su uzeli učešća u diskusiji.

Pozdrav,
mb_sa

krcko 11. 09. 2008. 14:16

treba izbegavati js resenje kada to isto moze da se uradi pomocu css-a:

Kôd:

#footer
{
        position: fixed;
        width: 100%;
        height: 35px;
        bottom: 0;
        left: 0;
}

* html #footer
{
      position: absolute;
}

ok, ovo * html #footer je css hack, ali to je jedini nacin da svi browseri prikazu isto...

mb_sa 11. 09. 2008. 17:18

Citat:

Originalno napisao krcko (Napišite 60337)
treba izbegavati js resenje kada to isto moze da se uradi pomocu css-a:

Kôd:

#footer
{
        position: fixed;
        width: 100%;
        height: 35px;
        bottom: 0;
        left: 0;
}

* html #footer
{
      position: absolute;
}

ok, ovo * html #footer je css hack, ali to je jedini nacin da svi browseri prikazu isto...

Da, slazem se. Ali koliko vidim ovo sto ti predlazes nije rješenje mog problema.

krcko 11. 09. 2008. 17:55

aha, sad sam procitao ponovo, tebi onda treba ovo:
Kôd:

<div id="page">
    .... ovde sadrzaj strane (header + content)
    <div id="footer-placeholder"></div>
</div>
<div id="footer">
</div>

Kôd:

html, body
{
  height: 100%;
}

#page
{
    min-height: 100%;
    position: relative;
}

#footer-placeholder
{
    width: 100%;
    height: 60px;  /* visina footera */
}

#footer
{
    width: 100%;
    height: 60px;
    margin-top: -60px;
}

ovo kucam napamet, trebalo bi da radi (ukoliko nisam zaboravio neku sitnicu) ako ne bude htelo da radi reci pa cu napisati primer i istestirati...

ali vidise poenta napraviti sadrzaj (znaci heder + content) da bude visine 100%, footer staviti ispod toga i onda ga izvuci na gore...


Vreme je GMT +2. Trenutno vreme je 19:44.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.