ugrás a tartalomhoz

Div változó mérettel

boy · 2012. Már. 26. (H), 08.38
Saját joomla template-t csinálok. Klasszikus 3 hasáb, 'left'-'content'-'right'. A right div-et kikapcsoltatom, ha nincs benne modul, viszont ilyenkor a content rész marad a beállított fix szélességű, így jobb oldalon üres (háttérszínű) a sáv. Ha kiveszem a fix szélességi beállítást, akkor viszont a left div alá csúszik le. Ha a 'float: left'-et is kiszedem, akkor meg a 'left' háta mögé is becsúszik. Ha left-margin-nal beállítom a bal oldalhoz akkor meg csak addig jó, míg valamelyik oldalon vissza nem kapcsolok egy modult, mert akkor meg a a jobb oldalt nyomja le alulra. Másutt működik ez a dolog, csak nem tudom hogyan.
 
1

jQuery

deiksupp · 2012. Ápr. 12. (Cs), 15.26
Használj jQuery-t, legutolsó munkámnál én is kb. így jártam.
Nálam ez volt a problem:
Volt 1 wraper divem ami margin:auto-val középre nyomtam az egész cuccot.
Ezen belül a következő hiearchiával:
wrapper:
->head{fejrészes cuccok}
->content{position:absolute-val berakva, fix magassággal(ez volt a baj)}
->rightSide{jobb oldal be float-olva a content divem mellé}
->footer{lábrész}


Ugye ha a content divemben a tartalom mondjuk 1000px hosszú akkor a content divemen "túlnyult", ezt a problémát én így oldottam meg(a 2 számot hagyd figyelmen kívül, külső okok miatt kelettek):

$(document).ready(function() {
var $a = $('#rightSide').outerHeight()-211;
var $b = $('#content').outerHeight();
var $c = $a<$b?$b-$a:0;
if($a<$b)
$('#jobbSav').height($a+$c + 235);
});


Ha így ezekkel eljátszodozol szerintem sikerül megoldanod a te problémádat is, ha nem sikerül sehogy sem, nyugodtan küld el és megcsinálom.
2

class

Poetro · 2012. Ápr. 12. (Cs), 15.42
Adj hozzá a body-hoz egy osztályt attól függően, hogy van-e bal illetve jobb oldalsáv, illetve mindkettő. Ennek megfelelően már tudod állítani a tartalom margóját illetve float-ját.
3

Ha jól értem..

dorten · 2012. Ápr. 13. (P), 00.19
Tehát az a gondod, hogyha nincs adott oldalra beállítva modul akkor is ott van a "helye"? Mert akkor egy sima php if közé berakod az adott sáv html tartalmát, és meg is van oldva, de ha belenézel egy J! template-be akkor láthatod hogy ilyen megoldással televan.

	<?php if($this->countModules('left')) : ?>
		<div id="left">
			<jdoc:include type="modules" name="left" />
		</div>
	<?php endif; ?>
4

Elvileg megoldható

bamegakapa · 2012. Ápr. 13. (P), 18.55
Az overflow: hidden kreatív használatával elvileg megoldható a probléma, ha nem értettem félre valamit.

Kipróbálható itten. Teszteltem Chrome, Firefox, IE9, IE8, IE7-ben.

A lényege kb. ennyi:

#container { overflow: hidden; }
#left { width: 50px; float: left; }
#right { width: 100px; float: right; }
#center { overflow: hidden; }