Shorthand border
border menggambar garis di sekeliling elemen, di antara padding dan margin-nya. Shorthand ini menerima tiga bagian dalam urutan apa pun: lebar, gaya, dan warna.
| Bagian | Longhand | Nilai | Default |
|---|---|---|---|
| Lebar | border-width | 1px, 0.2em, thin, medium, thick | medium |
| Gaya | border-style | solid, dashed, dotted, double, dan lainnya | none |
| Warna | border-color | Warna apa pun | currentColor (warna teks) |
Gaya adalah bagian yang tidak bisa dilewatkan. Default-nya none, jadi border: 2px #2563eb; sama sekali tidak menggambar apa-apa. Jika kamu tidak menulis warnanya, border memakai warna teks elemen.
Gaya border
double butuh minimal 3px untuk menampilkan dua garis. groove, ridge, inset, dan outset memberi bayangan pada warna agar terlihat 3D dan tampilannya sedikit berbeda di tiap browser. hidden terlihat seperti none; keduanya hanya berbeda di dalam tabel dengan border yang di-collapse, yang dibahas di halaman border tabel HTML.
Satu sisi saja
Setiap sisi punya shorthand sendiri (border-top, border-right, border-bottom, border-left), dan setiap bagian punya longhand per sisi seperti border-top-color. Versi logisnya, border-inline-start dan border-block-end, mengikuti arah teks:
border-color, border-width, dan border-style menerima satu sampai empat nilai dengan urutan searah jarum jam seperti padding: atas, kanan, bawah, kiri.
Sudut membulat dengan border-radius
border-radius membulatkan sudut border dan background, jadi properti ini juga berfungsi pada elemen yang sama sekali tidak punya border.
| Nilai | Hasil |
|---|---|
border-radius: 8px | Semua sudut dibulatkan 8px |
border-radius: 50% | Lingkaran pada elemen persegi, elips pada persegi panjang |
border-radius: 999px | Pil: sisi pendeknya menjadi setengah lingkaran penuh |
border-radius: 8px 0 | Kiri atas dan kanan bawah 8px, dua sudut lainnya siku |
border-top-left-radius: 12px | Satu sudut saja |
border-radius: 50% / 25% | Sudut elips: radius horizontal / radius vertikal |
Anak elemen yang punya background bisa menyembul keluar dari sudut induk yang membulat. overflow: hidden pada induk memotongnya mengikuti lengkungan.
Border vs outline
Outline terlihat seperti border tetapi digambar di luarnya dan tidak memakan ruang, jadi menambahkannya tidak pernah menggeser apa pun. Karena itulah browser memakai outline untuk focus ring.
| Border | Outline | |
|---|---|---|
| Memakan ruang | Ya, bagian dari ukuran kotak | Tidak |
| Per sisi | Ya (border-top, ...) | Tidak, selalu di semua sisi |
Mengikuti border-radius | Ya | Ya, di browser saat ini |
| Jarak dari kotak | Tidak | Ya, outline-offset |
| Penggunaan umum | Desain | Indikator fokus, debugging |
Kesalahan umum
- Tidak ada gaya border.
border: 1px #111827;danborder-color: red;tidak menggambar apa-apa. Sertakansolid(atau gaya lain). - Border yang membuat tata letak melompat saat hover. Sediakan ruangnya dengan border transparan, atau pakai outline atau
box-shadow. - Lupa memperhitungkan border dalam lebar. Elemen
width: 100%dengan border akan melebihi wadahnya jika memakaicontent-box. Pakaibox-sizing: border-box. border-radiusdengan anak elemen yang menyembul dari sudut. Tambahkanoverflow: hiddenpada induk yang membulat.- Menghapus outline fokus dengan
outline: none. Pengguna keyboard membutuhkannya; ubah gaya outline-nya alih-alih menghapusnya.
Pertanyaan yang sering diajukan
Bagaimana cara menambahkan border di CSS?
Pakai shorthand dengan lebar, gaya, dan warna: border: 2px solid #2563eb;. Gaya adalah bagian yang paling penting: tanpanya, gaya border bernilai none dan tidak ada border yang digambar.
Kenapa border CSS saya tidak muncul?
Hampir selalu karena gaya border tidak diatur. border: 2px #2563eb; atau border-color: red; saja tidak menggambar apa-apa, karena border-style default-nya none. Tambahkan solid, dashed, atau gaya lainnya.
Bagaimana cara membuat sudut membulat di CSS?
Pakai border-radius: border-radius: 8px; membulatkan keempat sudut. border-radius: 50%; pada persegi membentuk lingkaran, dan nilai besar seperti 999px membentuk pil. Properti ini juga membulatkan background, bahkan tanpa border.
Bagaimana cara menambahkan border di satu sisi saja?
Pakai properti per sisi: border-bottom: 2px solid #e5e7eb;, atau border-inline-start untuk sisi tempat teks dimulai, yang juga berfungsi untuk bahasa yang ditulis dari kanan ke kiri.
Apa perbedaan border dan outline?
Border adalah bagian dari kotak: ia memakan ruang dan mengubah ukuran elemen. Outline digambar di luar border tanpa memakan ruang, tidak bisa diatur per sisi, dan dipakai browser untuk focus ring. Keduanya mengikuti border-radius di browser saat ini.