External CSS dalam satu baris
External CSS adalah file .css yang terpisah. Kamu menghubungkannya dari <head> setiap halaman yang membutuhkannya:
<head>
<link rel="stylesheet" href="styles.css">
</head>
File itu sendiri berisi aturan CSS biasa, tanpa tag HTML di sekelilingnya:
/* styles.css */
body {
font-family: system-ui, sans-serif;
color: #111827;
}
.card {
border: 2px solid #2563eb;
border-radius: 8px;
padding: 12px 16px;
}
Pratinjau di bawah tidak punya file kedua untuk dimuat, jadi CSS yang sama ditaruh di elemen <style>. Itulah internal CSS, dan hasilnya tampil persis seperti file yang dihubungkan:
Internal CSS: elemen style
Internal CSS (disebut juga embedded CSS) adalah elemen <style> di dalam halaman. Taruh di <head> supaya style-nya sudah diketahui sebelum body ditampilkan. Internal CSS berlaku untuk seluruh halaman, dan aturannya memakai selector, sesuatu yang tidak bisa dilakukan atribut style inline.
Arahkan kursor ke sebuah tag: :hover berfungsi di sini karena ini aturan sungguhan. Cara ketiga, atribut style, dibahas di halaman inline CSS.
Internal vs external CSS
External (<link>) | Internal (<style>) | |
|---|---|---|
| Lokasi | File .css | Di dalam halaman HTML |
| Cakupan | Setiap halaman yang menghubungkannya | Satu halaman |
| Cache | Diunduh sekali, dipakai ulang di banyak halaman | Dikirim lagi bersama setiap halaman |
| Mengubah tampilan situs | Ubah satu file | Ubah setiap halaman |
| Request tambahan | Ya, satu per file | Tidak |
| Cocok untuk | Situs web sungguhan | Demo, halaman tunggal, email HTML, critical CSS |
Specificity keduanya sama: aturan di elemen <style> dan aturan yang sama di file yang dihubungkan punya bobot yang persis sama. Saat seri, aturan yang muncul belakangan di dokumen yang menang.
Urutan: stylesheet yang belakangan menang
Stylesheet dibaca sesuai urutan dokumen, baik <link> maupun <style>. Untuk dua aturan dengan specificity yang sama, yang belakangan yang menang. Dua blok <style> di bawah ini mewakili file yang dihubungkan, diikuti penimpaan di tingkat halaman:
Tombolnya tetap memakai padding dan teks putih dari aturan pertama dan hanya mengambil background dari aturan kedua. Itulah sebabnya stylesheet milik situs ditaruh setelah stylesheet framework: <link> library-nya dulu, lalu milikmu.
Path file di href
href pada <link> adalah URL, yang dihitung dari lokasi file HTML.
| href | Memuat |
|---|---|
styles.css | File di folder yang sama dengan halaman |
css/styles.css | Folder css di sebelah halaman |
../styles.css | Satu folder di atasnya |
/styles.css | Dari root situs |
https://example.com/a.css | URL lengkap di server lain |
Untuk situs yang halamannya berada di kedalaman folder berbeda-beda, bentuk relatif terhadap root (/css/styles.css) membuat satu path berfungsi di setiap halaman.
Stylesheet untuk cetak dan media lain
Atribut media membatasi stylesheet hanya untuk kondisi yang cocok. <link> dan <style> sama-sama menerimanya:
<link rel="stylesheet" href="print.css" media="print">
<link rel="stylesheet" href="wide.css" media="(min-width: 900px)">
Pratinjaunya adalah layar, jadi banner-nya tampil. Di halaman sungguhan, banner itu hilang dari hasil cetak, dan di DevTools kamu bisa melihat hal yang sama dengan mengemulasikan media type print (panel Rendering).
Kesalahan umum
- Path yang salah. Salah ketik di
hreftidak memuat apa-apa, dan halaman tampil tanpa style. Buka DevTools, tab Network, lalu cari 404 pada file.css. - Lupa
rel="stylesheet". Tanpanya,<link href="styles.css">tidak memuat stylesheet. - HTML di dalam file
.css. File.csshanya berisi aturan. Tag<style>di dalamnya bukan CSS yang valid dan merusak aturan di sebelahnya. - Menaruh stylesheet-mu sebelum milik framework. Dengan specificity yang sama, file yang belakangan yang menang, jadi hubungkan CSS milikmu paling akhir.
- Melihat versi lama. Browser menyimpan stylesheet di cache. Lakukan hard refresh, atau tambahkan versi ke URL (
styles.css?v=2) saat kamu deploy perubahan.
Pertanyaan yang sering diajukan
Apa itu external CSS?
External CSS adalah stylesheet yang disimpan di file .css tersendiri dan dimuat dengan <link rel="stylesheet" href="styles.css"> di <head> halaman. Setiap halaman yang menghubungkan file itu mendapat style yang sama, dan browser menyimpan file itu di cache antarhalaman.
Apa itu internal CSS?
Internal CSS, disebut juga embedded CSS, adalah CSS yang ditulis di dalam elemen <style> di dokumen HTML itu sendiri, biasanya di <head>. CSS ini hanya berlaku untuk halaman tersebut.
Bagaimana cara menghubungkan file CSS ke HTML?
Tambahkan <link rel="stylesheet" href="styles.css"> di dalam <head>. href adalah path yang relatif terhadap file HTML, jadi css/styles.css menunjuk ke folder css di sebelahnya, dan /styles.css dimulai dari root situs.
Mana yang lebih baik, internal atau external CSS?
External CSS untuk apa pun yang punya lebih dari satu halaman: satu file untuk diedit, dan browser mengunduhnya sekali lalu memakainya lagi. Internal CSS cocok untuk satu halaman, demo, atau blok kecil style penting yang ingin kamu sertakan di respons pertama.
Kenapa external CSS saya tidak berfungsi?
Penyebab yang umum adalah path href yang salah (periksa tab Network untuk melihat 404), rel="stylesheet" yang tidak ada, tag <style> yang ditulis di dalam file .css, atau aturan lain di bawahnya yang menimpa aturanmu. Hard refresh memastikan yang dimuat bukan salinan lama dari cache.