Menu

External dan Internal CSS: Penjelasan link dan style

External CSS disimpan di file .css yang dihubungkan setiap halaman dengan <link rel="stylesheet">; internal CSS berada di elemen <style> di dalam satu halaman. Pelajari keduanya, cara kerja path file, dan aturan mana yang menang saat keduanya bertemu.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

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>)
LokasiFile .cssDi dalam halaman HTML
CakupanSetiap halaman yang menghubungkannyaSatu halaman
CacheDiunduh sekali, dipakai ulang di banyak halamanDikirim lagi bersama setiap halaman
Mengubah tampilan situsUbah satu fileUbah setiap halaman
Request tambahanYa, satu per fileTidak
Cocok untukSitus web sungguhanDemo, 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.

hrefMemuat
styles.cssFile di folder yang sama dengan halaman
css/styles.cssFolder css di sebelah halaman
../styles.cssSatu folder di atasnya
/styles.cssDari root situs
https://example.com/a.cssURL 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 href tidak 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 .css hanya 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.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai