Tidak cukup hanya dengan membaca dan tahu, bagi anda yang ingin belajar CSS / webdesign, anda harus membuat kasus sendiri, latihan menggunakan berbagai property dan value dari CSS atau tag dan attribut dari HTML agar pada akhirnya anda mengerti sendiri untuk apa semuanya.
Berikut ini adalah 5 permasalahan bagi seorang CSS Newbie (yang masih belum tau apa-apa tentang CSS) yang sering ditemukan, termasuk oleh saya dulu. .
Lalu saya buat sebuah div dengan id topbar,dan Dengan gesitnya saya langsung menerapkan style seperti berikut .
Ada jarak !!??, gimana nih. coba pake
pernahkan anda bertanya, dari mana datangnya besar huruf H1 sampai H6 ?, atau jarak antara Ul atau Ol, atau kenapa tag i bisa miring, tag b bisa tebal dan seterusnya dan seterusnya?.
Untuk itulah CSS reset hadir. CSS reset digunakan untuk mereset ulang nilai-nilai yang telah diterapkan pada file CSS bawaan browser.
sekarang coba anda tambahkan, baris style berikut :
CSS Reset tidak hanya itu, jika anda ingin memulai memformat halaman web dari awal berari anda juga harus mereset seluruh value dari setiap property yang ada menjadi normal.
Kika anda malas, mereset seluruh property setiap tag, gunakan CSS Reset dari pihak ketiga. contohnya.
Untuk memahami apa perbedaan antara ID dan Class, kita analogikan dengan Manusia. siap?
ID digunakan untuk menandai suatu tag, katakanlah ID itu Nama seseorang, misalnya “Rian” atau “Ariona”, nama digunakan untuk membedakan antara satu sama lain. dan tidak boleh ada sama (meskipun ada nama yang sama). sedangkan Class bisa kita analogikan dengan manusia, mau “Rian”, mau “Ariona”, mau “Ahmad” semuanya memiliki Class sejenis yaitu Manusia. mulai ngeh ??.
Dalam sebuah markup, tidak boleh terdapat dua atau lebih ID yang sama, misalnya :
Jika suatu markup memiliki karakteristik yang sama, misalnya warnanya sama , ukuran hurufnya sama, jenis hurufnya sama. maka gunakanlah Class sebagai penanda. misalnya :
Perbedaanya terletak pada jarak yang diberikan. Margin memberikan jarak pada setiap element sedangkan Padding memberi jarak Antara Konten dengan Element. biar lebih “oohh” kita pakai contoh .
Buatlah markup seperti berikut.
Kita menerapkan margin sebesar 20 pixel, dan anda dapat melihat setiap box (element) memiliki jarak antara satu sama lainnya. inilah yang dimaksud jarak antar element.
Perhatikan, teks yang ada di dalam Box, tidak ada jarak sama sekali bukan? Teks mentok ke pinggiran Box. disinilah Padding beraksi . padding digunakan untuk memberikan jarak antara konten (teks) dengan sisi element itu sendiri. coba anda tambahkan padding pada class box sebelumnya.
Permasalahan barupun muncul, kok, kotaknya jadi Gede?? kan saya beri ukuran 100px, kalo diukur pake mistar kok jadi lebih dari 100 .
ini disebabkan oleh karena padding akan menambahkan jaraknya dengan ukuran element itu sendiri. misalnya paddingnya 20px dan width dari box 100px maka ukuran akhir box adalah, 140 X 140px. selain padding, yang mempengaruhi ukuran dari box adalah border, perhatikan diagram berikut.
Lalu bagaimana solusinya agar ukuran box selalu sama meskipun kita menambahkan padding. Cara pertama adalah dengan menentukan ukuran width dan height terlebih dahulu, lalu dikurangi padding yang akan ditambahkan.
cara kedua adalah menerapkan padding pada child, bukan pada parentnya langsung. misalnya:
Masih semangat membaca?? Lanjuut!!
Untuk menjelaskan perbedaan Relative dan Absolute kita langsung ke contoh kasus. buatlah markup seperti berikut ini:
Setiap element secara default memiliki position static, ketika position bernilai static anda tidak dapat menentukan jarak satu element dengan element lain menggunakan property Top, Bottom, Left, atau Right. sebagai contoh, tambahkan property left:100px; di class .dua , maka tidak akan terjadi perubahan sama sekali.
Absolute position akan mengeluarkan elemen tersebut dari parentnya (.satu). jika anda perhatikan, sebelumnya kita menambahkan 100px dari kiri, 100px ini dihitung/dimulai dari box .Satu, bukan dihitung dari ujung browser. dengan menambahkan position absolute, 100px akan ditambahkan mulai dari element terdekat yang memiliki position:relative, dalam kasus ini adalah browser itu sendiri.
Misalnya kita punya sebuah Div dengan Id Container, lalu didalam div tersebut kita tambahkan dua Div dengan ID Content dan Sidebar. seperti berikut :
Sekilas tidak ada yang salah bukan?, semuanya berjalan seperti seharusnya. Content berada disisi kiri, dan sidebar berada di sisi kanan. tidak ada yang salah memang, tapi sebenarnya parent dari content dan sidebar yang bermasalah. loh kok?? , coba anda beri background pada #container misalnya.
sebelum ke solusi, kita tambahkan lagi satu div dengan id footer.
Memang membingungkan, Apa yang sebenarnya terjadi!!! cetusku dalam hati .
Ada 3 cara untuk permasalahan #container agar dapat merubah tingginya secara otomatis sesuai tinggi Content.
Jika anda mengerti tentang solusi sebelumnya, anda dapat menebak bukan bagaimana solusi untuk permasalahan footer ini. atau masih bingung ? , untuk masalah footer ini, cukup dengan menambahkan clear:both pada #footer .
Berikut ini adalah 5 permasalahan bagi seorang CSS Newbie (yang masih belum tau apa-apa tentang CSS) yang sering ditemukan, termasuk oleh saya dulu. .
Masalah ke-1 : CSS Reset
Sewaktu latihan CSS, saya berniat untuk membuat bar yang berada di atas halaman web, seperti pada gambar berikut ini.Lalu saya buat sebuah div dengan id topbar,dan Dengan gesitnya saya langsung menerapkan style seperti berikut .
#topbar{saya save dan langsung melihat previewnya di browser. yes topbarnya udah diatas, tingginya bener, lebarnya udah bener 100%, tapi kok serasa ada yang mengganjal . apaa yah.. ?
width:100%;
height:30px;
background:#333;
}
Ada jarak !!??, gimana nih. coba pake
margin:0
juga g mau nempel tuh topbar. Solusi
Untuk kasus diatas, anda harus mengerti apa yang sebenarnya terjadi. hal ini terjadi karena setiap browser memiliki css defaultnya masing-masing. file css bawaan ini akan diterapkan disetiap halaman web yang di load pada browser.pernahkan anda bertanya, dari mana datangnya besar huruf H1 sampai H6 ?, atau jarak antara Ul atau Ol, atau kenapa tag i bisa miring, tag b bisa tebal dan seterusnya dan seterusnya?.
Untuk itulah CSS reset hadir. CSS reset digunakan untuk mereset ulang nilai-nilai yang telah diterapkan pada file CSS bawaan browser.
sekarang coba anda tambahkan, baris style berikut :
*{Tanda bintang (*) adalah selector untuk semua element html, sama halnya dengan memberikan style pada html.
margin:0;
padding:0;
}
If “Reset” sounds complicated, don’t worry. it’s quite simple. Mostly it involves zeroing out margins and padding.dan liat apa yang terjadi, kini topbarnya merapat ke sisi browser .
-Jeffrey Way-
CSS Reset tidak hanya itu, jika anda ingin memulai memformat halaman web dari awal berari anda juga harus mereset seluruh value dari setiap property yang ada menjadi normal.
Kika anda malas, mereset seluruh property setiap tag, gunakan CSS Reset dari pihak ketiga. contohnya.
Masalah ke-2 : ID dan Class
Ketika membuat markup HTML ada attribut ID ada juga Class, keduanya digunakan untuk menandai suatu tag. yang menjadi pertanyaan adalah, apa bedanya ID dan Class ? toh keduanya digunakan untuk menandai tag.Untuk memahami apa perbedaan antara ID dan Class, kita analogikan dengan Manusia. siap?
ID digunakan untuk menandai suatu tag, katakanlah ID itu Nama seseorang, misalnya “Rian” atau “Ariona”, nama digunakan untuk membedakan antara satu sama lain. dan tidak boleh ada sama (meskipun ada nama yang sama). sedangkan Class bisa kita analogikan dengan manusia, mau “Rian”, mau “Ariona”, mau “Ahmad” semuanya memiliki Class sejenis yaitu Manusia. mulai ngeh ??.
Dalam sebuah markup, tidak boleh terdapat dua atau lebih ID yang sama, misalnya :
<div id="judul">ID hanya boleh digunakan satu kali karena sifatnya yang unik. (meskipun pada browser modern, hal ini tidak menjadi masalah. tapi hal ini sangatlah salah).
<ul id="judul">
<li>item1</li>
</ul>
</div>
<h1 id="judul">Ini Ibu Budi</h1>
Jika suatu markup memiliki karakteristik yang sama, misalnya warnanya sama , ukuran hurufnya sama, jenis hurufnya sama. maka gunakanlah Class sebagai penanda. misalnya :
<div class="merah">Class “merah” dapat digunakan berkali-kali dalam markup, karena karakteristiknya yang sama, yaitu memiliki background merah.
<h1>Judul Blog</h1>
</div>
<blockquote class="merah">Demi masa!</blockquote>
.merah{
background:red;
}
Masalah ke-3 : Margin dan Padding?
Masalah ketiga adalah, apa sih bedanya Margin dan Padding??, keduanya kan digunakan untuk memberikan Jarak.Perbedaanya terletak pada jarak yang diberikan. Margin memberikan jarak pada setiap element sedangkan Padding memberi jarak Antara Konten dengan Element. biar lebih “oohh” kita pakai contoh .
Buatlah markup seperti berikut.
<div class="box">Saya Kotak dengan Empat Sudut</div>lalu berilah style seperti berikut.
<div class="box">Saya Kotak dengan Empat Sudut</div>
<div class="box">Saya Kotak dengan Empat Sudut</div>
*{jika di preview di browser berikut tampilannya.
margin:0; padding:0;
}
.box{
background:red;
width:100px;
height:100px;
margin:20px;
float:left;
}
Kita menerapkan margin sebesar 20 pixel, dan anda dapat melihat setiap box (element) memiliki jarak antara satu sama lainnya. inilah yang dimaksud jarak antar element.
Perhatikan, teks yang ada di dalam Box, tidak ada jarak sama sekali bukan? Teks mentok ke pinggiran Box. disinilah Padding beraksi . padding digunakan untuk memberikan jarak antara konten (teks) dengan sisi element itu sendiri. coba anda tambahkan padding pada class box sebelumnya.
*{Hasil di browser anda akan seperti berikut.
margin:0; padding:0;
}
.box{
background:red;
width:100px;
height:100px;
margin:20px;
float:left;
padding:20px;
}
Permasalahan barupun muncul, kok, kotaknya jadi Gede?? kan saya beri ukuran 100px, kalo diukur pake mistar kok jadi lebih dari 100 .
ini disebabkan oleh karena padding akan menambahkan jaraknya dengan ukuran element itu sendiri. misalnya paddingnya 20px dan width dari box 100px maka ukuran akhir box adalah, 140 X 140px. selain padding, yang mempengaruhi ukuran dari box adalah border, perhatikan diagram berikut.
Lalu bagaimana solusinya agar ukuran box selalu sama meskipun kita menambahkan padding. Cara pertama adalah dengan menentukan ukuran width dan height terlebih dahulu, lalu dikurangi padding yang akan ditambahkan.
cara kedua adalah menerapkan padding pada child, bukan pada parentnya langsung. misalnya:
<div class="box">kita berikan padding pada Class Content, jadi ukuran box masih tetap sama .
<div class="content">Ini Ibu Budi</div>
</div>
Masih semangat membaca?? Lanjuut!!
Masalah ke-4 : Relative atau Absolute?
Ini yang memang membingungkan. apa sih bedanya Relative dan Absolute??Untuk menjelaskan perbedaan Relative dan Absolute kita langsung ke contoh kasus. buatlah markup seperti berikut ini:
<div class="satu">lalu beri style seperti berikut.
<div class="dua"></div>
</div>
*{jika ditampilkan di browser tampilannya akan menjadi seperti berikut.
margin:0;padding:0; /* CSS Reset */
}
.satu{
width:400px;
height:200px;
background:green;
padding:20px;
}
.dua{
width:200px;
height:100px;
background:orange;
padding:20px;
}
Setiap element secara default memiliki position static, ketika position bernilai static anda tidak dapat menentukan jarak satu element dengan element lain menggunakan property Top, Bottom, Left, atau Right. sebagai contoh, tambahkan property left:100px; di class .dua , maka tidak akan terjadi perubahan sama sekali.
.dua{Untuk itu kita perlu menset position menjadi relative, dengan begitu class dua akan bergeser 100px dari kiri.
width:200px;
height:100px;
background:orange;
padding:20px;
left:100px;
}
.dua{Dengan menambahkan position:relative anda dapat menentukan posisi suatu elemen berada. lalu bagaimana dengan Absolute ?.
width:200px;
height:100px;
background:orange;
padding:20px;
left:100px;
position:relative;
}
Absolute position akan mengeluarkan elemen tersebut dari parentnya (.satu). jika anda perhatikan, sebelumnya kita menambahkan 100px dari kiri, 100px ini dihitung/dimulai dari box .Satu, bukan dihitung dari ujung browser. dengan menambahkan position absolute, 100px akan ditambahkan mulai dari element terdekat yang memiliki position:relative, dalam kasus ini adalah browser itu sendiri.
.dua{jika anda masih belum mengerti, silahkan tambahkan properti bottom dengan nilai 0 (bottom:0;), maka box akan menempel ke bawah browser, karena kita menentukan jarak dari bawah dengan 0px.
width:200px;
height:100px;
background:orange;
padding:20px;
left:100px;
position:absolute;
}
.dua{lain halnya jika kita menambahkan position:relative pada box .satu, maka box .dua akan menempel dibawah box .satu.
width:200px;
height:100px;
background:orange;
padding:20px;
left:100px;
bottom:0;
position:absolute;
}
.satu{
width:400px;
height:200px;
background:green;
padding:20px;
position:relative;
}
Masalah ke-5 : Float
“CSS is easy. Anyone can do it!”. it may not be rocket science, but CSS is Powerful enough to make you rip your hair out.Property Float digunakan untuk meratakan element ke kiri atau ke kanan, untuk penggunaan biasa memang tidak menjadi masalah. jika kita ingin meratakirikan element kita tinggal menambahkan float:left, begitu juga sebaliknya. tapi ketika kita menambahkan floating pada element maka element parent akan bertingkah aneh. (penasaran ?? ), kita pakai suatu kasus. .
-Jeffrey Way-
Misalnya kita punya sebuah Div dengan Id Container, lalu didalam div tersebut kita tambahkan dua Div dengan ID Content dan Sidebar. seperti berikut :
<div id="container">Selanjutnya kita beri style seperti berikut :
<div id="content"></div>
<div id="sidebar"></div>
</div>
#container {jika ditampilkan di browser maka tampilannya seperti berikut ini :
width:960px;
margin:0 auto; /* agar container berada di tengah browser*/
padding:20px;
}
#content {
background:orange;
width:600px;
height:700px;
float:left;
}
#sidebar{
background:yellow;
width:300px;
height:400px;
float:right;
}
Sekilas tidak ada yang salah bukan?, semuanya berjalan seperti seharusnya. Content berada disisi kiri, dan sidebar berada di sisi kanan. tidak ada yang salah memang, tapi sebenarnya parent dari content dan sidebar yang bermasalah. loh kok?? , coba anda beri background pada #container misalnya.
#container {apa yang terjadi?? ternyata tinggi #container tidak ikut membesar, seharusnya tinggi #container ikut membesar sesuai dengan tinggi #content bukan ? .
width:960px;
margin:0 auto; /* agar container berada di tengah browser*/
padding:20px;
background:green;
}
sebelum ke solusi, kita tambahkan lagi satu div dengan id footer.
<div id="container">lalu beri style seperti berikut:
<div id="content"></div>
<div id="sidebar"></div>
<div id="footer"></div>
</div>
#footer{Yang kita inginkan adalah footer memiliki lebar 100%, dan berada di bawah bukan? tapi yang terjadi adalah :
background:red;
height:100px;
width:100%;
}
Memang membingungkan, Apa yang sebenarnya terjadi!!! cetusku dalam hati .
Solusi
Solusi untuk #ContainerAda 3 cara untuk permasalahan #container agar dapat merubah tingginya secara otomatis sesuai tinggi Content.
- Clear:Both
Anda tinggal buat sebuah Div kosong sebelum penutup div #container dan beri style clear:both seperti berikut ini :<div id="container">
<div id="content"></div>
<div id="sidebar"></div>
<div id="footer"></div>
<div style="clear:both"></div>
</div> - Pseudo Class
Cara ini hampir sama dengan cara pertama, hanya saja kita tidak membuat div kosong seperti cara sebelumnya, melainkan membuat pseudo class pada #container. pada file CSS anda tambahkan kode berikut#container:after{
clear:both;
content:' ';
display:block;
} - Overflow:Hidden
Cara ini adalah cara paling sederhana, anda tinggal menambahkan overflow:hidden pada style #container. Masalahpun terpecahkan#container {
width:960px;
margin:0 auto; /* agar container berada di tengah browser*/
padding:20px;
overflow:hidden;
}
Jika anda mengerti tentang solusi sebelumnya, anda dapat menebak bukan bagaimana solusi untuk permasalahan footer ini. atau masih bingung ? , untuk masalah footer ini, cukup dengan menambahkan clear:both pada #footer .
#footer{
background:red;
height:100px;
width:100%;
clear:both;
}
Kesimpulan
Itulah permasalahan-permasalahan yang sering ditemukan oleh para “pelajar baru CSS”, seperti saya dulu. tapi setiap ada permasalahan pasti ada solusinya . semoga artikel singkat (< bohong) ini bermanfaat bagi anda para CSS newbie .Referensi
- From Photoshop to HTML : “How to slice your design like a pro” (Jeffrey Way)
- www.w3schools.com/css/
- New Riders: The CSS Detective Guide (Denise Jacobs)
0 komentar:
Posting Komentar