ฉันจะแทนที่สไตล์อินไลน์ด้วย CSS ภายนอกได้อย่างไร


101

ฉันมีมาร์กอัปที่ใช้รูปแบบอินไลน์ แต่ฉันไม่มีสิทธิ์เปลี่ยนมาร์กอัปนี้ ฉันจะแทนที่สไตล์อินไลน์ในเอกสารโดยใช้ CSS เพียงอย่างเดียวได้อย่างไร ฉันไม่ต้องการใช้ jQuery หรือ JavaScript

HTML:

<div style="font-size: 18px; color: red;">
    Hello World, How Can I Change The Color To Blue?
</div>

CSS:

div {
   color: blue; 
   /* This Isn't Working */
}

คำตอบ:


179

วิธีเดียวที่จะลบล้างสไตล์อินไลน์ได้คือการใช้!importantคำสำคัญข้างกฎ CSS ต่อไปนี้เป็นตัวอย่างของมัน

div {
        color: blue !important;
       /* Adding !important will give this rule more precedence over inline style */
    }
<div style="font-size: 18px; color: red;">
    Hello, World. How can I change this to blue?
</div>

หมายเหตุสำคัญ:

  • ใช้!importantไม่ถือเป็นวิธีที่ดี ดังนั้นคุณควรหลีกเลี่ยงทั้ง!importantแบบอินไลน์และแบบอินไลน์

  • การเพิ่ม!importantคีย์เวิร์ดลงในกฎ CSS ทำให้กฎมีผลบังคับใช้ก่อนกฎ CSS อื่น ๆ ทั้งหมดสำหรับองค์ประกอบนั้น

  • มันยังแทนที่สไตล์อินไลน์จากมาร์กอัป

  • วิธีเดียวที่จะลบล้างคือการใช้!importantกฎอื่นซึ่งประกาศด้วยความจำเพาะของ CSS ที่สูงกว่าใน CSS หรือความเฉพาะเจาะจงของ CSS ที่เท่ากันในภายหลังในโค้ด

  • ต้องอ่าน - ความจำเพาะของ CSS โดย MDN 🔗


1
สไตล์นั้นขึ้นอยู่กับเขาจริงๆแล้วมันไม่จำเป็นที่เขาจะใช้เพื่อการลบล้าง css แบบอินไลน์เท่านั้น
Rohit Agrawal

1
ฉันรู้ แต่ฉันก็พูดเหมือนกันสิ่งสำคัญจะเพิ่มคะแนนสำหรับคุณสมบัติเฉพาะเท่านั้นเขาอาจใช้คุณสมบัติอื่น (ไม่ใช่เพื่อลบล้าง) ในบางบล็อก
Rohit Agrawal

เหตุใดการปฏิบัติที่ไม่ดีจึงสำคัญ?
Sinister Beard

1
@BFDatabaseAdmin เพราะคุณไม่สามารถลบล้างสิ่งนั้นได้ในภายหลังหากต้องการกรณีพิเศษใด ๆ
Rohit Agrawal

1
@BFWebAdmin ปัญหาคือบางครั้งคุณไม่มีทางเลือก ตัวอย่างเช่น "ตรา" จาก recaptcha ที่มองไม่เห็นใหม่สามารถกำหนดสไตล์ได้ แต่มีรูปแบบอินไลน์บางส่วนดังนั้นคุณต้องแทนที่ด้วยเช่นนี้หรือโดย js และเลือกใช้โซลูชัน CSS ที่แท้จริง
My1

27

inline-stylesในเอกสารมีลำดับความสำคัญสูงสุดตัวอย่างเช่นหากคุณต้องการเปลี่ยนสีของdivองค์ประกอบblueแต่คุณinline styleมีcolorคุณสมบัติที่ตั้งค่าเป็นred

<div style="font-size: 18px; color: red;">
   Hello World, How Can I Change The Color To Blue?
</div>
div {
   color: blue; 
   /* This Won't Work, As Inline Styles Have Color Red And As 
      Inline Styles Have Highest Priority, We Cannot Over Ride 
      The Color Using An Element Selector */
}

ดังนั้นฉันควรใช้ jQuery / Javascript หรือไม่? - คำตอบคือไม่ใช่

เราสามารถใช้element-attrCSS Selector ด้วย!importantหมายเหตุ!importantเป็นสิ่งสำคัญที่นี่มิฉะนั้นจะไม่ใช้รูปแบบอินไลน์มากเกินไป ..

<div style="font-size: 30px; color: red;">
    This is a test to see whether the inline styles can be over ridden with CSS?
</div>
div[style] {
   font-size: 12px !important;
   color: blue !important;
}

การสาธิต

หมายเหตุ: การใช้!importantเท่านั้นจะใช้ได้ที่นี่ แต่ฉันใช้ div[style]ตัวเลือกเพื่อเลือกเฉพาะdivการมีstyle แอตทริบิวต์


2
ดังนั้นฉันควรใช้สไตล์อินไลน์หรือไม่? - Answer Is NO :-)
PeeHaa

"ดังนั้นฉันควรใช้ jQuery / Javascript หรือไม่ - คำตอบคือไม่" ทำไม? ถ้าฉันทำงานในสภาพแวดล้อม (เช่น Sharepoint) ที่มีการเพิ่มสไตล์อินไลน์ให้กับองค์ประกอบโดยเอนทิตีที่ไม่สามารถควบคุมได้เหตุใดฉันจึงไม่ใช้ Jquery เพื่อลบสไตล์อินไลน์ที่ไม่เหมาะสมเพื่อให้ธีมภายนอกของไซต์ของฉันแสดงผ่าน ดูเหมือนจะเป็นวิธีแก้ปัญหาก่อนการระเบิด! ที่สำคัญเกี่ยวกับลักษณะที่ฉันอาจต้องการแทนที่ในอินสแตนซ์เฉพาะในภายหลัง
Neberu

2
@Neberu - เนื่องจาก JS สามารถบล็อก / ปิดได้ที่เบราว์เซอร์ ใช้!importantAFAIK ไม่ได้
Tony

1
js ก็เป็น imo ไม่ดีโดยทั่วไปฉันหมายถึงคุณเปิดไฟล์ปฏิบัติการที่คุณส่งมาจากบุคคลที่ไม่รู้จักหรือไม่? ฉันเดาว่าไม่ใช่ แต่เบราว์เซอร์ทำสิ่งนี้ในแต่ละคลิก
My1

12

คุณสามารถลบล้างสไตล์อินไลน์ได้อย่างง่ายดายยกเว้น!importantสไตล์อินไลน์

ดังนั้น

<div style="font-size: 18px; color: red;">
    Hello World, How Can I Change The Color To Blue?
</div>

div {
   color: blue !important; 
   /* This will  Work */
}

แต่ถ้าคุณมี

<div style="font-size: 18px; color: red !important;">
    Hello World, How Can I Change The Color To Blue?
</div>

div {
   color: blue !important; 
   /* This Isn't Working */
}

ตอนนี้จะเป็นredเพียง .. และคุณไม่สามารถลบล้างได้


1
สิ่งนี้แตกต่างจากคำตอบที่เพิ่มเมื่อหลายเดือนก่อนอย่างไร
Sinister Beard

4
@BFDatabaseAdmin คำตอบนี้อธิบายพฤติกรรมเมื่อสไตล์อินไลน์มี!importantจุดที่คำตอบอื่นไม่ครอบคลุม นี่อาจไม่ใช่คำตอบแบบสแตนด์อะโลนโดยสิ้นเชิง แต่แตกต่างจากคำตอบอื่น ๆ ที่ให้ไว้
grg

แต่แล้วอีกครั้งการใช้สไตล์อินไลน์ที่มีความสำคัญนั้นมากเกินไปเนื่องจากค่าเริ่มต้นจะมีลำดับความสำคัญสูงสุด
My1


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