Seperti terlihat, di website di atas terdapat kumpulan halaman yang berisi informasi
tertentu. Misalnya informasi tentang event, Program Kerja, dan lainnya. Nah, agar pengunjung
lebih mudah untuk mengakses informasi yang mereka cari, halaman-halaman tersebut
dikelompokkan dalam menu yang bisa diakses dari halaman utama.
Pada umumnya, website itu dibangun dengan HTML, CSS, dan JavaScript untuk bagian
tampilannya (Front-End) dan bahasa PHP untuk mengatur bagian server/dapur dari website
tersebut (Back-End). Namun, di modul ini, kita hanya akan membahas tentang HTML dan CSS
saja.
B. HTML
Seperti yang sudah dijelaskan diatas, bahwa tampilan website dibuat dengan HTML, CSS,
JS. dibawah ini adalah ilustrasi hubungan ketiga hal tersebut.
HTML adalah singkatan dari Hypertext Markup Language. HTML merupakan bahasa
markup, bukan pemrograman. Bahasa markup adalah bahasa yang diapit oleh <tag>. Bahasa
markup yang populer selain HTMLadalah XML.
HTML berfungsi sebagai pengatur isi dari website tersebut, mulai dari apa saja yang akan
ditampilkan, bagaimana urutannya, dan lain sebagainya.
HTML bisa dibuat dengan text editor apapun, termasuk yang ada di ponsel. File HTML
memiliki format .html . file tersebut dijalankan menggunakan browser.
1. Struktur HTML
Perhatikan contoh kode berikut
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Document</title>
</head>
<body>
<!-- blok komentar -->
<h1>Heading 1</h1>
<p>Paragraf pertama</p>
<p>Paragraf kedua</p>
</body>
</html>
• <body> Container atau wadah dari apa yang akan ditampilkan di layar. Bagian
inilah semua yang akan dilihat oleh pengunjung dituliskan.
• <!-- --> Blok komentar. Apa yang ditulis disini tidak akan ditampilkan
• <h1> Heading 1, merupakan heading dengan ukuran terbesar.
• <p> Blok paragraf
2. Elemen HTML
Elemen pada HTML didefinisikan sebagai tag pembuka-isi-tag penutup
<nama_tag> Isi ditulis disini </tag_penutup>
3. Heading
Heading berguna untuk memnunjukkan judul serta subjudul tentang apa yang akan
ditampilkan. Penggunaan heading yang tepat sangat berpengaruh terhadap SEO (Search
Engine Optimization). Heading memiliki 6 tingkatan, yaitu h1-h6
4. Paragraf
Paragraf pada HTML diawali dengan tag <p> isi </p>
Setiap text yang diapit dengan tag <p></p> akan dibuat dalam blok baru. Walaupun text
yang dibuat tidak rapi, apabila masih berada di dalam tag <p> akan dirapikan secara
otomatis oleh browser.
Contoh :
<p>Paragraf ini
diketik dengan asal-asalan
namun, akan dirapikan oleh browser
</p>
<p>
Yang ini juga sama,
tapi tenang aja, hasilnya tetap rapi
</p>
Hasil dari blok kode tersebut adalah :
Namun, bagaimana jika ingin membuat teks pada baris yang berbeda dalam 1 paragraf?
Kita bisa menggunakan breaking rules atau preformatted text. Tapi apa sih
perbedaanya?
Breaking Rules
Breaking Rules <br/> itu membuat baris baru, namun format tetap dibuat rapi.
<p>
baris pertama <br/>
baris kedua <br/>
ini adalah baris ketiga
</p>
Preformatted Text
Preformatted Text <pre></pre> menghasilkan teks yang sama persis dengan apa yang
diketik.
<pre>
baris pertama
baris kedua
ini adalah baris ketiga
</pre>
5. Pemformatan Teks
• <b> </b> Teks tebal (bold)
• <u> </u> Teks bergaris bawah (underline)
• <i> </i> Teks Miring (italic)
• <em> </em> Teks miring juga (emphasized text)
• <s> </s> Teks coret (striketrought)
• <strong> </strong> Teks tebal (juga)
• <small> </small> Teks ekstra kecil
• <sub> </sub> Subscript
• <sup> </sup> Superscript
• <mark> </mark> Penanda teks
a) Bold
<p>
Teks <b>Tebal</b>
</p>
b) Underline
<p>
Teks <u>bergaris bawah</u>
</p>
c) Italic
<p>
Teks <i>Miring</i>
</p>
d) Emphasized Text
<p>
Teks <em>Miring juga</em>
</p>
e) Striketrough
<p>
Teks <s>coret</s>
</p>
f) Strong
g) Small
<p>
Teks <small>kecil</small>
</p>
h) Subscript
<p>
Teks <sub>Subscript</sub>
</p>
i) Superscript
<p>
Tulisan <sup>pangkat</sup>
</p>
j) Marked Text
6. Atribut HTML
• Semua elemen HTML dapat memiliki atribut
• Atribut berisi informasi tambahan tentang elemen
• Atribut selalu ditentukan di tag pembuka
• Atribut biasanya datang dalam pasangan nama/nilai seperti: nama="nilai", namun
ada atribut yang tidak memiliki nilai, contohnya adalah atribut required.
• Atribut target
Atribut target berfungsi untuk menentukan tempat dimana tautan tersebut akan
dibuka. Atribut target ada 4, yaitu:
- _blank. Paling umum digunakan, tautan baru dibuka di tab baru
- _self. Bawaan. Link akan dibuka di tab yang sama dengan yang sedang dibuka
- _parent. Membuka dokumen di bingkai induk
- _top. Membuka dokumen di seluruh body window
• URL Absolut dan Relative
Penulisan URL pada href bisa menggunakan URL absolut(lengkap) maupun
relative(tanpa http://).
Contoh URL Absolut:
Hasil dari kedua kode tersebut tidak memiliki perbedaan, jadi yang mana yang mau
dipakai, itu sama saja.
• File Path
Penggunaan Hyperlink tidak selalu untuk alamat suatu website, namun juga
ditujuakan ke sebuah berkas/file.
- href=”file.html”. file yang dituju berada didalam folder yang sama
Folder induk
File tujuan
file pengakses
9. Tabel
seperti tabel pada umumnnya, tabel di HTML terdiri dari baris dan kolom.
Syntax untuk tabel:
<table>
<tr>
<th>Nama</th>
<th>Alamat</th>
<th>Umur</th>
</tr>
<tr>
<td>Abdul</td>
<td>Kalibeber</td>
<td>23</td>
</tr>
<tr>
<td>Ahmad</td>
<td>Kaliwiro</td>
<td>19</td>
</tr>
</table>
Hasil:
Isi dari tabel harus berada didalam tag <table>. Element utama dari tabel adalah:
- <tr> - table row, mendefinisikan baris pada tabel. Tiap <tr> bisa berisi lebih
dari satu <th> atau <td>
- <th> - table head, kepala tabel. Secara default, teks-nya akan di bold
- <td> - table data, berisi data pada tabel
• Menggabungkan sel (Merge cell)
Sel pada tabel di HTML dapat digabungkan layaknya di excel. Untuk
menggabungkan sel, ada dua pilihan yaitu colspan untuk menggabungkan kolom,
dan rowspan untuk menggabungkan baris
- Colspan
<table>
<tr>
<th colspan="2">Nama</th>
<th>Alamat</th>
</tr>
<tr>
<td>Abdul</td>
<td>Kalibeber</td>
<td>23</td>
</tr>
<tr>
<td>Ahmad</td>
<td>Kaliwiro</td>
<td>19</td>
</tr>
</table>
- Rowspan
<table>
<tr>
<th colspan="2">Nama</th>
<th>Alamat</th>
</tr>
<tr>
<td>Abdul</td>
<td rowspan="2">Kalibeber</td>
<td>23</td>
</tr>
<tr>
<td>Ahmad</td>
<td>19</td>
</tr>
</table>
Hasil dari kode diatas adalah:
10. List (daftar)
List di HTML terlihat sama persis dengan bullet atau numbering pada aplikasi pengolah
kata seperti MS Word. List dibagi menjadi 2 yaitu
• Ordered List <ol>
Yaitu daftar yang berurutan seperti 1,2,3, dst. atau A., B., C. Dst.
Syntax ordered list:
<h3>Ordered List</h3>
<ol>
<li>Daftar 1</li>
<li>Daftar 2</li>
<li>Daftar 3</li>
</ol>
<ul>
<li>Daftar 1</li>
<li>Daftar 2</li>
<li>Daftar 3</li>
</ul>
11. Elemen Block dan Inline
Setiap elemen HTML memiliki nilai tampilan default, tergantung pada jenis elemennya.
Ada dua nilai tampilan: blok dan sebaris(inline).
• Elemen Blok
a. Elemen level blok selalu dimulai pada baris baru, dan browser secara otomatis
menambahkan beberapa spasi (margin) sebelum dan sesudah elemen.
b. Elemen level blok selalu menggunakan lebar penuh yang tersedia
(membentang ke kiri dan kanan sejauh mungkin).
c. Dua elemen blok yang umum digunakan adalah: <p> dan <div>.
d. Elemen <p>mendefinisikan paragraf dalam dokumen HTML.
e. Elemen <div>mendefinisikan divisi atau bagian dalam dokumen HTML.
• Elemen Sebaris(inline)
a. Elemen sebaris tidak dimulai pada baris baru.
b. Elemen sebaris hanya membutuhkan lebar sebanyak yang diperlukan.
Elamen-elemen yang bersifat Inline:
Atribut class ini sering digunakan untuk menunjuk ke nama kelas dalam style sheet.
Itu juga dapat digunakan oleh JavaScript untuk mengakses dan memanipulasi
elemen dengan nama kelas tertentu. Untuk mengakses class, baik Stylesheet
maupun JavaScript menggunakan notasi “.”
• Id
Id bersifat unik. Sebuah elemen HTML tidak bisa menggunakan lebih dari 1 id,
apabila dipaksakan, maka selector baik CSS maupun JS tidak dapat membacanya.
Id juga sering digunakan sebagai bookmark, penggunaannya digabungkan dengan
link.
<div class="prodi">
<p id="informatika">Bagian ini memiliki atribut class
prodi dan id informatika</p>
</div>
13. Input
Input atau masukan bertujuan untuk meyetorkan data yang nantinya akan diproses oleh
script attaupun bagian backend. Tag input tidak akan berfungsi jika tidak ada pemroses
seperti JS ataupun bahasa backend seperti PHP, Python, dsb.
Total ada 22 jenis. Namun hanya beberapa yang sering digunakan, antara lain
• Text
• Number
• Button
• Color
• Checkbox
• Radio
• Range
• Password
• Search
• submit
• Tel
• Date
• Datetime-local
Syntax input field
<label for="inputText">Teks</label>
<title>Judul Dokumen</title>
</head>
c. Eksternal CSS
File CSS terpisah dengan file HTML. Untuk memanggil file CSS adalah dengan
cara berikut
<head>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<title>html css</title>
<link rel="stylesheet" href="style.css">
</head>
File style.css
h2{
color: tomato;
}
/* tag selector */
h2{
/* blok kode*/
}
/* class selector */
.namaClass{
/* blok kode */
}
/* id selector */
#namaId{
/* blok kode */
}
/* global selector */
*{
/* blok kode */
}
Apabila ada beberapa elemen yang memiliki properti yang sama seperti ini:
p{
color: #ffd555;
}
h1{
color: #ffd555;
}
span{
color: #ffd555;
}
maka bisa dibuat:
p, h1, span{
color: #ffd555;
}
- Combinator selector
Selector yang memilih elemen berdasarkan hubungan spesifik
- Pseudo-class selector
Contoh selector pada tombol ketika mouse diatas tombol:
button:hover{
/* blok kode */
}
- Pseudo-element selector
Contoh selector untuk memilih huruf pertama pada elemen <p>
p::first-letter{
/* blok kode */
}
- Attribute selector
Contoh selector untuk input bertipe text
input[type="text"]{
/* blok kode */
}
3. Warna
Warna ditentukan dengan nama warna atau kode warna seperti RGB, RGBA, HSL
• Warna teks
h2{
color: red;
}
• Warna background
h2{
color: red;
background-color: yellow;
/* atau */
background-color: rgb(255, 255, 0);
}
• Warna Border
h2{
color: red;
background-color: rgb(255, 255, 0);
/* border */
border: 3px solid;
border-color: rgb(0, 76, 255);
}
h2{
color: rgba(255, 0, 0, 0.5);
background-color: rgb(255, 255, 0);
/* border */
border: 3px solid;
border-color: rgb(0, 76, 255);
}
4. Background
Background berfungsi untuk memberikan efek latar belakang(background) pada
elemen HTML. Properti background ada 6:
a. background-color
b. background-image
c. background-repeat
d. backgound-attachment (skip)
e. background (cara yang lebih ringkas)
a. Background-color
Menentukan warna pada background, pengaplikasiannya sudah dijelaskan
diatas.
b. Background-image
Menyisipkan gambar sebagai background.
body{
background-image: url(sky.png);
}
untuk membuat gambar rapi, perlu dilakukan pemilihan repeat yang tepat
sesuai dengan ukuran gambar. Apabila gambar berbentuk portrait, maka
lebih baik gunakan repeat-x dan apabila gambar berorientasi landscape,
sebaiknya gunakan repeat-y. Contoh perbedaan repeat-x dan repeat-y.
Mengapa hasilnya seperti itu? Karena gambar yang digunakan memiliki
orientasi potrait dan dengan ukuran gambar yang kecil, sehingga apabila
menggunakan repeat-y maka gambar akan diulang dengan arah vertikal,
begitupun sebaliknya.
b) Background-repeat:No.-repeat
Dengan properti ini, gambar background tidak akan di-repeat, sehingga
ukurannya apa adanya.
body{
background-image: url(gradient_bg.png);
background-repeat: no-repeat;
}
d. Background
Properti ini bisa menggabungkan beberapa propeti diatasnya. Apabila kita
ingin membuat bcakground dengan ketentuan:
background-image: sky.jpg;
background-repeat: no-repeat;
bakground-size: cover;
maka bisa dibuat seperti ini:
body{
background: url(sky.jpg) no-repeat cover;
}
.name{
margin-top: 20px;
margin-right: 10px;
margin-bottom: 15px;
margin-left: 10px;
}
Kode diatas berari margin atas sebesar 20px, margi kanan 10px, margin bawah
15px, margin kiri 10px.
Dan untuk margin yang
• Margin shorthand
k) Margin 4 value
Utuk mempersingakat jumlah kode, contoh diatas bisa dirubah menjadi
.name{
margin: 20px 10px 15px 10px;
}
l) Margin 3 value
Apabila nilai margin hanya ditulis 3 nilai, maka margin yang
terpengaruh adalah margin atas-kanan+kiri-bawah.
.name{
margin: 20px 15px 10px;
}
m) Margin 2 value
Apabila nilai margin hanya ditulis 2 nilai, maka margin yang
terpengaruh adalah margin atas+bawah-kanan+kiri
.name{
margin: 20px 10px;
}
P{
color: value;
}
• Perataan teks
.p1{
/* rata kiri(default) */
text-align: left;
}
.p2{
/* tengah */
text-align: center;
}
.p3{
/* rata kanan */
text-align: right;
}
.p4{
/* rata kanan-kiri */
text-align: justify;
}
• Mengubah ukuran font
.p1{
font-size: value;
}
contoh:
.p1{
font-size: 30px;
}
Setelah dirubah:
a) Font online
Misalkan font yang akan digunakan berasal dari Google Font
(https://fonts.google.com/)
.p1{
/* salah */
@import
url('https://fonts.googleapis.com/css2?family=Montserrat:wgh
t@500&display=swap');
font-family: 'Montserrat', sans-serif;
}
/* benar */
@import
url('https://fonts.googleapis.com/css2?family=Montserrat:wgh
t@500&display=swap');
.p1{
font-family: 'Montserrat', sans-serif;
}
b) Font lokal
Untuk menggunakan font lokal, syntaxnya adalah
@font-face {
font-family: 'nama font';
src: url(url font);
}
Contoh:
@font-face {
font-family: 'Death Star';
src: url(./assets/font/Death\ Star.otf);
}
.p1{
font-family: 'Death Star', sans-serif;
}
Format font yang didukung adalah: ttf, otf, woff, woff2, eot, svg. Namun
tidak semua browser mendukung format eot dan svg.
• Position
Properti position menentukan jenis metode penentuan posisi yang
digunakan untuk elemen.
Properti position memiliki 5 value:
a) Absolute
b) Relative
c) Static
d) Sticky
e) Fixed
a) Absolute
Sebuah elemen dengan position: absolute; diposisikan relatif terhadap
parent yang diposisikan(bukan diposisikan relatif terhadap viewport,
seperti fixed). Namun; jika elemen yang diposisikan absolute tidak
memiliki parent yang diposisikan, elemen tersebut menggunakan body
dokumen, dan bergerak bersama dengan pengguliran(scroll) halaman.
Catatan: Elemen posisi absolut dihilangkan dari flow normal, dan
elemen dapat tumpang tindih(override).
HTML
CSS
Maka hasilnya adalah
b) Relative
Elemen dengan position: relative; aka diposisikan relatif dengan posisi
aslinya. Posisi ini akan menempati ruang, walaupun posisinya ada
diatas elemen lainnya.
Lebarnya mengikuti panjang viewport. Menambahkan properti top,
right, bottom, left tidak memengaruhi panjangnya kecuali jika
ditentukan panjangnya.
Hasilnya adalah:
c) Static
Elemen dengan position: static; tidak akan terpengaruh oleh properti
top, right, bottom, left (padding dan margin masih memengaruhinya).
Posisi ini adalah posisi default tiap elemen HTML.
d) Fixed
Elemen dengan position: fixed; memiliki posisi yang tetap walaupun
sebuah halaman di scroll elemennya akan tetap pada posisinya.
Pemosisian elemen dohitung berdasarkan viewport, bukan container
pembungksnya
e) Sticky
Posisi ini adalah gabungan dari posisi relative dan fixed. Value ini
bekerja berdasarkan scroll. Apabila sebuah element belum sampai pada
batas viewport, maka elemennya masih bisa berpindah posisi, namun
apabila sudah discroll dan elemennya mencapai batas viewport, maka
elemennya akan memiliki posisi yang tetap.
• Display
Properti display mengatur apakah suatu elemen diperlakukan sebagai
elemen blok atau elemen sebaris serta layout yang digunakan untuk turunannya,
seperti layout flow, grid, atau flex. Secara formal, properti display mengatur
tipe tampilan dalam dan luar elemen. Tipe luar mengatur partisipasi elemen
dalam tata letak flow; tipe dalam mengatur tata letak child. Beberapa value
display sepenuhnya ditentukan dalam spesifikasi masing-masing; misalnya
detail dari apa yang terjadi ketika display: flex; dideklarasikan didefinisikan
dalam spesifikasi flexible box model.
Pada modul ini kita hanya akan membahas 4 jenis display, yaiut
a) block
b) inline
c) inline-block
d) flex
a) block
jenis tampilan block menjadikan setiap elemen bersiat block, tidak
ada konten disampingmya. Contoh dibawah ini akan mengubah
elemen inline <span> menjadi block.
<p>
Normalnya, elemen <kbd><span></kbd> secara
default bersifat inline, namun <span class="block">elemen
ini</span> bersifat block
</p>
.block{
display: block;
}
hasilnya adalah:
b) inline
Jenis tampilan inline menjadikan tampilan sebuah elemen menjadi
inline terhadap elemen berikutnya. Namun, elemen inline tidak bisa
diatur tinggi dan lebarnya
c) inline-block
Jenis tampilan inline-block adalah gabungan dari kedua elemen
diatas. Posisi dari elemen ini akan terlihat seperti inline, namun tiap
elemennya memiliki sifat blok, bisa diatur tinggi dan lebarnya,
elemen ini tidak akan menumpuk(override) elemen lainnya, apabila
diatur tinggi dan lebarnya, elemen dengan inline-block akan
memiliki jarak dengan elemen berikutnya sesuai dengan panjang
dan lebarnya.
<p>
Normalnya, elemen <kbd><span></kbd> secara default bersifat
inline, namun <p class="inline-block">elemen ini</p> bersifat
inline-block
</p>
.inline-block{
display: inline-block;
width: 100px;
height: 30px;
}
30px
100px
d) flex
Display flex atau sering disebut sebagai flexbox, bertujuan
untuk mengatur layout suatu konten yang ukurannya dinamis/ belum
diketahui ukurannya.
Tujuan utama penggunaan layout flex adalah untuk memberi
kemampuan container agar dapat memanipulasi elemen-elemen
yang ada didalamnya, baik itu merubah tinggi dan lebar, urutan
posisi elemen, serta jarak antar elemen.
Ada 2 elemen utama pada flexbox, yaitu flex container dan
flex item.
2) Flex-wrap
Secara default flex-item akan berusaha memposisiskan diri agar
bisa berada dalam 1 baris yang sama. melalui property ini kita bisa
mengatur agar item bisa di”wrap”. Terdapat 3 nilai untuk property
ini yaitu no-wrap (nilai default), wrap, wrap-reverse.
3) Flex-flow
Shorthand untuk memadukan flex-direction dan flex-wrap. Syntax-
nya adalah: flex-flow: <flex-direction> <flex-wrap>.
.class{
flex-flow: column wrap;
}
4) Justify-content
Justify-content digunakan untuk mensejajarkan setiap items yang
ada pada flex container, agar container tersebut mendistribusikan
ruang kosong yang tersisa. Pengisian ruang ini diatur berdasarkan
sumbu-x (horizontal).
5) Align-items
Properti ini hampir sama dengan justify-content, bedanya adanya
align-items diatur berdasarkan sumbu-y (vertikal).
6) Align-content
Align-content adalah perpaduan dari justify-content dan align-items,
yatu mensejajarkan item secara vertikal dan horizontal.