Będzie to prosty tutorial, jak za pomocą CSS utworzyć prosty box z zaokrąglonymi rogami, który będzie wydłużał się sam w zależności od ilości zawartego w nim tekstu. Jest to bardzo prosty efekt, ale początkującym może przysporzyć sporo problemów. Warto jednak go znać, bo jest bardzo przydatny i pozwala trochę ożywić design strony.
Tutaj pobierzecie paczkę z gotowym już efektem zawierającą wszystkie potrzebne pliki: index.html, style.css oraz grafiki.
Pierwszą czynnością jaką musimy wykonać jest zaprojektowanie boxu w jakimś programie graficznym. Jeśli żadnego nie posiadamy to możemy skorzystać z narzędzi On-Line, np. Sumo Paint. Poniżej przygotowany przeze mnie box, z którego w celu dokończenia tego tutoriala możecie skorzystać.
Gdy mamy już przygotowany projekt naszego boxu, to możemy przystąpić do jego cięcia. Będziemy musieli rozłożyć go na trzy części. Nagłówek, część środkową, czyli mały wycinek boxa o jego szerokości i wysokości najlepiej jednego piksela, oraz dolny fragment.
Jak widzimy te trzy części, będą odpowiadać trzem kolejnym divom (o kolorze niebieskim), które potem utworzymy. Nagłówek (div class=”top”), na którym umieścimy również tytuł (div class=”title”) naszego boxu. Mały wycinek ze środka (div class=”mid”), który będzie potem tłem tekstu umieszczonego w boxie (div class=”content”). Na końcu natomiast zostanie umieszczona grafika z dolną częścią boxu (div class=”bot”).
Box zatem będzie miał następującą strukturę:
Więc jego kod będzie wyglądał tak:
<div id="box">
—<div class="top">
——<div class="title">
———Tytuł boxu
——</div>
—</div>
—<div class="mid">
——<div class="content">
———Treść boxu
——</div>
—</div>
—<div class="bot">
—</div>
</div>
Teraz gdy już mamy zbudowany szkielet naszego boxu, musimy przypisać odpowiednie atrybuty poszczególnym jego elementom w arkuszu stylów. Dla trzech divów oznaczonych na obrazku wyżej kolorem niebieskim przypiszemy, jako tło odpowiadające im obrazki. Będzie tylko jedna różnica, a mianowicie “mid” będzie miał tło powtarzane w osi y oraz szerokość ustawioną na 100% by wydłużał się wraz z tekstem. Gotowy arkusz stylów dla tego boxu wygląda następująco:
#box {
width: 205px;
}
#box .title {
padding-left: 10px;
padding-top: 12px;
font: bold 12px "Verdana";
}
#box .top {
background: url(images/top.jpg) no-repeat;
height: 43px;
width: 205px;
}
#box .bot {
background: url(images/bot.jpg) no-repeat;
height: 20px;
width: 205px;
}
#box .mid {
background: url(images/mid.jpg) repeat-y;
height: 100%;
width: 205px;
background-position: left top;
}
#box .content {
width: 185px;
padding-bottom: 10px;
padding-top: 10px;
padding-left: 10px;
padding-right: 10px;
font: normal 10px "Verdana";
text-align: justify;
line-height: 1.2em;
}
To już praktycznie wszystko. Możecie pod gotowy już kod podłożyć swoje grafiki zmieniając tym samym jego wygląd. Jeśli będą szersze i wyższe to oczywiście musimy zmienić atrybuty “width” i “height” na odpowiednie wartości.








Zostaw swój komentarz


4 Komentarzy
Niestety, nie mogę pochwalić Twojego sposobu na taki box, za bardzo zaszalałeś z ilością divów. Nie za bardzo stosujesz dziedziczenie – tak jak jest to możliwe przez CSS. Taki box można zrobić za pomocą max 3 divów w przypadku kiedy mamy obramowanie boczne w części tekstowej, a za pomocą 2 kiedy mamy jednolite tło bez ramek. Nie jest to dobry przykład dla początkujących.
Kiedyś ktoś mnie takiego sposobu nauczył i taki stosuję ;) Nigdy mi to do tej pory nie przeszkadzało, bo spełnia swoją funkcję. Ale chętnie przeczytam na vivee o innym sposobie.
Wiadomo, najlepiej ograniczać kod do minimum posługując się głównymi funkcjami CSS – to jest najważniejsze dla przejrzystości kodu i optymalizacji.
To nie jest aż tak długi kod żeby były z nim jakieś problemy przy otwieraniu strony. Bez przesady. Strona powinna być estetyczna i parę linijek kodu nie robi różnicy wobec plusów jakie płyną z estetyczności.