Typography adalah sebuah seni mengatur huruf / teks untuk membuatnya lebih mudah dibaca dan menarik secara visual.
Property font-family
Nilai dari property font-family
adalah nama font yang ingin digunakan, contoh:
p {
font-family: Arial;
}
Property ini akan mencari font di dalam komputer client (pengunjung web kita) bukan di dalam komputer server.
Untuk mengantisipasi tidak tersedianya sebuah font, kita bisa menulis alternatif nama font pengganti, contoh:
p {
font-family: Arial, Helvetica, sans-serif;
}
Khusus untuk font yang terdiri dari beberapa kata atau mengandung spasi, harus ditulis dalam tanda kutip, contoh:
p {
font-family: 'Times New Roman', Georgia, serif;
}
Property font-size
CSS menyediakan beragam satuan untuk mengatur ukuran font, yang semuanya di set melalui font-size
, contoh:
p {
font-size: 14px;
}
Property font-size
dan berbagai property CSS yang lain butuh nilai dalam satuan length, yakni satuan panjang seperti pixel, cm, mm, em ataupun persen.
Secara garis besar, nilai satuan length dikategorikan dalam 2 kelompok: nilai absolut dan nilai relatif.
Nilai Absolut adalah satuan length yang nilainya tetap dan tidak terpengaruh oleh element di sekelilingnya. Contohnya ialah pixel (px), cm, mm, point (pt), inches (in) dan pica (pc).
Nilai Relatif, adalah nilai yang berubah-ubah tergantung posisi dan parent elementnya. Contoh dari satuan ini adalah persen (%), em dan rem.
Satuan Persen (%)
p {
font-size: 120%;
}
Kode tersebut akan mencari seluruh tag p
kemudian men-set ukurannya sebesar 120% dari ukuran font-size parent elementnya. Jika ukuran font-size parent elementnya tidak di set, maka teks akan tampil dengan ukuran 19.2 px.
Angka 19.2 px didapat dari ukuran default font-size dari tag body
, yakni 16 px. Sehingga angka 120% * 16 = 19.2 px.
Yang perlu diperhatikan dari satuan persen adalah, nilai persen ini bisa terakumulasi, contoh:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-size: 16px;
}
div {
font-size: 110%;
}
</style>
</head>
<body>
<div>
Child element 1
<div>
Child element 2
<div>
Child element 3
<div>Child element 4</div>
</div>
</div>
</div>
</body>
</html>
Pada kode diatas, terdapat tag div didalam tag div, sehingga hasilnya tag div pertama memiliki ukuran 17.6 px dan tag div terdalam akan memiliki ukuran 23.43px yang didapat dari 110% _ 110% _ 110% _ 110% _ 16px = 23.43px.
Satuan Em
Satuan em berasal dari istilah typography media cetak yang merujuk pada tinggi karakter m
pada suatu font. Dalam CSS, em sangat mirip seperti %, dimana hasilnya juga dihitung berdasarkan nilai parent element.
Nilai dari 1em sama dengan 100%, sehingga 1.2em sama dengan 120%, dst. Seperti halnya persen, satuan em juga bersifat akumulatif, contoh:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-size: 16px;
}
div {
font-size: 1.1em;
}
</style>
</head>
<body>
<div>
Child element 1
<div>
Child element 2
<div>
Child element 3
<div>Child element 4</div>
</div>
</div>
</div>
</body>
</html>
Apa bedanya % dengan em?
Saat satuan em dan % dipakai untuk font-size
keduanya nyaris tidak berbeda. Namun ketika diterapkan pada property lain seperti lebar dan tinggi element (width & height) maka keduanya akan terlihat berbeda.
Ketika menggunakan nilai % untuk lebar sebuah element (menggunakan property width), lebar itu dihitung dari width parent elementnya. Sedangkan jika kita menggunakan nilai em, lebar element akan dihitung berdasarkan nilai font-size
parent elementnya.
Satuan Rem
Rem merupakan singkatan dari “root em”, artinya rem bergantung pada “root element”. Di dalam struktur DOM HTML, root element ini adalah tag html
.
Ketika membuat font-size: 1.2rem
artinya ukuran font-size itu diset sebesar 120% dari ukuran font-size tag html
, tidak peduli dimana paragraf tersebut berada. Artinya tidak ada efek akumulasi pada satuan rem.
Selain diisi dengan satuan angka, font-size juga bisa di isi dengan keyword, berikut satuan keyword absolut untuk property font-size:
xx-small
x-small
small
medium
large
x-large
xx-large
Untuk ukuran relatif terdapat 2 nilai, yakni smaller
dan larger
.
Property color
Penggunaan property color dan background-color sangat mudah, contoh :
h1,
p {
color: White;
background-color: Black;
}
Satuan Color CSS
CSS mendukung setidaknya 4 notasi penulisan warna :
keyword
, contoh : white, purple, black, dll.#RRGGBB
/#RGB
, contoh : #FFFFFF, #000000, dllrgb(rr, gg, bb)
/rgba(rr, gg, bb, aa)
, contoh :rgb(255,0,255)
.hsl(hh, ss, ll)
/hsla(hh, ss, ll, aa)
, contoh :hsl(300,100%,50%)
.
Property font-weight
Property font-weight
bertujuan untuk menebalkan teks (bold). Nilai untuk property ini bisa berupa angka 100, 200, 300 sampai 900 serta nilai berupa keyword seperti normal, bold, bolder dan lighter.
Perlu diketahui, bahwa nilai-nilai tersebut bisa digunakan jika font yang dipakai juga mendukungnya. Namun kebanyakan font hanya mendukung teks normal atau bold saja.
Contoh penggunaan font-weight :
h1 {
font-weight: 700;
}
p {
font-weight: bold;
}
Property font-style
Property font-style
berfungsi untuk memringkan teks (italic), nilai yang bisa diinput adalah normal, italic dan oblique, contoh:
p {
font-style: italic;
}
Property text-decoration
Property text-decoration
digunakan untuk membuat dekorasi teks, seperti garis bawah, atas atau garis tercoret.
Nilai untuk property ini adalah salah satu dari keyword underline, overline, line-through dan none. Kita juga bisa menggunakan 2 atau lebih efek dekorasi sekaligus, contoh:
.satu {
text-decoration: underline;
}
.dua {
text-decoration: underline overline;
}
Warna garis yang muncul akan menyesuaikan dengan warna teks.
Pada CSS3, kita bisa mengatur warna dan jenis garis. Untuk melakukannya, property text-decoration
dipecah menjadi 3 property baru :
text-decoration-line
untuk mengatur posisi garis.text-decoration-style
untuk mengatur jenis garis.text-decoration-color
untuk mengatur warna garis.
Contoh:
.satu {
text-decoration-line: underline;
text-decoration-style: solid;
text-decoration-color: purple;
}
Untuk menyederhanakan penulisan, kita bisa menulisnya secara singkat (shorthand), contoh:
.satu {
text-decoration: underline solid puprle;
}
Property text-transform
Property text-transform
dapat diisi dengan salah satu keyword: capitalize, uppercase, lowercase, atau none, contoh :
.satu {
text-transform: capitalize;
}
Property font-variant
Property font-variant
dipakai untuk membuat variasi font, tetapi nilai yang didukung saat ini hanya ada 2: small-caps
dan normal
.
Contoh:
.satu {
font-variant: small-caps;
}
Property text-align
Property text-align
memiliki beberapa nilai, diantaranya adalah: left, center, right, dan justify.
Contoh:
.satu {
text-align: center;
}
Property line-height
Property line-height
digunakan untuk mengatur line spacing. Nilai dari property ini bisa diisi dengan berbagai satuan length, seperti px, em, persen, bahkan tanpa satuan (hanya angka).
Misalnya, line-height: 140%
maka web browser akan mengatur tinggi baris 140% dari ukuran teks saat ini (diambil dari property font-size).
Jika diisi dengan nilai angka saja, seperti line-height: 1.9
artinya tinggi teks akan di set 1.9 kali ukuran font saat ini.
Contoh:
.satu {
line-height: 1.2em;
}
Property margin-bottom
Property margin-bottom
digunakan untuk mengatur jarak (spasi) antar paragraf (dan juga element lain). Nilai yang bisa diisi adalah semua satuan length seperti px, em, dan juga persen (%).
Contoh:
* {
margin: 0; /* menghapus margin bawaan web browser */
}
.satu {
margin-bottom: 1.8em;
}
Property
margin-bottom
sebenarnya bagian dari konsep Box Model.
Property letter-spacing
& word-spacing
Property letter-spacing
& word-spacing
digunakan untuk mengatur jarak antar huruf dan kata. Property ini bida diisi satuan px, em atau rem dan juga bisa bernilai negatif.
Contoh:
.satu {
letter-spacing: 5px;
word-spacing: 0.1em;
}
Property text-indent
Indentasi adalah sebutan untuk baris pertama paragraf yang menjorok ke arah dalam. Umumnya indentasi dipakai dalam tulisan formal. Dalam CSS pengaturan indentasi bisa dilakukan dengan property text-indent
.
Contoh:
p {
text-indent: 40px;
}
Font Shorthand Notation
Shorthand notation adalah property khusus yang berisi gabungan dari berbagai property lain. Property font
bisa dipakai untuk menyingkat penulisan 6 property sekaligus, yakni:
font-style
font-variant
font-weight
font-size
line-height
font-family
Penulisan property font harus mengikuti urutan ini, namun tidak semuanya harus ditulis, contoh penulisan property font:
/* size | family */
font: 2em 'Open Sans', sans-serif;
/* style | size | family */
font: italic 2em 'Open Sans', sans-serif;
/* style | variant | weight | size/line-height | family */
font: italic small-caps bolder 16px/2 cursive;
Property text-shadow
Efek text-shadow
menyediakan 4 pilihan pengaturan: offset-x
, offset-y
, blur-radius
dan color
.
Nilai minimal yang harus di setakan pada property text-shadow
adalah offset-x dan offset-y.
Nilai offset-x berfungsi untuk mengatyr seberapa jauh bayangan yang dihasilkan dari teks asli ke arah sumbu x (horizontal), sedangkan offset-y ke arah sumbu y (vertical).
Satuan yang bisa diinput berupa nilai length seperti px, em atau rem. Nilainya juga bisa positif atau negatif, dan akan menentukan arah bayangannya.
Contoh:
.satu {
text-shadow: -10px 2px;
}
.dua {
text-shadow: 5px 0px red;
}
.tiga {
text-shadow: blue -10px 0px 10px;
}
Mengenal CSS Vendor Prefix
Apa kegunaan dari vendor prefix?, CSS3 dikembangkan dengan konsep modul. Dengan demikian, property-property baru bisa hadir dengan lebih cepat.
Untuk mengimbanginya, web browser modern juga berupaya mendukung property baru ini, bahkan ketika property tersebut belum resmi selesai (masih dalam tahap draft di w3C).
Property yang belum selesai ini diimplementasikan oleh web browser dengan menggunakan vendor prefix. Sehingga, kita sebagai web designer bisa menguji coba property tersebut.
Penulisan vendor prefix sesuai dengan inisial web browser atau layout engine yang digunakan.
Berikut adalah awalan vendor prefix pada web browser:
-webkit-
(Chrome, dan versi terbaru dari Operasi)-moz-
(Firefox)-o-
(Opera versi lama)-ms-
(Internet Explorer)
Contoh penggunaan vendor prefix untuk membuat efek text shadow:
.satu {
-webkit-text-shadow: 2px 2px 5px red;
-moz-text-shadow: 2px 2px 2px red;
-o-text-shadow: 2px 2px 2px red;
-ms-text-shadow: 2px 2px 2px red;
text-shadow: 2px 2px 2px red;
}