Satır içi stillere sahip CSS Sözde sınıfları


131

Satır içi stilleri kullanan sözde sınıflara sahip olmak mümkün mü?


Misal:

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

Yukarıdaki HTML'nin çalışmayacağını biliyorum, ancak işe yarayacak benzer bir şey var mı?

Not: Harici bir stil sayfası kullanmam gerektiğini biliyorum ve kullanıyorum. Bunun satır içi stiller kullanılarak yapılıp yapılamayacağını merak ediyordum.


Yanıtlar:


114

Hayır, bu mümkün değil. CSS kullanan belgelerde, bir satır içi styleöznitelik yalnızca özellik bildirimlerini içerebilir; bir stil sayfasında her kural kümesinde görünen aynı ifade kümesi. Gönderen Stil Spec Nitelikler :

Stil özniteliğinin değeri, aşağıda CSS çekirdek gramerinin terimleri ve kurallarında resmi dilbilgisi verilen bir CSS bildirim bloğunun (sınırlayıcı parantezler hariç) içeriğinin sözdizimiyle eşleşmelidir :

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

Ne seçicilere (sözde öğeler dahil), ne de kurallara veya başka herhangi bir CSS yapısına izin verilmez.

Satır içi stilleri, bazı anonim süper belirli kimlik seçicilere uygulanan stiller olarak düşünün: bu stiller yalnızca styleözniteliğe sahip tek çok öğe için geçerlidir . (Bu öğe bu kimliğe sahipse, stil sayfasındaki bir kimlik seçiciden de öncelik alırlar.) Teknik olarak bu şekilde çalışmaz; bu sadece özniteliğin neden sözde sınıf veya sözde öğe stillerini desteklemediğini anlamanıza yardımcı olmak içindir (sözde sınıfların ve sözde öğelerin, belge ağacında ifade edilemeyen soyutlamaları nasıl sağladığıyla daha fazla ilgisi vardır. belge dili).

Satır içi stillerin, kural kümelerindeki seçicilerle aynı kademeye katıldığını ve kademede en yüksek önceliği aldığını unutmayın ( !importantbuna rağmen). Bu yüzden sözde sınıf devletlerden bile önceliklidirler. Satıriçi stillerde sözde sınıflara veya diğer seçicilere izin vermek, muhtemelen yeni bir kademeli düzey ve bununla birlikte yeni bir karmaşıklık dizisi getirecektir.

Ayrıca, Stil Nitelikleri spesifikasyonunun çok eski revizyonlarının başlangıçta buna izin vermeyi önerdiğini , ancak muhtemelen yukarıda belirtilen nedenle veya uygulamanın uygun bir seçenek olmadığı için hurdaya çıkarıldığını unutmayın.


45

CSS değil, ancak satır içi:

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

Örneğe bakın →


2
Evet, sanırım bu başka bir seçenek. CSS değil, ancak şunlar için çalışıyor: fareyle üzerine gelme ve fareyle üzerine gelme,: odaklanma ve bulanıklaştırma kullanarak odaklanma ve: onclick kullanarak etkin olma.
Web_Designer

1
Bu javascript olarak sayılır mı? Satır içi CSS gerektiren ve Javascript içermeyen bir projem var.
Aakil Fernandes

7
Evet bu javascript.
Joel Murphy

1
Bu iyi bir seçenektir. Harici bir CSS sayfası kullanmak OO (nesne yönelimli) ilkesine aykırıdır. Bir elemanın stili, eleman ile bir araya getirilmelidir.
Evan Hu

1
Satır içi stillerin bir başka noktası da sanal DOM kullanarak işleme sürelerini düşürmektir. Bir CSS'nin değişiklikler ve stillerini uygulamak için tüm belgeyi taraması gerekir. Bu, satır içi stiller tarafından ortadan kaldırılır.
Frederik Krautwald

26

Satır içi CSS kullanmak yerine Dahili CSS kullanabilirsiniz

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

Şunlara sahip olabilirsiniz:

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

1
Başlık öğesinin dışında dahili css kullanılması kabul edilebilir mi?
Thaina

4
@Thaina Şimdi, HTML5'te: html5doctor.com/the-scoped-attribute
Ason

2
@Thaina Funny, böyle bir şey yapmaya karar verdiğim ve scopedözelliğin özelliklerden kaldırıldığını öğrendiğim başka bir soruyla karşılaştı .... developer.mozilla.org/en/docs/Web/HTML/Element/style
Ason

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.