[CSS] div height

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
Real
Posty: 1
Rejestracja: pn gru 27, 2010 5:19 pm

[CSS] div height

Post autor: Real »

Męczę się z tym tematem od kilku dni. W necie jest kilka rozwiązań ale żadne nie pasuje do mojego problemu albo wręcz jawnie go pomija.

Chodzi o utworzenie 3 poziomych ramek (jedna nad drugą) tak aby górna i dolna ramka miały stałą wysokość a środkowa automatycznie poszerzała się w pionie tak aby dopełnić obszar o nazwie "page"

niestety w div#center atrybut height: 100% powoduje poszerzenie diva poza "page" a height: auto nie robi nic.

Jak to inaczej ugryźć?

Kod: Zaznacz cały

<!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=ISO-8859-1" />
<title>div height</title>
<style type="text/css">
div#center {
  border: 1px solid yellow;
  width: 100%;
  height: auto;
  margin: 0 auto;
}
div#top {
  border: 1px solid black;
  position:relative;
  width: 100%;
  height: 20px;
  top:0; left:0;
}
div#bottom {
  border: 1px solid black;
  position:relative;
  width: 100%;
  height: 40px;
  bottom:0; left:0;
}
div#page {
  border: 1px solid red;
  width: 100%;
  height: 400px;
  position: absolute;
  top:0; left:0;
}
</style>

</head>
<body>
  <div id="page">
    <div id="top">top</div>
    <div id="center">center</div>
    <div id="bottom">bottom</div>
  </div>
</body>
</html>
jamart
Nowy
Nowy
Posty: 23
Rejestracja: czw gru 16, 2010 2:10 pm

Re: [CSS] div height

Post autor: jamart »

Witam.
Na początek nie wiem czy to ma jakieś znaczenie dla dalszego Twojego kodu czy nie ale zanim odpaliłem u siebie ten kod to usunąłem

Kod: Zaznacz cały

  position: absolute;
  top:0; left:0;
a zamiast tego użyłem:

Kod: Zaznacz cały

body {
	margin: 0; padding: 0;
}
ale to taka moja niechęć do używania pozycji absolutnych tam gdzie nie jest to wymagane.

natomiast co do problemu:
to wg mnie najlepiej by było użyć tutaj javaScript.
Mniej więcej tak by to wyglądało - (użyłem biblioteki jQuery dla ułatwienia)

Kod: Zaznacz cały

<script type="text/javascript">
	$(document).ready(function() {
		var h = $('#page').height() - $('#top').height() - $('#bottom').height() - 6;
		// minus 6 ponieważ grubość marginesów też ma znaczenie 
		// #page 1px dolnego + 1px górnego = 2px
		// #top 1px dolnego + 1px górnego = 2px
		// #bottom 1px dolnego + 1px górnego = 2px
		// 								razem = 6
		
		$('#center').css('height', h + 'px');
	});
</script>
jeżeli ktoś wie jak zrobić to za pomocą samego css to z chęcią się zapoznam.
Lobo
Nowy
Nowy
Posty: 70
Rejestracja: śr wrz 23, 2009 9:02 am

Re: [CSS] div height

Post autor: Lobo »

zanim zacznie się rozwiązywać problem trzeba się zastanowić nad założeniami. Pierwsze powiedz jak i po co będzie się zmieniała wysokość diva #page.

No bo musi się zmieniać inaczej nie ma po co dynamicznie zmieniać wysokości diva #center. A tu masz wpisane w css na sztywno.
W takim przypadku wystarczy wpisać jako wysokość 334px. Jeśli natomiast środkowy div ma się rozszerzać by pomieścić swoją zawartość(różna na różnych podstronach) to po prostu nie podawaj wysokości, a div sam się dopasuje do swojej zawartości. Możesz mu nadać też min-height jeśli trzeba żeby layout się nie skurczył zanadto gdy jest mało zawartości.

Wreszcie jeśli pomiędzy nagłówkiem, a stopką ma być jakieś tło to przydziel je divowi #page do tego dając #top i #bottom jakieś inne tło.

Jeśli natomiast z jakiś powodów ma ci się wysokość #page zmieniać to użyj kodu jamart. Przy wczytaniu strony i za każdym razem jak będziesz zmieniał wysokość bez odświeżania strony.

Swoją drogą to przy tworzeniu layoutów stron bardzo rzadko ogranicza się wysokość. No chyba, że strona ma rozszerzać ci się w poziomie.
benio101
Nowy
Nowy
Posty: 37
Rejestracja: pt kwie 13, 2007 10:50 am
Lokalizacja: TRN / PDG
Kontakt:

Re: [CSS] div height

Post autor: benio101 »

RTFM SOA #8

Kod: Zaznacz cały

<frameset rows="x,*,x">
<frame>
<frame>
<frame>
</frameset>
Za x dajesz wysokość w px albo piszesz x% i masz w procentach.
Co do xpt też chyba zadziała i będzie w pt.

Narka i proszę bardzo.
..No bo piszesz o ramkach, no nie?

Przykład ::

Kod: Zaznacz cały

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title>Example</title>
<meta name="generator" content="TSW WebCoder">
</head>

<frameset rows="100,*,100">
<frame src="http://admin.bineo.biz">
<frame src="http://grosik.bineo.biz">
<frame src="http://bineo.biz">
</frameset>
</html>
I działa, chłopie, wszystkie przeglądarki xD
ODPOWIEDZ