Bagaimana cara mengganti gaya sebaris dengan CSS eksternal?

99

Saya memiliki markup yang menggunakan gaya sebaris, tetapi saya tidak memiliki akses untuk mengubah markup ini. Bagaimana cara mengganti gaya sebaris dalam dokumen hanya menggunakan CSS? Saya tidak ingin menggunakan jQuery atau 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 */
}
Tuan Alien
sumber
2
Mengapa menggunakan gaya sebaris jika Anda ingin menimpanya?
Sinister Beard
36
@BFDatabaseAdmin Dia mungkin tidak dapat mengakses markup di mana gaya sebaris dideklarasikan.
TylerH

Jawaban:

176

Satu-satunya cara untuk menimpa gaya sebaris adalah dengan menggunakan !importantkata kunci disamping aturan CSS. Berikut adalah contohnya.

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>

Catatan penting:

  • Menggunakan !importanttidak dianggap sebagai praktik yang baik . Karenanya, Anda harus menghindari keduanya !importantdan gaya sebaris.

  • Menambahkan !importantkata kunci ke aturan CSS mana pun memungkinkan aturan tersebut secara paksa mendahului semua aturan CSS lainnya untuk elemen itu.

  • Itu bahkan menimpa gaya sebaris dari markup.

  • Satu-satunya cara untuk menimpa adalah dengan menggunakan !importantaturan lain , yang dideklarasikan dengan spesifikasi CSS yang lebih tinggi di CSS, atau dengan spesifikasi CSS yang sama di kemudian hari dalam kode.

  • Harus Dibaca - Kekhususan CSS oleh MDN 🔗

Rohit Agrawal
sumber
1
nah gaya itu memisahkan dia sebenarnya tidak perlu yang dia gunakan hanya untuk menimpa inline css
Rohit Agrawal
1
saya tahu tetapi saya juga mengatakan hal yang sama! penting hanya akan meningkatkan skor untuk properti tertentu, dia mungkin menggunakan properti lain (bukan untuk menimpa) di beberapa blok
Rohit Agrawal
Mengapa praktik buruk penting?
Sinister Beard
1
@BFDatabaseAdmin karena Anda tidak dapat menggantinya nanti jika Anda memerlukan kasus khusus
Rohit Agrawal
1
@BFWebAdmin masalahnya adalah terkadang Anda tidak punya pilihan. misalnya "lencana" dari recaptcha baru yang tidak terlihat dapat diberi gaya tetapi memiliki sebagian gaya sebaris sehingga Anda harus menimpanya seperti ini atau dengan js dan lebih memilih solusi CSS murni.
My1
27

inline-stylesdalam dokumen memiliki prioritas tertinggi, jadi misalnya katakanlah jika Anda ingin mengubah warna dari divelemen blue, tapi kau seorang inline styledengan colorset properti untukred

<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 */
}

Jadi, Haruskah Saya Menggunakan jQuery / Javascript? - Jawaban TIDAK

Kita bisa menggunakan element-attrCSS Selector dengan !important, perhatikan, !importantini penting, kalau tidak itu tidak akan melebihi gaya sebaris ..

<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;
}

Demo

Catatan: Menggunakan !importantHANYA akan berfungsi di sini, tetapi saya telah menggunakan div[style]selektor untuk secara khusus memilih divmemiliki style atribut

Tuan Alien
sumber
2
Jadi, Haruskah Saya Menggunakan Gaya Inline? - Jawaban TIDAK :-)
PeeHaa
"Jadi, Haruskah Saya Menggunakan jQuery / Javascript? - Jawaban TIDAK" Mengapa? Jika saya bekerja di lingkungan (seperti Sharepoint) di mana gaya sebaris ditambahkan ke elemen oleh entitas yang tidak terkendali mengapa saya tidak menggunakan Jquery untuk menghapus gaya sebaris yang menyinggung sehingga tema eksternal situs saya muncul? Tampaknya solusi yang lebih presesi daripada peledakan! Penting pada sifat yang mungkin ingin saya ganti dalam contoh tertentu nanti.
Neberu
2
@Neberu - Karena JS bisa diblokir / dimatikan di browser. Menggunakan !importanttidak bisa AFAIK.
Tony
1
juga js imo buruk secara umum, maksud saya apakah Anda membuka file yang dapat dieksekusi yang dikirim oleh Anda dari orang yang tidak dikenal? Saya kira tidak, tetapi browser melakukan ini dengan setiap klik
My1
11

Anda dapat dengan mudah mengganti gaya sebaris kecuali !importantgaya sebaris

begitu

<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 */
}

tetapi jika Anda punya

<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 */
}

sekarang hanya akan red.. dan Anda tidak dapat menimpanya

IE membunuh menjauh darinya
sumber
1
Apa bedanya dengan jawaban yang ditambahkan beberapa bulan sebelumnya?
Sinister Beard
4
@BFDatabaseAdmin Jawaban ini menggambarkan perilaku ketika gaya sebaris memiliki !important, titik yang tidak tercakup oleh jawaban lain. Ini mungkin bukan jawaban yang sepenuhnya berdiri sendiri tetapi ini berbeda dengan jawaban lain yang diberikan.
grg
tetapi sekali lagi menggunakan gaya sebaris dengan penting benar-benar berlebihan karena secara default memiliki prioritas tertinggi.
My1
6
<div style="background: red;">
    The inline styles for this div should make it red.
</div>

div[style] {
   background: yellow !important;
}

Di bawah ini adalah tautan untuk detail lebih lanjut: http://css-tricks.com/override-inline-styles-with-css/

jroi_web
sumber
5
Apa bedanya dengan jawaban yang ditambahkan beberapa bulan sebelumnya?
Sinister Beard
1
mungkin tidak ada bedanya jika kalian sudah tahu jawabannya ... tapi untuk beberapa pemula, semoga bisa membantu mereka..terutama link yang lebih detail ... lagian terima kasih sudah berkomentar.
jroi_web
1

digunakan !importantdalam properti CSS

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

div {
        color: blue !important;
    }
Vishal Vaghasiya
sumber