CSS Pseudo-class dengan gaya inline

131

Apakah mungkin untuk memiliki pseudo-class menggunakan gaya inline?


Contoh:

<a href="http://www.google.com" style="hover:text-decoration:none;">Google</a>

Saya tahu HTML di atas tidak akan berfungsi tetapi apakah ada yang serupa?

PS Saya tahu saya harus menggunakan style sheet eksternal, dan saya lakukan. Saya hanya ingin tahu apakah ini dapat dilakukan dengan menggunakan gaya inline.

Desainer web
sumber

Jawaban:

114

Tidak, ini tidak mungkin. Dalam dokumen yang menggunakan CSS, styleatribut inline hanya dapat berisi deklarasi properti; set pernyataan yang sama yang muncul di setiap set aturan dalam lembar gaya. Dari spec Style Attributes :

Nilai atribut style harus cocok dengan sintaksis isi blok deklarasi CSS (tidak termasuk kawat pembatas), yang tata bahasa formalnya diberikan di bawah ini dalam syarat dan konvensi tata bahasa inti CSS :

declaration-list
  : S* declaration? [ ';' S* declaration? ]*
  ;

Selektor (termasuk elemen semu), atau at-rules, atau konstruk CSS lainnya tidak diizinkan.

Pikirkan gaya inline sebagai gaya yang diterapkan ke beberapa pemilih ID super spesifik anonim: gaya tersebut hanya berlaku untuk satu elemen dengan styleatribut. (Mereka lebih diutamakan daripada pemilih ID dalam lembar gaya juga, jika elemen itu memiliki ID itu.) Secara teknis tidak berfungsi seperti itu; ini hanya untuk membantu Anda memahami mengapa atribut tidak mendukung gaya pseudo-class atau pseudo-element (itu lebih berkaitan dengan bagaimana pseudo-class dan pseudo-elements memberikan abstraksi dari pohon dokumen yang tidak dapat diekspresikan dalam bahasa dokumen).

Perhatikan bahwa gaya sebaris berpartisipasi dalam kaskade yang sama dengan penyeleksi dalam set aturan, dan mengambil prioritas tertinggi dalam kaskade ( !importantmeskipun demikian). Jadi mereka lebih diutamakan bahkan daripada negara-negara kelas semu. Mengizinkan kelas semu atau penyeleksi lainnya dalam gaya inline mungkin akan memperkenalkan level kaskade baru, dan dengannya serangkaian komplikasi baru.

Perhatikan juga bahwa revisi yang sangat lama dari spec Style Attributes awalnya mengusulkan untuk mengizinkan ini , namun itu dihapus, mungkin karena alasan yang diberikan di atas, atau karena menerapkannya bukanlah pilihan yang layak.

BoltClock
sumber
45

Bukan CSS, tetapi sebaris:

<a href="#" 
   onmouseover = "this.style.textDecoration = 'none'"
   onmouseout  = "this.style.textDecoration = 'underline'">Hello</a>

Lihat contoh →

mVChr
sumber
2
Ya, saya kira itu pilihan lain. Ini bukan CSS tetapi berfungsi untuk: hover menggunakan mouseover dan mouseout,: fokus menggunakan onfocus dan onblur, dan: aktif menggunakan onclick.
Web_Designer
1
Apakah ini akan dianggap sebagai javascript? Saya punya proyek yang membutuhkan inline CSS dan tanpa Javascript.
Aakil Fernandes
7
Ya ini javascript.
Joel Murphy
1
Ini pilihan yang bagus. Menggunakan lembar CSS eksternal bertentangan dengan prinsip OO (berorientasi objek). Gaya elemen harus disatukan dengan elemen.
Evan Hu
1
Poin lain untuk gaya inline adalah menurunkan waktu render dengan menggunakan DOM virtual. CSS perlu memindai seluruh dokumen untuk melihat perubahan dan menerapkan gayanya. Ini dihilangkan dengan gaya inline.
Frederik Krautwald
26

Daripada membutuhkan inline Anda bisa menggunakan CSS Internal

<a href="http://www.google.com" style="hover:text-decoration:none;">Google</a>

Kamu bisa saja:

<a href="http://www.google.com" id="gLink">Google</a>
<style>
  #gLink:hover {
     text-decoration: none;
  }
</style>
Jim Doodle
sumber
1
Apakah bisa menggunakan elemen css internal di luar head?
Thaina
4
@Thaina Sekarang, dalam HTML5: html5doctor.com/the-scoped-attribute
Ason
2
@Thaina Funny, berlari ke pertanyaan lain di mana saya memutuskan untuk melakukan hal seperti itu dan menemukan scopedatribut telah dihapus dari spesifikasi .... developer.mozilla.org/en/docs/Web/HTML/Element/style
Ason
0

Anda dapat mencoba https://hacss.io :

<a href="http://www.google.com" class=":hover{text-decoration:none;}">Google</a>

Demo

Nick Saunders
sumber