CSS lépésről-lépésre: dobozolás
Weblapok készítésekor az egyik leggyakoribb feladat különböző dobozok megvalósítása. A "hagyományos" módszer táblázatok használata, a rosszabb esetben több táblázat cellát is használva a keretek összeállításához. A mai cikkünkben ezt a témakört fogjuk végigjárni, azaz megnézzük, hogyan tudunk kialakítani különböző jellemzőkkel rendelkező (fejléces és fejléc nélküli) dobozokat CSS, és szemantikus HTML segítségével.
A cikk anyaga az első szakmai Weblabor találkozón elhangzott előadásra fog építeni, de a kérdést egy kicsit részletesebben, illetve egy kicsit mélyebben járja körül.
Először vegyük sorra követelményeinket, tisztázzuk a céljainkat! Azt szeretnénk, ha a végeredmény a népszerű böngészők legfrissebb verzióban hibátlanul jelenne meg, azaz célunk, hogy Internet Explorer 6.0, Firefox 1.0 és Opera 7.5 alatt működjenek megoldásaink. Ez persze nem jelenti azt, hogy ne működne más böngészőkkel - nem fogunk hack-et, vagy böngésző specifikus elemeket használni -, így ha egy böngésző helyesen támogatja a HTML és CSS szabványt, akkor működni fog a megoldásunk is rajta. A nagyon régi böngészők esetében, mint a Netscape 4.x széria, a stíluslap nem fog megjelenni, régebbi Internet Explorerek és egyéb böngészők esetén pedig a tartalom mindenképpen látható lesz, legrosszabb esetben nem pont úgy, ahogy azt szerettük volna. Ennyi bevezető után lássuk a feladatot!
Megjegyzendő, hogy a CSS 3 nagyszintű elterjedtsége esetén, vagy ha csak az lenne a követelmény, hogy Mozilla alapú böngészőkben jól jelenjen meg a végeredmény, pár CSS beállítással (
Célunk eléréséhez először vegyük a következő HTML részletet:A megoldás egy
Ha megtekintjük, hogyan néz ki most a kódunk egy böngészőben, semmi különlegesen nem fogunk látni, csak a szövegünket:
Elsőként adjunk neki stílust, hogy láthassuk az egyes elemeket! AA megjelenés ekkor így alakul:
A paragrafusnak alapértelmezett esetben van egy felső és alsó margója, melyek miatt így elválik függőlegesen a doboztól. A többi tulajdonság talán magától értetődő: amit beállítottunk, azt kaptuk.
Mint említettem, egy képre lesz szükségünk a lekerekítésekhez. Ez a kép tartalmazni fogja az összes, mind a négy sarokban levő lekerekítést. Az egyszerűség kedvéért egy a kívánt dobozunkhoz nagyon hasonló, de a kívánt maximum magasságnál jóval magasabb doboz képét fogjuk használni:
A dolog szépségét az adja, hogy ilyenkor nekünk, vagy a grafikusnak egyszerű megmondani, hogy mit rajzoljon: egy olyan dobozt, amit szeretne látni. Nem kell darabolni, nem kell apró fájlokkal törődni, csak egy darab képünk lesz. Hogy hogyan? Kezdjünk neki!
Először is, ezt a képet be fogjuk állítani aEnnek hatására a következő fog megjelenni:
Tényleg kezd alakulni, de a doboz alja még hiányzik. A doboz aljának megjelenítéséhez egy trükköt fogunk alkalmazni. Egy újabbA trükk pedig annyi, hogy ennek a A kimenetünk nem lesz sokkal jobb, mint az előző esetben, hiszen most bár mind a felülre igazított képünk az ábrán van (lenne), mind az alulra igazított, ebből csak az utóbbi látszik, mivel eltakarja az alatt levőt:
Hogy ez ne így legyen, a külsőA kódunk megjelenítése már kezd végleges formát önteni, van felső és alsó lekerekítésünk is:
Most már nincs más hátra, mint foglalkozni egy kicsit a paragrafusokkal is, be kell állítani a megfelelő távolságokat számukra, ugyanis nem túl szép, hogy a két szélükön és alul hozzáérnek a dobozhoz. A külsőA kódunk megjelenése pedig a véglegeshez nagyon közeli lesz:
A következő lépés a szaggatott keret eltávolítása lesz, s meg is kaptuk a célul kitűzött megjelenést. Azaz nem, van még a margók kapcsán pár különbség. Ennek kapcsán a CSS a következőképpen fog alakulni (a változások megtekintését és a miérteket az olvasóra bízom - lehet próbálgatni, kicsit csaltam pár helyen):A megjelenés az, amit elképzeltünk:
Ehhez a következő HTML fájlból indulunk ki (ez is változni fog menet közben, bár nem sokat):Az alap itt is egy
A megoldásunk hasonlítani fog a fejléc nélkülire, ezért a CSS tekintetében mindjárt egy részeredménnyel indulunk (hasonlítsuk össze az előző megoldással!):Aminek a következtében a megjelenés így alakul:
Egész jó, de pont a fejléc van még hátra. Először kiegészítjük a CSS-ünket az alábbiakkal. Ezzel a 0 margót, 0 kitöltést, a 30 pixel magasságot állítjuk be fejlécünknek, továbbá azt mondjuk meg, hogy ha a szöveg túl hosszú lenne, akkor ne lógjon túl a doboz szélességén, hanem vágja le a böngésző.A megjelenés nagyon nem változik, csak méretileg:
A CSS-hez ha hozzácsapnánk a következőt, egész jól állnánk:A megjelenés:
Ekkor azonban valamilyen módszerrel el kell tűntetnünk a szöveget, mert útban van. Ha a szöveg behúzást megfelelő nagyságú negatív értékre fogjuk állítani, a szövegünk egyből el is tűnik, s azt gondolnánk, hogy a végleges megoldás sincs távolt. A CSS-ünk így alakul:A megjelenés már tökéletes:
A viselkedés sajnos még nem. Ha egy olyan böngészőben nézzük ugyanis az oldalt, amely a CSS-t támogatja, de a képek éppen ki vannak kapcsolva, akkor a fejléc szövegéből nem fogunk látni semmit sem. Ehhez sajnos egy új HTML elemet kell bevezetnünk, de ezzel megoldjuk ezt a problémát. A HTML forrásunk így nyeri el végleges formáját:Egy apró változás van: egy üres A span elem jó pozícióban van, a
Nos, most már mind a megjelenés, mind a viselkedés tökéletes lesz:
■ A sorozatban megjelent
Először vegyük sorra követelményeinket, tisztázzuk a céljainkat! Azt szeretnénk, ha a végeredmény a népszerű böngészők legfrissebb verzióban hibátlanul jelenne meg, azaz célunk, hogy Internet Explorer 6.0, Firefox 1.0 és Opera 7.5 alatt működjenek megoldásaink. Ez persze nem jelenti azt, hogy ne működne más böngészőkkel - nem fogunk hack-et, vagy böngésző specifikus elemeket használni -, így ha egy böngésző helyesen támogatja a HTML és CSS szabványt, akkor működni fog a megoldásunk is rajta. A nagyon régi böngészők esetében, mint a Netscape 4.x széria, a stíluslap nem fog megjelenni, régebbi Internet Explorerek és egyéb böngészők esetén pedig a tartalom mindenképpen látható lesz, legrosszabb esetben nem pont úgy, ahogy azt szerettük volna. Ennyi bevezető után lássuk a feladatot!
Letölthető állomány (5.62 KB)
Első feladat
Két feladatot fogunk kitűzni magunk elé, s maradéktalanul megvalósítani, az első egy doboz megjelenítése lesz. A doboz fix szélességgel (283 pixel) rendelkezik, a magassága bizonyos határok között rugalmas (azaz a tartalomtól függ). Egy ilyen kimenetet szeretnénk:Egy egyszerű doboz
Megjegyzendő, hogy a CSS 3 nagyszintű elterjedtsége esetén, vagy ha csak az lenne a követelmény, hogy Mozilla alapú böngészőkben jól jelenjen meg a végeredmény, pár CSS beállítással (
border-radius
) elérhetnénk a kívánt célt. Mivel azonban ez manapság nem áll fenn, illetve a lehető legtöbb böngészőt támogatni szeretnénk, egy képet is fel fogunk majd használni a megvalósításhoz.Célunk eléréséhez először vegyük a következő HTML részletet:
<div class="box">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Suspendisse et diam at arcu lacinia varius. Quisque
volutpat. Phasellus pulvinar felis.</p>
<p>Morbi et lacus. Curabitur a purus quis orci elementum
adipiscing. Curabitur consequat diam vel arcu. Ut lacinia.
Pellentesque porttitor varius.</p>
</div>
div
elemre épít, ezen belül vannak a paragrafusaink - p
elemeken belül. A div
elemet egy box
osztályba soroltuk a class
tulajdonságának a beállításával. Ezzel azonosítottuk be, s ezáltal fogunk tudni stílust rendelni CSS-ből. Használhattuk volnak az id
tulajdonságot is, de esetünkben ez nem megfelelő, mert ilyen dobozból szándékaink szerint előfordulhat, hogy többet is elhelyezünk egy oldalon belül.Ha megtekintjük, hogyan néz ki most a kódunk egy böngészőben, semmi különlegesen nem fogunk látni, csak a szövegünket:
Stílus nélküli megjelenés
Elsőként adjunk neki stílust, hogy láthassuk az egyes elemeket! A
box
osztályba sorolt elemeknek a kívánt szélességet fogjuk beállítani, továbbá egy szürke hátteret és egy fekete keretet rendelünk hozzá. A box
osztályú elemeken belüli paragrafusoknak egy piros keretet fogunk beállítani:
.box {
width: 283px;
background: #bbb;
border: 1px solid #000;
}
.box p {
border: 1px dotted #f00;
}
Egyszerű stílussal
A paragrafusnak alapértelmezett esetben van egy felső és alsó margója, melyek miatt így elválik függőlegesen a doboztól. A többi tulajdonság talán magától értetődő: amit beállítottunk, azt kaptuk.
Mint említettem, egy képre lesz szükségünk a lekerekítésekhez. Ez a kép tartalmazni fogja az összes, mind a négy sarokban levő lekerekítést. Az egyszerűség kedvéért egy a kívánt dobozunkhoz nagyon hasonló, de a kívánt maximum magasságnál jóval magasabb doboz képét fogjuk használni:
Doboz háttér
A dolog szépségét az adja, hogy ilyenkor nekünk, vagy a grafikusnak egyszerű megmondani, hogy mit rajzoljon: egy olyan dobozt, amit szeretne látni. Nem kell darabolni, nem kell apró fájlokkal törődni, csak egy darab képünk lesz. Hogy hogyan? Kezdjünk neki!
Először is, ezt a képet be fogjuk állítani a
div
elem hátterének. Ezzel jelentősen közelebb kerülünk a célunkhoz. A CSS-ünk a következő lesz (a korábbi doboz formázásokat eltávolítottuk):
.box {
width: 283px;
background: url(kepek/mohu_box_bg.gif);
}
.box p {
border: 1px dotted #f00;
}
Kezd alakulni....
Tényleg kezd alakulni, de a doboz alja még hiányzik. A doboz aljának megjelenítéséhez egy trükköt fogunk alkalmazni. Egy újabb
div
elemet vezetünk be, melyet - jobb híján - a content
osztályba sorolunk. Ennek kapcsán HTML-ünk így alakul:
<div class="box">
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Suspendisse et diam at arcu lacinia varius. Quisque
volutpat. Phasellus pulvinar felis.</p>
<p>Morbi et lacus. Curabitur a purus quis orci elementum
adipiscing. Curabitur consequat diam vel arcu. Ut lacinia.
Pellentesque porttitor varius.</p>
</div>
</div>
div
elemnek szintén beállítjuk a hátteret, de most úgy, hogy az aljához legyen igazítva a kép:
.box {
width: 283px;
background: url(kepek/mohu_box_bg.gif);
}
.box .content {
background: url(kepek/mohu_box_bg.gif) bottom;
}
.box .content p {
border: 1px dotted #f00;
}
Most alulra van igazítva
Hogy ez ne így legyen, a külső
div
elemnek beállítunk egy felső kitöltést, így a belső, content
osztályú div
már annyival lejjebb fog kezdődni, nem fogja eltakarni. Ekkor a CSS-ünk a következő:
.box {
width: 283px;
background: url(kepek/mohu_box_bg.gif);
padding-top: 10px;
}
.box .content {
background: url(kepek/mohu_box_bg.gif) bottom;
}
.box .content p {
border: 1px dotted #f00;
}
Már felül és alul is van lekerekítés...
Most már nincs más hátra, mint foglalkozni egy kicsit a paragrafusokkal is, be kell állítani a megfelelő távolságokat számukra, ugyanis nem túl szép, hogy a két szélükön és alul hozzáérnek a dobozhoz. A külső
div
esetében a kitöltést állítottuk be, ugyanezt a belső esetében is megtehetjük, itt azonban alul lesz rá szükségünk. Ha beállítjuk, akkor a bal és jobb oldalt is beállíthatjuk. A paragrafusok alapértelmezett margóját pedig - hogy legyen távolság a paragrafusok között - felül és alul 10px-re, a két oldalon pedig 0 pixelre fogjuk állítani. A következő CSS-t kapjuk:
.box {
width: 283px;
background: url(kepek/mohu_box_bg.gif);
padding-top: 10px;
}
.box .content {
background: url(kepek/mohu_box_bg.gif) bottom;
padding: 0 10px 10px 10px;
}
.box .content p {
border: 1px dotted #f00;
margin: 10px 0;
}
A majdnem végeredmény
A következő lépés a szaggatott keret eltávolítása lesz, s meg is kaptuk a célul kitűzött megjelenést. Azaz nem, van még a margók kapcsán pár különbség. Ennek kapcsán a CSS a következőképpen fog alakulni (a változások megtekintését és a miérteket az olvasóra bízom - lehet próbálgatni, kicsit csaltam pár helyen):
.box {
width: 283px;
background: url(kepek/mohu_box_bg.gif);
padding-top: 10px;
}
.box .content {
background: url(kepek/mohu_box_bg.gif) bottom;
}
.box .content p {
margin: 0;
padding: 0 10px 10px 10px;
font-size: 0.8em;
}
Egy egyszerű doboz
Második feladat
A második feladat az előzőhöz nagyon hasonló, a különbség, hogy egy fejlécet is szeretnénk kialakítani a doboznak. Egy ilyen végeredményt szeretnénk kapni:A fejléces végeredmény
Ehhez a következő HTML fájlból indulunk ki (ez is változni fog menet közben, bár nem sokat):
<div class="box">
<h2 class="fokuszbanarchivum">Fókuszban archívum</h2>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Suspendisse et diam at arcu lacinia varius. Quisque
volutpat. Phasellus pulvinar felis.</p>
<p>Morbi et lacus. Curabitur a purus quis orci elementum
adipiscing. Curabitur consequat diam vel arcu. Ut lacinia.
Pellentesque porttitor varius.</p>
</div>
</div>
box
osztályú div
, ezen belül egy h2
elem szerepel - ez lesz a fejléce a dobozunknak, s ez mellett pedig az előző megoldásban is ott levő content
osztályú div
, s benne a paragrafusok. Azért használunk címsor elemet erre a célra, mert ez a címe, fejléce a dobozunknak, ez alapján tudják a felolvasószoftverek megtalálni az oldalunk kulcselemeit, ez alapján fogja tudni egy kereső megfelelően leindexelni az oldalunk tartalmát. Használhatnánk képet is erre a feladatra, de pont ezek miatt a szempontok miatt nem lenne ilyen jó megoldás.A megoldásunk hasonlítani fog a fejléc nélkülire, ezért a CSS tekintetében mindjárt egy részeredménnyel indulunk (hasonlítsuk össze az előző megoldással!):
.box {
width: 283px;
}
.box .content {
background: url(kepek/mohu_box_bg.gif) bottom;
font-size: 0.8em;
padding: 5px 0 0 0;
}
.box .content p {
padding: 0 10px 10px 10px;
margin: 0;
}
Fejléc nélkül
Egész jó, de pont a fejléc van még hátra. Először kiegészítjük a CSS-ünket az alábbiakkal. Ezzel a 0 margót, 0 kitöltést, a 30 pixel magasságot állítjuk be fejlécünknek, továbbá azt mondjuk meg, hogy ha a szöveg túl hosszú lenne, akkor ne lógjon túl a doboz szélességén, hanem vágja le a böngésző.
.box h2 {
margin: 0;
padding: 0;
overflow: hidden;
height: 30px;
}
Fejléc apró módosításokkal
A CSS-hez ha hozzácsapnánk a következőt, egész jól állnánk:
.box h2.fokuszbanarchivum {
background: url(kepek/mohu_box_fokuszbanarchivum.gif);
}
Már csak a szöveg zavaró
Ekkor azonban valamilyen módszerrel el kell tűntetnünk a szöveget, mert útban van. Ha a szöveg behúzást megfelelő nagyságú negatív értékre fogjuk állítani, a szövegünk egyből el is tűnik, s azt gondolnánk, hogy a végleges megoldás sincs távolt. A CSS-ünk így alakul:
.box {
width: 283px;
}
.box .content {
background: url(kepek/mohu_box_bg.gif) bottom;
font-size: 0.8em;
padding: 5px 0 0 0;
}
.box .content p {
padding: 0 10px 10px 10px;
margin: 0;
}
.box h2 {
margin: 0;
padding: 0;
overflow: hidden;
height: 30px;
text-indent: -1000em;
}
.box h2.fokuszbanarchivum {
background: url(kepek/mohu_box_fokuszbanarchivum.gif);
A fejléces végeredmény
A viselkedés sajnos még nem. Ha egy olyan böngészőben nézzük ugyanis az oldalt, amely a CSS-t támogatja, de a képek éppen ki vannak kapcsolva, akkor a fejléc szövegéből nem fogunk látni semmit sem. Ehhez sajnos egy új HTML elemet kell bevezetnünk, de ezzel megoldjuk ezt a problémát. A HTML forrásunk így nyeri el végleges formáját:
<div class="box">
<h2 class="fokuszbanarchivum">
<span></span>
Fókuszban archívum
</h2>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Suspendisse et diam at arcu lacinia varius. Quisque
volutpat. Phasellus pulvinar felis.</p>
<p>Morbi et lacus. Curabitur a purus quis orci elementum
adipiscing. Curabitur consequat diam vel arcu. Ut lacinia.
Pellentesque porttitor varius.</p>
</div>
</div>
span
elem. Ezt fogjuk felhasználni a fejléc képének megjelenítéséhez. A szöveg marad a helyén - a span
elemet viszont úgy állítjuk be, hogy a szöveg elé kerüljön. Beállítjuk neki a megfelelő hátteret, s így szépen el fogja takarni a szöveget. Ez így már jó lesz. Ehhez a következő CSS-re lesz szükségünk:
.box {
width: 283px;
}
.box .content {
background: url(kepek/mohu_box_bg.gif) bottom;
font-size: 0.8em;
padding: 5px 0 0 0;
}
.box .content p {
padding: 0 10px 10px 10px;
margin: 0;
}
.box h2 {
margin: 0;
padding: 0;
overflow: hidden;
height: 30px;
}
.box h2 span {
position: absolute;
width: 283px;
height: 30px;
}
.box h2.fokuszbanarchivum span {
background: url(kepek/mohu_box_fokuszbanarchivum.gif);
}
position: absolute
, azaz az elhelyezkedésének abszolútra állítása azért szükséges, hogy be tudjon folyni alá a szöveg. Bár a szöveg az később van, mint ez az elem, mégis a háttérbe kerül, mivel maga a span
később van, mint a h2
elem. A span
-nak ezen kívül még szélességet és magasságot állítottunk, mivel alapértelmezett esetben nem foglalna el semennyi helyet. A hátteret egy külön szabállyal állítottuk, ilyenből van szükségünk többre, ha több fejléccel szeretnénk megjeleníteni majd a dobozt. A HTML-ben a különbség a h2
elem osztálya lesz.Nos, most már mind a megjelenés, mind a viselkedés tökéletes lesz:
A fejléces végeredmény
Házi feladat
Végezetül legyen egy házi feladat is, aki szeretne egy kicsit foglalkozni a témával, s a lehetőségekkel: alakítsunk ki egy olyan megoldást, mely lehetővé teszi, hogy ugyanazzal a CSS-sel egyszer fejléccel, egyszer pedig fejléc nélkül jelenhessen meg a doboz. A HTML-ben lehetőség szerint minél kevesebb különbség legyen, azaz gyökér elemként mindenképp abox
osztályú div
szerepeljen, s az egyik esetben legyen egy h2
elem, a másik esetben pedig ne. Aki ezt meg tudja valósítani, biztos vagyok benne, hogy megértette, hogy hogyan működnek a fentiek. Jó próbálgatást!
apró megjegyzés
Mivel a stíluslap nélküli megjelenítésnél gondot okozna bármilyen karakter jelenléte, ezért jobb híján egy méretminimalizált megjegyzést lehetne barakni:
[ dtamas ]
Üres span elem
span
elem igenis lehet üres. Akkor gond, hogy üres, ha egy XSLT transzformáció állítja elő, ilyenkor ugyanis<span />
lesz belőle, ha egy XML kimenetet választunk, s ha a generált XHTML-t nem XHTML fejléccel szolgáljuk ki, akkor ezt a böngésző úgy fogja értelmezni, mintha nyitó elem lenne, s a szöveg aspan
elembe, s nem utána kerül.Az üres
span
elem teljesen érvényes.-boogie-
igaz
[ dtamas ]
"Felesleges"
-boogie-
Nem ismeri a célját
Üres span elem
A <span></span> jelölést
<span></span>
jelölést CSS-ből klasszul meg lehet címezni, és számos trükkre felhasználható, ld. Gilder/Levin módszer.doctype es z-index
1)
Fontos, hogy IE6 is csak akkor kezeli a doboz modellt helyesen ha ugynevezett strict doctype-ot hasznalunk! Kulonben a doboz szelessege eltero lesz a doboz-modell eltero kezelese miatt!
2)
"Bár a szöveg az később van, mint ez az elem, mégis a háttérbe kerül, mivel maga a span később van, mint a h2 elem."
Ez igy nem teljesen pontos. A span nem kesob van hanem benne. Masreszt a pozicionalt dolgok egy magasabb "retegzesi kategoriaba" (stacking-context) mint a sima elemek.
3)
Ha valaki megremulne, hogy mekkora hatalmas kepet kell neki eloallitani, es a tablazatos megoldasnal pici 1px-es kepek voltak csak, az nyugodtan hasonlitsa ossze a fajl mereteket. Masreszt az sem elhanyagolhato, hogy a bongeszonek mindossze 1 kepet kell letoltenie (meg cachelesnel csak 1-szer kell zargatni a szervert) es nem 6-8-szor!
4)
Az angol "box" es "content" elnevezes helyett jobb lenne a magyar doboz es tartalom elnevezes, hatha van itt aki nem ert angolul.
Apróságok
2) Egy kicsit jobban utánanézek, és igyekszem javítani. Valóban pontatlanul fogalmaztam.
3) Így van.
4) Jogos, de a szakmában nem fog tudni eredményeket elérni, ha nem tanul meg angolul. Talán itt és most tanulja meg, hogy a box jelentése doboz, a content jelentése pedig tartalom. :)
-boogie-
tények
Nos én megtettem:
az eredeti kép mohu_box_bg.gif 4 színt tartalmaz mérete: 1352 byte
készitettem ebből három kis képet:
felso.gif 283x10px mérete 135 byte
csik.gif 283x1px mérete 55 byte
also.gif 283x10 mérete 144 byte ( ez a felso.gif -ből lett IM -mel convertálva rotate 180)
Mindhárom kép palettája 4 szint tartalmaz.
Ebből a három képből felépíthető a doboz hátere. Az also és felső gifek tartalmazzák az íveket.
A méret pedig csak 1/4 a nagy képnek.
Üdv,
Bongyi
Nem a kép file!
Gondolod, hogy a megspórolt
Ha van, konkrét eredményed, nosza oszd meg velünk!
(ha lehet) nélkül :)
Üdv,
Bongyi
ok
Ez 5+6 kakakter osszesen 11byte.
Az 1Kb-t amit a kepeken 1-szer megsporolsz arra eleg, hogy a HTML-ben 93-szor szerepeljen az ures DIV.
Azt hiszem te is latod, hogy egy surun latogaott oldalnal, ahol valoszinuleg tobb ilyen doboz is van egy lapon, boven megterul ha a HTML-t csokkented jobban mint a kepeket!
Es ne feledjuk el azt se, hogy amikor cachebol jon a kep akkor is van egy rovid parbeszed a kliens es szerver kozott, hogy nem-e valtozott a kep! Ezis nehany bytnyi kommunikacio, nehany ms varakozasi ido...
persze az igaz, hogy ezt az 1
valoban
ebben az esetben ugy latszik valoban novekedett a meret.
Akkor kicsit atfogalmazom:
- altalaban tobb kep egymas melle mentese eseten csokken a fajlmeret
- nagy homogen feluleteket tartalmazo kep eseten a kep lathato meretenek nagy novekedese sokkal kisebb fajlmeret novekedest eredmenyez a tomorito algoritmusok elvenek koszonhetoen.
A konkret nagy kepet egyebkent png-be lenne erdemes menteni mert ugy felet, kb 560byte-ot foglal csak :)
a képek száma is fontos, nem csak a méretük...
3 divvel?
Ha ilyen fejléc-tartalom-lábléces, fix szélességű dobozos dolgokkal futok össze, azt szoktam csinálni, hogy három div-be helyezem el a dolgokat, felső a fejléc, középső a tartalom (háttérképként a kerettel, ha annak különlegesnek kell lennie), alsó a lábléc. Mit gondoltok erről? Bevallom, a cikkből nem jött le, mi az előnye az ott olvasható módnak pl. az általam vázolt megoldással szemben; a képek mérete nálam így kisebb szokott lenni, és bár kettő (h.f.: egy :) ) helyett három képet használok, szerintem az egyszeri letöltési adatmennyiség kevesebb, utána meg cache-ből dolgozik a böngésző. Igaz ez?
3 képpel
A bemutatott megoldás a következő előnyökkel rendelkezik:
h2
elemet használ, adiv
-eket értelmesen nevezi el. Ez a tieddel is megvalósítható.Az általad írt megoldás azzal az előnnyel rendelkezik, hogy bármilyen hosszú lehet a doboz. A böngésző mindkét esetben cache-ből dolgozik, tehát ez igazából mindegy.
Ami a bemutatott második megoldást illeti, egyszerűen meg lehetne csinálni, hogy egy képpel működjön (a két kép összevonásával), de a céloldalon sok ilyen doboz szerepelt, így az volt inkább a célszerű, hogy a különböző fejlécek csak annyi helyet foglaljanak, amennyit mindenképpen kell (azaz itt az összméret volt a döntő). Még annyit lehetne trükközni, hogy az oldalon előforduló összes dobozfejlécet egy képbe lehet tenni.
A cikknek az volt a célja, hogy szájbarágós legyen, próbáltam minél érthetőbben fogalmazni, hogy a kezdőbbek is megérthessék. Természetesen ha valakinek nem világos valami, csak szóljon, s segítünk!
-boogie-
Köszönöm!
Köszönöm a választ, most már tisztán látom mindegyik megoldás előnyeit, hátrányait.
Azt elfelejtettem hangsúlyozni, hogy nem baj a szájbarágós leírás, pusztán nekem nem stílusom. De attól még a cikk jó, és kiváló alternatívát jelent a boxok megvalósítására.
CSS Rulez
Nekem nagyon tetszett ez a "szájbarágós" leírás, a hülye is megérti... (csak félig gondoltam magamra :)
Ha lesznek hasonó szövegelrendezéssel kapcsolatos CSS leírások akkor annak szerintem csak örülni fog a tömeg.
-= monghuz =-
Így van!
szemleletbeli kulonbseg
A te megoldasodnal 2d-ben gondolkozol, a cikkben leirtnal pedig 3d-ben.
Te egymas melle helyezel elemeket. Vagy ugy is mondhatom, hogy fogsz 1 lapot es felosztod 3 reszre majd ezeknek allitasz be hatteret.
Ez a tablazatos megoldashoz van kozel.
A cikkben leirt technika ehhez kepest egymasba agyazott elemekkel dolgozik. Ilyenkor a belul levo elem a kivul levo elott/felett jelenik meg. Olyan mintha vennel 2 lapot es egymasra tenned.
Az also lap a "box" a felso lap pedig a "content".
Amig nem adunk meg kitoltest addig a belso (felso) lap ugyanakkora mint a kulso, ezert teljesen eltakarja es a hatso lapbol nem latszik semmi. Amikor a padding-top alitasra sor kerul, akkor valojaban lejjebb toljuk az elol levo lapot es lathatova vallik a mogotte levonek a teteje a lekerekitett sarkokkal.
Miert jobb ez? Azert mert MEGLEVO elemekhez rendel hozza CSS szabalyokat. Nem irunk bele csak azert a HTML-be ujabb elemeket, mert a design miatt ott kene egy lekerekites.
Ha az elso peldat nezzuk akkor szigoru ertelemben a 2 befoglalo DIV felesleges, de a masodik peldanal mar teljesen jogos a content hasznalata.
nekem tetszik...
Azért is jó ez a fajta megközelítés, mert a CSS átírásával és a képek feldarabolásával könnyen nyújtózkodóra alakítható a dobozunk.
Más. Tény és való, hogy nagyon kevés HTML elemmel dolgozik ez a megoldás, de ha eltekintünk minden földi kötöttségtől és az ideák világába lépünk, ahol :
szavazas?
szavazás
-boogie-
átlátszó háttérrel
Azonban egy kis trükközéssel ez könnyen áthidalható. A belső .content <div>-et annyi pixellel lejjebb kell csúsztatni ahány pixel magas a sarkok lekerekítése (ami áttetsző):
Ez is jó
-boogie-
Szabványos fix IE-hez
Szöveg megjelenítése
Hasznos leírás volt számomra.
Ha szeretném módosítani, hogy a fejléc szöveget kiírja, és csak háttérképként használja a fejléc képet, hogy tegyem?
Annyi megvan, hogy a szöveget a span elemek közé átrakom:
<h2 class="fokuszbanarchivum"><span>Fókuszban archívum</span></h2>
De hogy kell pozícionálnom, hogy na a bal-felső sarokba igazítsa a fejléc szöveget?
Kösz, Pali
--
Palkó Koma
Szöveg háttérrel
h2
elemnek állíts be egy hátteret, margót, kitöltést, betűméretet a kívánságaid szerint.-boogie-
pont erre a cikkre volt szükségem
a jó tanító mindig a diák fejével gondolkodik...
András jó tanító! ezt onnan tudom, hogy mindig mindig mások fejével gondolkodom.
Izabella hercegnő
Dobozok egymás mellett
Ugye nem kell egy + layert a 3. dimenzóban felhúzni (asszem z irányba)
-egy tabulátorral elátott layernek hogy megtudjam oldani a kérdést...
Persze hogy nem, hiszen erre találták ki a css-t...
Terv
float: left
beállítása mindkét doboznak a dolog nyitja különben. Ha a fórumban felteszed mint kérdést, biztos a hosszabb lélegzetű írás elkészülte előtt megkapod a választ. :)-boogie-
maximális magasság?
Nekem jól jött a cikk, épp most cserélem táblázataimat CSS-re és persze elsőre semmi sem úgy van, ahogy kis naívan gondoltam.
Most csatlakoztam a Weblaborhoz és ahogy nézem rászáltatok a CSS-re... és ez jó, mert így mindenkihez eljut, mint anno a PHP!!!
Aminek szerintem sokan örülnének, egy olyan cikk, amely az átlag portál felépítését taglalja: 3 sáv középre igazítva, fejléc, lábléc, 100% magasság akkor is, hakevesebb a cikk magassága (talán pont ezt említetted előbb).
Csak így tovább!
átlátszó kép használata doboznak!
3 doboz...
Lásd #21
Korlátlan méretű doboz
A következő lenne a problémám: Nem tudom konkrétan a dobozom méretét, mert mindig változik, méghozzá elég széles határok között. A honlapom nem rögzített szélességű, hanem mindig az ablakhoz méreteződik (százalékban adom meg a méreteket). Úgy gondolom, hogy ezzel nem zárom ki egyik képernyő felbontást sem, de mivel nincs túl sok tapasztalatom, nem tudom helyes-e ez a megoldás. Az első kérdésem tehát a milyen előnyökkel, hátrányokkal jár a rögzített szélességű honlap? A következő: hogy lehet legegyszerűbben lekerekíteni egy dobozt? Kitaláltam egy ötletet, de nem tudom, hogy kell kivitelezni. Ebben kérném még a segítségeteket. Szóval van az oldalnak egy háttere és a doboznak is. Készítek egy sarkot, amely átlátszó, csak a sarkon kívüli rész háttér színű (tehát a homorú alakzat), a másik mivel átlátszó felveszi a doboz hátterét. Ezt a sarkot kéne a doboz négy sarkába bevarázsolni, úgy, hogy minden sarokban az előzőhez képest 90°-al legyen elforgatva. Így egy képpel megoldható az egész és bármekkora lehet a dobozom.
Azt tudom, hogy háttérként, hogy lehet a sarkot a négy sarokba betenni. Hogy kell elforgatni illetve egyszerre a négy hátteret kezelni?
{
background-image: url(sarok.gif);
background-position: top left;
background-image: url(sarok.gif); 90°-kal elforgatva
background-position: top right;
background-image: url(sarok.gif); 180°-kal elforgatva
background-position: bottom left;
background-image: url(sarok.gif); 270°-kal elforgatva
background-position: bottom right;
}
Előre is köszönöm a segítségeket.
Üdv.: Jeti
re: Korlátlan méretű doboz
sztem nézz körül itt van rengeteg megoldás (talán blogkmarkok közt (is) volt)
"CSS Rounded Corners 'Roundup'"
Rögzített szélességű honlapok
A többiek véleményét is szívesen várom.
Korlátlan méretű doboz (ötlet)
Én most tanulom a css-t, és most próbálom összehozni a doboz háttérképét css-ben. Én nem vagyok olyan gyors, és vannak nálam itt sokkal okosabbak. Mivel táblázatosan már megcsináltam a lekerekített sarkú háttérképet (táblázatban raktam össze a képeket), így biztosan át lehet ültetni css-be is. 50-400 bájnyi képeket használok (a sarkok a nagyobbak, az ismétlésre használt vonalak a kisebb méretűek), és kb. 10 kép letöltése igen gyors a kis méretek miatt. Bocs a pongyola fogalmazás miatt. Még nem ismerem a szakzsargont, pedig még vizsgáznom is kell. Erre a honlapra tanulni járok, s ne kívánja senki, hogy tudományosan meg is magyarázzam a leírtakat. A lényeget próbáltam elmagyarázni tőlem telhetően.
kép mögött írás
Ez a kép mögött lesz.
Úgy tudom, hogy a keresők lepontozzák azokat az oldalakat ahol ilyet találnak.
Nem?
vazi
doboz
3-at egymás mellet meg még 3-mat alatta. Az lenne a kérdésem, hogy a dobozok között, (jobbra, ballra) miként tudok pár pixel helyet kihagyni, illetve alul és felül ugyan ezt megenni.
Köszönöm
Elhelyezés
korlátolt méretű box
Igaz a megoldás nem túl szép, de kizárja hogy egy véletlen bekerült hosszabb szöveg túlcsorduljon vagy olvashatatlan legyen.