Jak zrobić tabelkę z nierównymi komórkami?

Witam. Robię szablon mojej strony. Jestem początkujący, i moją stronę chcę umieścić w odpowiednio podzielonych komórkach tabelki. Chcę, żeby ta tabelka wyglądała tak (rysunek zrobiony w GIMPie):

Wiem, że tabelki robi się wpisując w pliku html table, tr i td, nie chcę, by była równo podzielona, a zawsze jest równo podzielona. Więc jak powinienem w pliku html wpisać te znaczniki, by komórki nie były równo? Kiedyś, jakiś rok temu, miałem małą stronę, i coś mi się kojarzy, że wpisywało się obok tego jakieś procenty, ale nie wiem gdzie.

Jeśli tabelą to za pomocą rowspan i colspan.

Stron nie robi się na tabelach tylko na divach :wink:

Niestety nie da się. Możesz zagnieździć tabelę w tabeli. Jak wspomniał  Drobok warto zacząć się uczyć CSS…

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<table width="500" border="1" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td width="235" rowspan="2" valign="top"><table width="100%" border="1" cellpadding="0" cellspacing="0">
        <tbody>
          <tr>
            <td height="227">&nbsp;</td>
          </tr>
          <tr>
            <td height="267">&nbsp;</td>
          </tr>
        </tbody>
      </table></td>
      <td width="317" height="188">&nbsp;</td>
    </tr>
    <tr>
      <td height="310">&nbsp;</td>
    </tr>
  </tbody>
</table>
</body>
</html>

 

Nie umiem CSS, mam problemy nawet z zagnieżdżeniem go w dokumencie i napisaniem w CSS co jaki ma styl. Nie wiem też jak mogę użyć divów i jak zrobić w divach taki wygląd strony jaki chcę. Dopiero zacząłem się uczyć HTML, kiedyś robiłem stronę ale robiłem ją na szybko w tabelce (wyszło nawet OK) dużą część tego co robiłem zapomniałem. Nie używałem też wtedy divów ale przyznam rację - często się ich używa, na każdej dobrej stronie na jaką wejdę i włączę w przeglądarce “Zbadaj element” to strona jest zbudowana w dużej części z divów.

Jeśli tak, to wytłumaczycie mi jak używać divów i jak mogę zrobić dobry styl w CSS? Z CSS mam zwłaszcza taki problem, że CSS chyba dodaje styl do znaczników, a problem jest jak chcę mieć jeden znacznik w dwóch stylach, przykład - tabelka. Mam dwie tabelki, ale są one oznaczone tym samym - <table>. I jak chcę żeby tabelki były różnych stylów (w jednej niebieski gradient a w drugiej czerwony) to tak zrobić nie mogę. Mogą być tylko tego samego stylu. Pewnie jest jakieś rozwiązanie tego problemu lub po prostu w ogóle nie rozumiem jak arkusze stylów działają. Ale powtarzam - moją prostą stronę robiłem jakiś rok temu na szybko, arkusz stylu ledwo działał, więc doświadczenie w HTML mam marne.

W każdym bądź razie dziękuję za przydatne odpowiedzi :slight_smile:

=========================================================================================

Edit:

Dobrze, wiem już jak divów używać i innych elementów blokowych dokumentu. Mam teraz tylko problem z tym jak je rozmieścić, np. wychodzi mi dziwne rozmieszczenie - <aside> jest pod <header>.

=========================================================================================

Edit 2:

Style po części też mam trochę już opanowane, pozostaje więc tylko pytanie: Jak rozmieścić elementy blokowe?

Chyba w arkuszu stylów lub w stylu lokalnym, tak? Wolałbym jednak arkusz stylów, bo potem wystarczyło by że bym go dodał do innych podstron i miałbym gotowe podstrony, a tak musiałbym się męczyć ze stylem w każdym dokumencie osobno.

Jeżeli masz problem z podstawami css i html to może zainwestuj w jakieś kursy na ten temat. Ja uczyłem się na strefie kursów i o dziwo z poradników na youtube.

 

PS. teraz stron na tabelkach się nie robi bo to archaizm, tylko na divach zgodnie z html5 i css3.

to co przytoczyłeś na zdjęciu na divach robi się bez problemy nadając im różne wysokości.

 

Skopiuj kod i zapisz jako plik np. test.html

 

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Test</title>
	<style>
	body {
		background-color: #ccc;
		margin: 0;
		padding: 0;
	}
	.container {
		width: 800px;
		margin: 0 auto;
		height: 100%;
		background-color: white;
	}
	.container .left {
		width: 30%;
		float: left;
		background-color: #f5f5f5;
	}
	.container .left .gora{
		height: 150px;
		background-color: fuchsia;
	}
	.container .left .dol{
		height: 800px;
		background-color: green;
	}
	.container .right {
		width: 70%;
		float: right;
		background-color: #f58b8b;
		height: 100%;
	}
	.container .right .nav {
		height: 80px;
		background-color: blue;
	}
	.container .right .content {
		height: 870px;
	}
	.clear {
		clear: both;
		width: 100%;
		height: 0;
	}
	footer {
		background-color: black;
		height: 80px;
	}
	</style>
</head>
<body>
	<div class="container">
		<div class="left">
			<div class="gora">
				
			</div>
			<div class="dol">
				
			</div>
		</div>
		
		<div class="right">
			<div class="nav">
				
			</div>
			<div class="content">
				
			</div>
		</div>
	<div class="clear"></div>
	<footer>
		
	</footer>
	</div>
</body>
</html>

 

Nie wstawia się pustych divów, ani takich które nic w sobie nie zawierają.

<!doctype html>

Test body { background-color: #ccc; margin: 0; padding: 0; } #container { width: 800px; margin: 0 auto; height: 100%; background-color: white; } #container .left{ width: 30%; float: left; } #container .main{ width: 70%; float: right; } #container .gora{ height: 150px; background-color: fuchsia; } #container .dol{ height: 800px; background-color: green; } #container .nav { height: 80px; background-color: blue; } #container .content { height: 870px; background-color: red; } footer { clear: both; background-color: black; height: 80px; }

 

Sam już tak zacząłem robić, tylko że mam osobno arkusz stylów i osobno divy. I się nauczyłem naprawdę przydatnej rzeczy - w CSS i HTML można oznaczać różne części stylu, np. przez ID lub class. To już znacznie ułatwia całą pracę.

Dziękuję za te przykłady, dzięki nim będę już wiedział jak mogę rozmieszczać divy i inne elementy blokowe.

PS. Mam mały problem - w lewym górnym rogu zrobiłem diva (obok niego ma być header) i wstawiłem do niego obrazek a pod obrazkiem napis. wyśrodkowałem w arkuszu stylów obrazek i tekst, a rozmiar diva ustawiłem na 10vw (width i height) żeby wyszedł kwadrat i wyśrodkowanie działało tylko w tym kwadracie. Dla czytelności dodałem sobie obramowanie 5px. I wynik wyszedł taki jak chce, ale wydaje się jakby obrazek szedł na samą górę kwadratu a tekst na sam dół, co zostawia trochę dużo pustej przestrzeni pomiędzy tekstem a obrazkiem. Jak mogę ten tekst i obrazek “ścisnąć” by były bliżej siebie i było trochę pikseli mniej pustej przestrzeni?

I jeszcze jedna rzecz - nie chcę kupować książek o css, minęły ze dwie godzinki a już wiem dużo, bo tyle w internecie jest tutoriali. Najlepsze według mnie są teraz te strony do nauki HTML: http://webmaster.helion.pl/index.php/, http://www.kurshtml.edu.pl/html/zielony.html  i http://www.w3schools.com/, właściwie na w3schools jest praktycznie wszystko związane z HTML.

Bardzo przydatne są też strony typu jsbin.com, opis słowny niewiele mówi, przy pytaniach wstawiaj kod, oraz najlepiej krótki opis wyniku.

<div class="topleftlogo">
<img src="files/media/images/core/logo.png" class="imgcenter" width="100" height="100" alt="logo" >
<p style="font-size: 20pt; font-family: '04b30' "; align="center" >Napis do<br/>ściśnięcia</p>
</div>

CSS

.topleftlogo {
    width: 10vw;
    height: 10vw;
    border: 5px solid #ffa500;

img.imgcenter {
    display: block;
    margin: 0 auto;
}

 

A to wiem, tutaj ma on tylko zresetować floaty, nie chciało mi sie bawić w dodatkowe clearfixy.

OK, już sobie poradziłem z problemem z tekstem i obrazkiem. Po prostu połączyłem tekst i obrazek w GIMPie a potem ustawiłem to jako tło dla diva.