CSS Pseudo-class ที่มีสไตล์อินไลน์


131

เป็นไปได้ไหมที่จะมีคลาสหลอกโดยใช้สไตล์อินไลน์


ตัวอย่าง:

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

ฉันรู้ว่า HTML ข้างต้นใช้ไม่ได้ แต่มีบางอย่างที่คล้ายกันหรือไม่

ปล. ฉันรู้ว่าฉันควรใช้สไตล์ชีตภายนอกและฉันก็ทำ ฉันแค่อยากรู้ว่าสามารถทำได้โดยใช้สไตล์อินไลน์


คำตอบ:


114

ไม่นี่เป็นไปไม่ได้ ในเอกสารที่ใช้ CSS styleแอตทริบิวต์แบบอินไลน์สามารถมีได้เฉพาะการประกาศคุณสมบัติเท่านั้น ชุดคำสั่งเดียวกันที่ปรากฏในชุดกฎแต่ละชุดในสไตล์ชีต จากข้อมูลจำเพาะคุณสมบัติลักษณะ :

ค่าของแอตทริบิวต์ style ต้องตรงกับไวยากรณ์ของเนื้อหาของบล็อกการประกาศ CSS (ไม่รวมวงเล็บปีกกา) ซึ่งมีการระบุไวยากรณ์อย่างเป็นทางการไว้ด้านล่างในข้อกำหนดและรูปแบบของไวยากรณ์หลักของCSS :

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

ไม่อนุญาตให้ใช้ตัวเลือก (รวมถึงองค์ประกอบหลอก) หรือกฎระเบียบหรือโครงสร้าง CSS อื่น ๆ

ลองนึกถึงสไตล์อินไลน์เป็นสไตล์ที่ใช้กับตัวเลือก ID เฉพาะเจาะจงสุดที่ไม่ระบุชื่อ: สไตล์เหล่านั้นใช้กับองค์ประกอบที่มีstyleแอตทริบิวต์เท่านั้น (มีความสำคัญเหนือกว่าตัวเลือก ID ในสไตล์ชีตด้วยเช่นกันหากองค์ประกอบนั้นมี ID นั้น) ในทางเทคนิคแล้วมันไม่ได้ผลเช่นนั้น นี่เป็นเพียงเพื่อช่วยให้คุณเข้าใจว่าเหตุใดแอตทริบิวต์จึงไม่รองรับรูปแบบ pseudo-class หรือ pseudo-element (มีส่วนเกี่ยวข้องกับการที่คลาสหลอกและองค์ประกอบหลอกให้ความเป็นนามธรรมของโครงสร้างเอกสารที่ไม่สามารถแสดงได้ ภาษาของเอกสาร)

โปรดทราบว่ารูปแบบอินไลน์จะมีส่วนร่วมในการเรียงซ้อนเช่นเดียวกับตัวเลือกในชุดกฎและมีความสำคัญสูงสุดในการเรียงซ้อน ( !importantแม้ว่าจะมี) ดังนั้นพวกเขาจึงมีความสำคัญเหนือกว่าสถานะระดับหลอก การอนุญาตคลาสหลอกหรือตัวเลือกอื่น ๆ ในรูปแบบอินไลน์อาจทำให้เกิดระดับน้ำตกใหม่และด้วยความซับซ้อนชุดใหม่

โปรดทราบว่าการแก้ไขข้อกำหนดคุณลักษณะสไตล์ที่เก่ามากเดิมเสนอให้อนุญาตสิ่งนี้อย่างไรก็ตามถูกยกเลิกโดยสันนิษฐานว่าน่าจะเป็นด้วยเหตุผลที่ระบุไว้ข้างต้นหรือเนื่องจากการนำไปใช้งานนั้นไม่ใช่ตัวเลือกที่ทำได้


45

ไม่ใช่ CSS แต่เป็นแบบอินไลน์:

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

ดูตัวอย่าง→


2
ใช่ฉันเดาว่าเป็นอีกทางเลือกหนึ่ง ไม่ใช่ CSS แต่ใช้ได้กับ: วางเมาส์เหนือเมาส์และวางเมาส์: โฟกัสโดยใช้ออนโฟกัสและออนเบลอและ: ใช้งานโดยใช้ onclick
Web_Designer

1
สิ่งนี้จะนับเป็นจาวาสคริปต์หรือไม่ ฉันมีโปรเจ็กต์ที่ต้องใช้ CSS แบบอินไลน์และไม่มี Javascript
Aakil Fernandes

7
ใช่นี่คือจาวาสคริปต์
Joel Murphy

1
นี่เป็นตัวเลือกที่ดี การใช้แผ่นงาน CSS ภายนอกขัดต่อหลักการ OO (เชิงวัตถุ) ควรใส่สไตล์ขององค์ประกอบร่วมกับองค์ประกอบ
Evan Hu

1
อีกจุดหนึ่งสำหรับสไตล์อินไลน์คือการลดเวลาในการแสดงผลโดยใช้ DOM เสมือน CSS จะต้องสแกนเอกสารทั้งหมดเพื่อดูการเปลี่ยนแปลงและใช้รูปแบบ สิ่งนี้ถูกกำจัดโดยรูปแบบอินไลน์
Frederik Krautwald

26

แทนที่จะต้องใช้แบบอินไลน์คุณสามารถใช้ Internal CSS ได้

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

คุณสามารถมี:

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

1
สามารถใช้องค์ประกอบหัวภายนอก css ภายในได้หรือไม่
Thaina

4
@Thaina ตอนนี้ใน HTML5: html5doctor.com/the-scoped-attribute
Ason

2
@Thaina Funny เจอคำถามอื่นที่ฉันตัดสินใจทำสิ่งนั้นและพบว่าscopedแอตทริบิวต์ถูกลบออกจากสเปค .... developer.mozilla.org/en/docs/Web/HTML/Element/style
Ason

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.