Biasanya file css diletakkan di dalam <head></head>
, bagaimana jika saya memasukkannya ke dalam <body></body>
, apa bedanya?
155
Untuk menambahkan apa yang telah disebutkan oleh jdelStrother tentang spesifikasi w3 dan ARTstudio tentang perenderan browser.
Disarankan karena ketika Anda memiliki CSS yang dideklarasikan sebelum <body>
dimulai, gaya Anda sebenarnya sudah dimuat. Jadi, sangat cepat pengguna melihat sesuatu muncul di layar mereka (misalnya warna latar belakang). Jika tidak, pengguna melihat layar kosong untuk beberapa waktu sebelum CSS mencapai pengguna.
Juga, jika Anda meninggalkan gaya di suatu tempat di <body>
browser, browser harus merender ulang halaman (baru dan lama saat memuat) ketika gaya yang dinyatakan telah diuraikan.
link
danstyle
tidak boleh muncul di badan kecuali mereka dicakup (gaya) atauitemprop
dideklarasikan atribut (tautan).style
adalah elemen aliran di html5 dan html4.1 (bahkan jika itu tidak dicakup) dan dapat dimasukkan ke dalam tubuh.scoped
atributnya sudah usang.Versi terbaru dari spesifikasi HTML sekarang memungkinkan
<style>
tag di dalam elemen tubuh. https://www.w3.org/TR/html5/dom.html#flow-content Jugascoped
atribut yang dulu merupakan prasyarat untuk memilikistyle
tag dibody
sekarang sudah usang.Ini berarti, bahwa Anda dapat menggunakan
style
tag di mana pun Anda inginkan, satu-satunya implikasi adalah penurunan kinerja halaman karena kemungkinan reflow / pengecatan ulang setelah browser menekan style lebih jauh ke bawah di pohon halaman.Jawaban usang:
The
<style>
tag tidak diperbolehkan dalam<body>
sesuai dengan spesifikasi w3. (Tentu saja, Anda dapat menerapkan gaya sebaris melalui<div style="color:red">
jika perlu, tetapi umumnya dianggap sebagai pemisahan gaya & konten yang buruk)sumber
<style>
adalah elemen aliran dalam html 5 dan 4.1 dan dapat dimasukkan ke dalam tubuh (seperti semua elemen aliran lainnya).Menempatkan CSS di badan berarti dimuat nanti. Ini adalah teknik yang digunakan beberapa orang untuk membuat browser mulai menggambar antarmuka lebih cepat (yaitu, menghapus langkah pemblokiran). Ini penting untuk pengalaman pengguna di SmartPhones.
Saya melakukan yang terbaik untuk menjaga satu css kecil di
<head>
dan saya memindahkan sisanya di bagian bawah. Misalnya, jika sebuah halaman menggunakan JQuery UI CSS, saya selalu memindahkannya di bagian bawah<body>
, tepat sebelum tautan ke javascript JQuery. Setidaknya, semua item non Jquery sudah bisa ditarik.sumber
Head dirancang untuk (Mengutip W3C):
Lihat struktur Global dokumen HTML . Karena CSS bukan konten dokumen, itu harus di kepala.
Juga setiap pengembang Web lain akan berharap untuk melihatnya di sana, jadi jangan bingung dengan meletakkannya di dalam tubuh, bahkan jika itu berfungsi!
Satu-satunya CSS yang harus Anda masukkan ke dalam tubuh adalah inline CSS , meskipun saya biasanya menghindari gaya inline.
sumber
Standar ( HTML 4.01: elemen gaya ) dengan jelas menetapkan bahwa tag gaya hanya diperbolehkan di dalam tag kepala. Jika Anda memasukkan tag gaya ke dalam tag body, browser akan tetap berusaha melakukan yang terbaik, jika memungkinkan.
Mungkin saja peramban akan mengabaikan tag gaya di badan jika Anda menentukan jenis dokumen yang ketat. Saya tidak tahu apakah ada peramban saat ini melakukan ini, tapi saya tidak akan mengandalkan semua versi di masa depan untuk begitu santai tentang di mana Anda menempatkan elemen gaya.
sumber
style
tag diizinkan di dalam tubuh jika memilikiscoped
atribut.Meskipun
style
tag tidak diizinkan di dalam tubuh,link
tag tersebut tetap, jadi selama Anda mereferensikan stylesheet eksternal, semua browser harus merender dan menggunakan CSS dengan benar saat digunakan dalambody
.Sumber: https://html.spec.whatwg.org/multipage/semantics.html#the-link-element
sumber
Selain jawaban sebelumnya, meskipun menempatkan blok kode gaya di dalam elemen dapat bekerja di browser modern (meskipun itu masih tidak membuatnya benar), selalu ada bahaya, terutama dengan browser lama bahwa browser akan membuat kode sebagai teks kecuali bagian gaya termasuk dalam bagian CDATA.
Tentu saja hal lain dengan meletakkannya di dalam elemen, selain gaya inline, adalah karena tidak memenuhi spesifikasi W3C HTML / XHTML adalah bahwa setiap halaman dengan itu di dalam tubuh akan gagal pada validator W3C. Selalu lebih mudah untuk mengatasi masalah tampilan yang tidak terduga jika semua kode Anda valid, membuatnya lebih mudah untuk menemukan kesalahan. Elemen HTML yang tidak valid dapat berdampak buruk terhadap penguraian setiap dan semua elemen di luar tempat kode itu muncul, sehingga Anda bisa mendapatkan efek yang tidak terduga memiliki elemen di tempat-tempat di mana seharusnya tidak, karena ketika browser menemukan elemen yang tidak valid, itu hanya membuat tebakan terbaik untuk menampilkannya, dan peramban yang berbeda dapat membuat keputusan yang berbeda tentang bagaimana mereka membuatnya.
Apakah Anda menggunakan doctype transisi atau ketat, itu masih akan tidak valid sesuai dengan spesifikasi (X) HTML.
sumber
Anda benar-benar akan mengalahkan tujuan menggunakan CSS dengan meletakkan gaya di dalam tubuh. Intinya adalah untuk memisahkan konten dari presentasi (dan fungsi). Dengan cara ini, perubahan apa pun pada gaya dapat dilakukan dalam lembar gaya, bukan dalam konten. Setelah Anda menggunakan metode gaya sebaris, setiap halaman yang memiliki gaya sebaris perlu diubah satu per satu. Membosankan, dan berisiko karena Anda bisa melewatkan satu atau tiga halaman, atau sepuluh.
Menggunakan stylesheet, Anda hanya perlu mengubah stylesheet; perubahan menyebar secara otomatis ke setiap halaman HTML yang tertaut ke stylesheet.
titik neonble juga merupakan alasan bagus lainnya; jika Anda mengacaukan HTML dengan menambahkan CSS inline, rendering menjadi masalah. HTML tidak melempar pengecualian ke kode Anda. Alih-alih itu keluar dan menjadikannya cara terbaik yang bisa, dan bergerak.
Mengikuti standar web dengan menggunakan stylesheet membuat situs web menjadi lebih baik. Dan ketika Anda membutuhkan bantuan karena hal-hal di halaman Anda tidak persis seperti yang Anda inginkan, menempatkan CSS di kepala sebagai lawan dari badan membuat pemecahan masalah yang lebih baik sendiri dan bagi siapa pun yang Anda minta bantuan.
sumber
Dua jawaban yang bertentangan:
Dari halaman MDN pada tag tautan:
Dari CSS The Definitive Guide (Edisi ke-4/2017) halaman 10
sumber
Perbedaannya adalah. Pemuatan halaman tidak sinkron, jadi jika Anda memiliki stylesheet eksternal, ia akan memuat file css segera ketika mencapai tag tautan, itu sebabnya baik ada di bagian atas dalam kepala.
sumber
Apa bedanya?
Pro: Terkadang lebih mudah untuk menerapkan atribut tertentu di tempat-tempat tertentu, terutama jika kode dihasilkan dengan cepat (seperti membangun melalui php dan masing-masing daftar berukuran dinamis membutuhkan kelasnya sendiri ... seperti untuk penentuan waktu item untuk transformasi).
Cons: Sedikit lebih lambat, mungkin tidak bekerja suatu hari nanti di masa depan yang jauh.
Pendapat umum saya tentang itu: Jangan lakukan itu, Anda tidak harus melakukannya, tetapi jika Anda harus melakukannya, jangan kehilangan waktu tidur karenanya.
sumber
Menempatkan
<style>
di dalam tubuh berfungsi baik dengan semua browser modern.Saya telah menggunakan ini di eBay.
Jika berhasil, jangan tendang.
sumber