Yalnızca öğe için CSS stillerini sıfırlama / kaldırma


481

Eminim bu daha önce belirtilmiş / sorulmuş olmalı ama şanssız bir yaş arıyor, benim terminolojim yanlış olmalı!

Bir süre önce gördüğüm bir tweet'i hatırlıyorum ki bu, belirli bir öğenin stil sayfasında önceden ayarlanmış stilleri kaldırabilecek bir css kuralı olduğunu önerdi.

İyi bir kullanım örneği, küçük ekran görünümlerinde belirli bir öğe için kullanılan stilin çoğunun masaüstü görünümünde aynı öğenin 'sıfırlanması' veya kaldırılması gerektiği mobil ilk RWD sitesinde olabilir.

Şunun gibi bir şeyi başarabilecek bir css kuralı:

.element {
  all: none;
}

Örnek kullanım:

/* mobile first */
.element {
   margin: 0 10;
   transform: translate3d(0, 0, 0);
   z-index: 50;
   display: block;
   etc..
   etc..
}

@media only screen and (min-width: 980px) {
  .element {
    all: none;
  }
}

Böylece, her özelliği beyan etmek zorunda kalmadan stilleri hızlı bir şekilde kaldırabilir veya yeniden ayarlayabiliriz.

Mantıklı?


5
Hayır, böyle bir şey yok. Bir eleman bir kural yoluyla belirli bir CSS stili aldığında, sadece “geri alınamaz” - tek yol, her CSS özelliğinin istenen değerle açıkça yazılmasıdır.
CBroe

Bunu yapmanın yolu medya sorguları ile ilk etapta onu kısıtlamak
Kevin Lynch


13
Orada olduğu adlı bir özellik allsıfırlanması için önerilen ediliyor hepsi belli CSS çapında değerlere verilen bir öğenin CSS özelliklerini - olurdunuz kullanım istediğiniz değeri unset, varsayılan olarak devralır eğer ya da kalıtsal değeri bir özelliği sıfırlar veya aksi takdirde başlangıç ​​değeri. Uygulama hakkında hiçbir kelime yok, ama birisinin bunu düşündüğünü bilmek güzel.
BoltClock

2
all: revertyapacağım. Cevabımı gör. @CBroe Evet şimdi böyle bir şey var.
Asim KT

Yanıtlar:


602

CSS3 anahtar sözcüğü initial, CSS3 özelliğini, spesifikasyonda tanımlandığı şekilde başlangıç ​​değerine ayarlar . initialAnahtar kelime vardır geniş tarayıcı desteği IE ve Opera Mini aileleri hariç.

IE'nin destek eksikliği soruna neden olabileceğinden, bazı CSS özelliklerini başlangıç ​​değerlerine sıfırlamanın bazı yolları şunlardır:

.reset-this {
    animation : none;
    animation-delay : 0;
    animation-direction : normal;
    animation-duration : 0;
    animation-fill-mode : none;
    animation-iteration-count : 1;
    animation-name : none;
    animation-play-state : running;
    animation-timing-function : ease;
    backface-visibility : visible;
    background : 0;
    background-attachment : scroll;
    background-clip : border-box;
    background-color : transparent;
    background-image : none;
    background-origin : padding-box;
    background-position : 0 0;
    background-position-x : 0;
    background-position-y : 0;
    background-repeat : repeat;
    background-size : auto auto;
    border : 0;
    border-style : none;
    border-width : medium;
    border-color : inherit;
    border-bottom : 0;
    border-bottom-color : inherit;
    border-bottom-left-radius : 0;
    border-bottom-right-radius : 0;
    border-bottom-style : none;
    border-bottom-width : medium;
    border-collapse : separate;
    border-image : none;
    border-left : 0;
    border-left-color : inherit;
    border-left-style : none;
    border-left-width : medium;
    border-radius : 0;
    border-right : 0;
    border-right-color : inherit;
    border-right-style : none;
    border-right-width : medium;
    border-spacing : 0;
    border-top : 0;
    border-top-color : inherit;
    border-top-left-radius : 0;
    border-top-right-radius : 0;
    border-top-style : none;
    border-top-width : medium;
    bottom : auto;
    box-shadow : none;
    box-sizing : content-box;
    caption-side : top;
    clear : none;
    clip : auto;
    color : inherit;
    columns : auto;
    column-count : auto;
    column-fill : balance;
    column-gap : normal;
    column-rule : medium none currentColor;
    column-rule-color : currentColor;
    column-rule-style : none;
    column-rule-width : none;
    column-span : 1;
    column-width : auto;
    content : normal;
    counter-increment : none;
    counter-reset : none;
    cursor : auto;
    direction : ltr;
    display : inline;
    empty-cells : show;
    float : none;
    font : normal;
    font-family : inherit;
    font-size : medium;
    font-style : normal;
    font-variant : normal;
    font-weight : normal;
    height : auto;
    hyphens : none;
    left : auto;
    letter-spacing : normal;
    line-height : normal;
    list-style : none;
    list-style-image : none;
    list-style-position : outside;
    list-style-type : disc;
    margin : 0;
    margin-bottom : 0;
    margin-left : 0;
    margin-right : 0;
    margin-top : 0;
    max-height : none;
    max-width : none;
    min-height : 0;
    min-width : 0;
    opacity : 1;
    orphans : 0;
    outline : 0;
    outline-color : invert;
    outline-style : none;
    outline-width : medium;
    overflow : visible;
    overflow-x : visible;
    overflow-y : visible;
    padding : 0;
    padding-bottom : 0;
    padding-left : 0;
    padding-right : 0;
    padding-top : 0;
    page-break-after : auto;
    page-break-before : auto;
    page-break-inside : auto;
    perspective : none;
    perspective-origin : 50% 50%;
    position : static;
    /* May need to alter quotes for different locales (e.g fr) */
    quotes : '\201C' '\201D' '\2018' '\2019';
    right : auto;
    tab-size : 8;
    table-layout : auto;
    text-align : inherit;
    text-align-last : auto;
    text-decoration : none;
    text-decoration-color : inherit;
    text-decoration-line : none;
    text-decoration-style : solid;
    text-indent : 0;
    text-shadow : none;
    text-transform : none;
    top : auto;
    transform : none;
    transform-style : flat;
    transition : none;
    transition-delay : 0s;
    transition-duration : 0s;
    transition-property : none;
    transition-timing-function : ease;
    unicode-bidi : normal;
    vertical-align : baseline;
    visibility : visible;
    white-space : normal;
    widows : 0;
    width : auto;
    word-spacing : normal;
    z-index : auto;
    /* basic modern patch */
    all: initial;
    all: unset;
}

/* basic modern patch */

#reset-this-root {
    all: initial;
    * {
        all: unset;
    }
}

@ User566245 tarafından yapılan bir yorumda belirtildiği gibi:

bu prensipte doğrudur, ancak bireysel mesafe değişebilir. Örneğin, varsayılan olarak textarea gibi bazı öğelerin kenarlığı vardır, bu sıfırlamanın uygulanması bu textarea'nın kenarlığını daha az hale getirir.

[POST EDIT FEB 4, '17] Modern bir norm olmak için seçildi, kullanıcı Joost

#reset-this-parent {
  all: initial;
  * {
    all: unset;
  }
}

W3'TEN ÖRNEK

Örneğin, bir yazar tümünü belirtirse: bir öğedeki ilk öğe, tüm basamakların mirasını engeller ve tüm özellikleri sıfırlar, sanki basamaklamanın yazar, kullanıcı veya kullanıcı aracısı düzeyinde görünmez.

Bu, bir sayfada bulunan ve dış sayfanın stillerini devralmak istemeyen bir "widget'in" kök öğesi için yararlı olabilir. Bununla birlikte, söz konusu öğeye uygulanan herhangi bir "varsayılan" stilin (ör. Display: UA stil sayfasındaki gibi blok öğeleri üzerindeki blok) da kaldırılacağını unutmayın.


JAVASCRIPT?

Kimse css sıfırlamak için css dışında düşünmüyordu? Evet?

Tam bir alakalı snip var: https://stackoverflow.com/a/14791113/845310

getElementsByTagName ("*"), DOM'dan tüm öğeleri döndürür. Daha sonra koleksiyondaki her öğe için stiller ayarlayabilirsiniz:

Cevaplandı 9 Şubat 2013, 20:15 tarafından VisioN

var allElements = document.getElementsByTagName("*");
for (var i = 0, len = allElements.length; i < len; i++) {
    var element = allElements[i];
    // element.style.border = ...
}

Bütün bunlarla birlikte; i sadece bir web tarayıcısı ile bitene kadar css sıfırlama uygulanabilir bir şey olduğunu sanmıyorum .. 'varsayılan' sonunda tarayıcı tarafından ayarlanırsa.

Karşılaştırma için, DOM işlemini tetikleyen bir <blockquote style="all: unset;font-style: oblique">yer için Firefox 40.0 değerleri listesi font-style: oblique.

align-content: unset;
align-items: unset;
align-self: unset;
animation: unset;
appearance: unset;
backface-visibility: unset;
background-blend-mode: unset;
background: unset;
binding: unset;
block-size: unset;
border-block-end: unset;
border-block-start: unset;
border-collapse: unset;
border-inline-end: unset;
border-inline-start: unset;
border-radius: unset;
border-spacing: unset;
border: unset;
bottom: unset;
box-align: unset;
box-decoration-break: unset;
box-direction: unset;
box-flex: unset;
box-ordinal-group: unset;
box-orient: unset;
box-pack: unset;
box-shadow: unset;
box-sizing: unset;
caption-side: unset;
clear: unset;
clip-path: unset;
clip-rule: unset;
clip: unset;
color-adjust: unset;
color-interpolation-filters: unset;
color-interpolation: unset;
color: unset;
column-fill: unset;
column-gap: unset;
column-rule: unset;
columns: unset;
content: unset;
control-character-visibility: unset;
counter-increment: unset;
counter-reset: unset;
cursor: unset;
display: unset;
dominant-baseline: unset;
empty-cells: unset;
fill-opacity: unset;
fill-rule: unset;
fill: unset;
filter: unset;
flex-flow: unset;
flex: unset;
float-edge: unset;
float: unset;
flood-color: unset;
flood-opacity: unset;
font-family: unset;
font-feature-settings: unset;
font-kerning: unset;
font-language-override: unset;
font-size-adjust: unset;
font-size: unset;
font-stretch: unset;
font-style: oblique;
font-synthesis: unset;
font-variant: unset;
font-weight: unset;
font: ;
force-broken-image-icon: unset;
height: unset;
hyphens: unset;
image-orientation: unset;
image-region: unset;
image-rendering: unset;
ime-mode: unset;
inline-size: unset;
isolation: unset;
justify-content: unset;
justify-items: unset;
justify-self: unset;
left: unset;
letter-spacing: unset;
lighting-color: unset;
line-height: unset;
list-style: unset;
margin-block-end: unset;
margin-block-start: unset;
margin-inline-end: unset;
margin-inline-start: unset;
margin: unset;
marker-offset: unset;
marker: unset;
mask-type: unset;
mask: unset;
max-block-size: unset;
max-height: unset;
max-inline-size: unset;
max-width: unset;
min-block-size: unset;
min-height: unset;
min-inline-size: unset;
min-width: unset;
mix-blend-mode: unset;
object-fit: unset;
object-position: unset;
offset-block-end: unset;
offset-block-start: unset;
offset-inline-end: unset;
offset-inline-start: unset;
opacity: unset;
order: unset;
orient: unset;
outline-offset: unset;
outline-radius: unset;
outline: unset;
overflow: unset;
padding-block-end: unset;
padding-block-start: unset;
padding-inline-end: unset;
padding-inline-start: unset;
padding: unset;
page-break-after: unset;
page-break-before: unset;
page-break-inside: unset;
paint-order: unset;
perspective-origin: unset;
perspective: unset;
pointer-events: unset;
position: unset;
quotes: unset;
resize: unset;
right: unset;
ruby-align: unset;
ruby-position: unset;
scroll-behavior: unset;
scroll-snap-coordinate: unset;
scroll-snap-destination: unset;
scroll-snap-points-x: unset;
scroll-snap-points-y: unset;
scroll-snap-type: unset;
shape-rendering: unset;
stack-sizing: unset;
stop-color: unset;
stop-opacity: unset;
stroke-dasharray: unset;
stroke-dashoffset: unset;
stroke-linecap: unset;
stroke-linejoin: unset;
stroke-miterlimit: unset;
stroke-opacity: unset;
stroke-width: unset;
stroke: unset;
tab-size: unset;
table-layout: unset;
text-align-last: unset;
text-align: unset;
text-anchor: unset;
text-combine-upright: unset;
text-decoration: unset;
text-emphasis-position: unset;
text-emphasis: unset;
text-indent: unset;
text-orientation: unset;
text-overflow: unset;
text-rendering: unset;
text-shadow: unset;
text-size-adjust: unset;
text-transform: unset;
top: unset;
transform-origin: unset;
transform-style: unset;
transform: unset;
transition: unset;
user-focus: unset;
user-input: unset;
user-modify: unset;
user-select: unset;
vector-effect: unset;
vertical-align: unset;
visibility: unset;
white-space: unset;
width: unset;
will-change: unset;
window-dragging: unset;
word-break: unset;
word-spacing: unset;
word-wrap: unset;
writing-mode: unset;
z-index: unset;

8
Bunun prensipte doğru olduğunu düşünüyorum, ancak bireysel kilometre değişebilir. Örneğin, varsayılan olarak textarea gibi bazı öğelerin kenarlığı vardır, bu sıfırlamanın uygulanması bu textarea'nın kenarlığını daha az hale getirir. Yani gerçek bir sıfırlama değil. Ben sadece önemsediğim bazı özellikleri için kullanarak sona erdi. Ayrıca, tüm öğeleri sıfırlamak veya belirli bir öğenin içindeki tüm öğeleri sıfırlamak için * seçiciyle birleştirebilirsiniz.
user566245

8
@ user566245 Bunu * seçiciyle uygulamak tarayıcınızı VE kedi yavrusu öldürür. Bu gerçek bir sıfırlama DEĞİLDİR. Gerçek sıfırlama mevcut değil.
Milche Patern

@Milkywayspatterns lol, muhtemelen haklısın. Benim için sadece sıfırlamak istediğim özellikleri aldım ve "div # theid *" ye uyguladım. Umarım bu
anyones

1
@Jeremy: Farklı öğeler için değişen tarayıcı varsayılanlarını düşünüyorsunuz. Ekranın başlangıç ​​değeri, hangi öğeye uygulandığına bakılmaksızın her zaman satır içi olur.
BoltClock

1
@mmmshuddup Tavsiye için teşekkürler. Orijinal cevaba bir göz atarsanız, ben CSS gibi reform. Sıkıştırma için, bu bir kopyadır, kopyala yapıştırma yaması değildir. Öyle değil mi?
Milche Patern

172

Gelecekteki okuyucular için. Bence bu demekti ama şu anda gerçekten geniş desteklenmiyor (aşağıya bakın):

#someselector {
  all: initial;
  * {
    all: unset;
  }
}
  • Desteklenen ( kaynak ): Chrome 37, Firefox 27, IE 11, Opera 24
  • Desteklenmiyor: Safari

12
Kaynak Internet Explorer desteklemediği iddiaları all.
Dan Dascalescu

1
En sonunda. Bu kabul edilen yeni cevap olmalı.
JS_Riddler

2
Microsoft listeleri allolarak göz altında . Edge'in gelecekteki bir sürümü bunu destekleyebilir.
Kevin

1
Ben sadece "Devralınan özellikleri, başlangıç ​​değeri şaşırtıcı olabilir ve bunun yerine devralma, unset veya geri anahtar kelimeleri kullanmayı düşünmelisiniz. Ayrıca, bu tarayıcıya özgü geliyor mu? Bu ilk başlangıç ​​nerede .. tarafından ayarlanır ...? DDT?
Milche Patern

18
İç içe CSS gibi gördüğüm tek yer #someselector { ... * { all: unset; } ... }Sass. Burada Sass'tan bahsetmedin - bu yeni bir CSS3 meselesi mi? "İç içe geçmiş CSS" araması bana giriş seviyesi dersleri ve Sass bilgilerini getiriyor. ... * { ... } ...Yuvalanmış parçayı CSS'ime (HTML5'te) eklemek dokümanı kırıyor (alt öğelerim ayrı ayrı üst öğeye uygulamak istediğim stili alıyor).
i336_

34

Bu soruna yepyeni bir çözüm bulundu.

all: revertVeya tuşunu kullanın all: unset.

MDN'den:

Revert anahtar sözcüğü birçok durumda ayarlanmamış ile tam olarak aynı şekilde çalışır. Tek fark, tarayıcı tarafından veya kullanıcılar tarafından oluşturulan (tarayıcı tarafında ayarlanan) özel stil sayfaları tarafından ayarlanan değerlere sahip özellikler içindir.

İhtiyacınız "Daha önce belirli bir eleman için stil ayarlanan stilleri kaldırmak olacağını mevcut bir css kuralı."

Dolayısıyla, öğenin aşağıdaki gibi bir sınıf adı varsa remove-all-styles:

Örneğin:

HTML:

<div class="remove-all-styles other-classe another-class"> 
   <!-- content -->
   <p class="text-red other-some-styles"> My text </p>
</div>

CSS ile:

  .remove-all-styles {
    all: revert;
  }

Tarafından uygulanan tüm stilleri sıfırlar other-class, another-classve diğer tüm kalıtsal ve buna uygulanan stiller div.

Veya sizin durumunuzda:

/* mobile first */
.element {
   margin: 0 10;
   transform: translate3d(0, 0, 0);
   z-index: 50;
   display: block;
   etc..
   etc..
}

@media only screen and (min-width: 980px) {
  .element {
    all: revert;
  }
}

Yapacağım.

Burada bir başka serin CSS değeri olan bir serin CSS özelliği kullandık.

  1. revert

Aslında revert, adından da anlaşılacağı gibi, bu özelliği kullanıcı veya kullanıcı aracısı stiline döndürür.

  1. all

Kullandığımız zaman revertile allmülkiyet, bu parçaya uygulanacak tüm CSS özelliklerini kullanıcı / kullanıcı aracısı stilleri döndürülecek.

Yazar, kullanıcı, kullanıcı aracısı stilleri arasındaki farkı öğrenmek için buraya tıklayın.

Örn: gömülü widget'ları / bileşenleri bunları içeren sayfanın stillerinden ayırmak istiyorsak şunu yazabiliriz:

.isolated-component {
 all: revert;
}

Hangi tüm author styles(yani geliştirici CSS) user styles(web sitemizin bir kullanıcının ayarladığı user-agentstiller - daha az olası senaryo) veya hiçbir kullanıcı stili ayarlanmadıysa kendi stiline geri döner .

Daha fazla ayrıntı burada: https://developer.mozilla.org/en-US/docs/Web/CSS/revert

Ve tek sorun destek : revertyazma sırasında yalnızca Safari 9.1 ve iOS Safari 9.3 değer desteği veriyor .

Bu yüzden bu stili ve diğer cevaplara geri dönüşü kullanmayı söyleyeceğim.


2
Serin olurdu, ama ne yazık ki tarayıcı desteği hala delikleri var: caniuse.com/#feat=css-all (caniuse gösterilenden daha küçük olsa da, örneğin all: initialve all: unsetMS Edge 16'da benim için çalıştı).
Robert Kusznier

25

Bu soruyu iyice cevaplayayım, çünkü birkaç yıldır benim için bir acı kaynağı oldu ve çok az insan sorunu gerçekten ve bunun çözülmesinin neden önemli olduğunu anlıyor. CSS spesifikasyonundan hiç sorumlu olsaydım, açıkçası, son on yılda bu konuya değinmediğim için utandım.

Sorun

Bir HTML belgesine işaretleme eklemeniz gerekir ve belirli bir şekilde görünmesi gerekir. Ayrıca, bu belgeye sahip değilsiniz, bu nedenle mevcut stil kurallarını değiştiremezsiniz. Stil sayfalarının ne olabileceği veya neye dönüşebileceği hakkında hiçbir fikriniz yok .

Bunun kullanım örnekleri, bilinmeyen 3. taraf web sitelerinin kullanması için görüntülenebilir bir bileşen sağladığınız zamandır. Bunun örnekleri:

  1. Bir reklam etiketi
  2. İçerik ekleyen bir tarayıcı uzantısı oluşturma
  3. Her türlü widget

En Basit Düzeltme

Her şeyi bir iframe içine koyun. Bunun kendi sınırlamaları vardır:

  1. Web Alanları Arası sınırlamalar: İçeriğinizin orijinal dokümana erişimi olmayacaktır. İçeriğin üzerine bindiremez, DOM'yi değiştiremez vb.
  2. Ekran Sınırlamaları: İçeriğiniz bir dikdörtgenin içine kilitlenmiştir.

İçeriğiniz varsa olabilir bir kutuya sığacak iframe ve belge aynı alanı paylaşacak beri, siz, içerik yazma iframe sahip ve açıkça içerik ayarlamak, böylece sorunu etrafında süpürgelik ile problemi 1. sorunun üstesinden gelebilirsiniz.

CSS Çözümü

Bunun çözümü için çok geniş bir araştırma yaptım, ancak maalesef yok. Yapabileceğiniz en iyi şey, geçersiz kılınabilecek tüm olası özellikleri açıkça geçersiz kılmak ve bunları varsayılan değerlerinin olması gerektiğini düşündüğünüz şekilde geçersiz kılmaktır .

Geçersiz kılsanız bile, daha hedefli bir CSS kuralının sizinkini geçersiz kılmamasını sağlamanın bir yolu yoktur . Burada yapabileceğiniz en iyi şey, geçersiz kılma kurallarınızın olabildiğince özel olarak hedeflenmesini sağlamak ve üst belgenin yanlışlıkla en iyi şekilde sonuçlanmamasını sağlamaktır: içeriğinizin üst öğesinde belirsiz veya rastgele bir kimlik kullanın ve tüm özellik değeri tanımlarında! .


2
Tüm modern tarayıcılar tarafından desteklenen tüm mülkü kullanabilirsiniz .
Dan Dascalescu

1
Bu genel soruna uygun çözüm Web Bileşenleri
GetFree

1
Bu çok gerçek bir konudur, ancak ilk etapta yalnızca zayıf gelişmiş CSS'nin bir sonucu olarak mevcuttur. İşaretleme ve CSS oluşturuyorsanız, düzgün bir şekilde yaptıysanız, stillerinizin hiçbiri bir üçüncü taraf uygulamasına sızmamalıdır. CSS spesifikasyonundan sorumlu olsaydım, utanmazdım, ama üzgün insanlar yarattığım şeyi acımasızca kötüye kullanıyorlar.
ESR

@DanDascalescu Tüm özellikler "varsayılan" tarayıcı css stillerine geri dönmez. Sadece "ilk" css stillerine geri dönecek. Fark, bir sayfanın CSS yokmuş gibi stilini oluşturması, diğerinin öğe stillerini kullanmasıdır (i, e, p { color: blue}sıfırlanmayacaktır)
Cameron

10

4

Burada doğru olarak işaretlenmiş cevabı kullanmanızı önermiyorum. Her şeyi örtmeye çalışan büyük bir CSS bloğu.

Her durum için stilin bir öğeden nasıl kaldırılacağını değerlendirmenizi öneririm.

SEO amaçları için, tasarımda gerçek bir başlığı olmayan bir sayfaya bir H1 eklemeniz gerektiğini söyleyelim. Bu sayfanın gezinme bağlantısını H1 yapmak isteyebilirsiniz, ancak bu gezinme bağlantısının sayfada dev bir H1 olarak görüntülenmesini istemediğinizden emin olabilirsiniz.

Yapmanız gereken bu öğeyi bir h1 etiketine sarmak ve incelemek. Özellikle h1 öğesine hangi CSS stillerinin uygulandığını görün.

Diyelim ki öğeye aşağıdaki stilleri uyguladım.

//bootstrap.min.css:1
h1 {
    font-size: 65px;
    font-family: 'rubikbold'!important;
    font-weight: normal;
    font-style: normal;
    text-transform: uppercase;
}

//bootstrap.min.css:1
h1, .h1 {
    font-size: 36px;
}

//bootstrap.min.css:1
h1, .h1, h2, .h2, h3, .h3 {
    margin-top: 20px;
    margin-bottom: 10px;
}

//bootstrap.min.css:1
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: inherit;
    font-weight: 500;
    line-height: 1.1;
    color: inherit;
}

//bootstrap.min.css:1
h1 {
    margin: .67em 0;
    font-size: 2em;
}

//user agent stylesheet
h1 {
    display: block;
    font-size: 2em;
    -webkit-margin-before: 0.67em;
    -webkit-margin-after: 0.67em;
    -webkit-margin-start: 0px;
    -webkit-margin-end: 0px;
    font-weight: bold;
}

Şimdi H1'e uygulanan stili tam olarak işaretlemeniz ve bunları bir css sınıfında ayarlamanız gerekir. Bu şöyle görünecektir:

.no-style-h1 {
    font-size: unset !important;
    font-family: unset !important;
    font-weight: unset !important;
    font-style: unset !important;
    text-transform: unset !important;
    margin-top: unset !important;
    margin-bottom: unset !important;
    font-family: unset !important;
    line-height: unset !important;
    color: unset !important;
    margin: unset !important;
    display: unset !important;
    -webkit-margin-before: unset !important;
    -webkit-margin-after: unset !important;
    -webkit-margin-start: unset !important;
    -webkit-margin-end: unset !important;
}

Bu çok daha temiz ve sadece ne yaptığını bilmediğiniz css içine rastgele bir kod bloğu dökmek değil.

Şimdi bu sınıfı h1'inize ekleyebilirsiniz.

<h1 class="no-style-h1">
     Title
</h1>

4

Bir derleme sisteminde sass kullanıyorsanız, tüm büyük tarayıcılarda çalışacak şekilde yapmanın bir yolu, tüm stil ithalatlarınızı şu şekilde bir: not () seçici ile sarmaktır ...

:not(.disable-all-styles) {
  @import 'my-sass-file';
  @import 'my-other-sass-file';
}

Ardından, kapsayıcıdaki devre dışı bırakma sınıfını kullanabilirsiniz; alt içerik, stillerinizin hiçbirine sahip olmaz.

<div class="disable-all-styles">
  <p>Nothing in this div is affected by my sass styles.</p>
</div>

Tabii ki tüm stillerinize şimdi değil: () seçici eklenecektir, bu yüzden biraz çirkin, ama iyi çalışıyor.


1

Önce mobil cihazlardan bahsettiniz ... Duyarlı bir tasarım için, küçük ekran stillerini büyük ekran stillerini geçersiz kılmak kesinlikle mümkündür. Ama gerekmeyebilir.

Bunu dene:

.thisClass {
    /* Rules for all window sizes. */
}

@media all and (max-width: 480px) {
    .thisClass {
        /* Rules for only small browser windows. */
    }
}

@media all and (min-width: 481px) and (max-width: 960px) {
    .thisClass {
        /* Rules for only medium browser windows. */
    }
}

@media all and (min-width: 961px) {
    .thisClass {
        /* Rules for only large browser windows. */
    }
}

Bu medya sorguları çakışmaz, bu yüzden kuralları birbirini geçersiz kılmaz. Bu, her stil grubunu ayrı ayrı korumayı kolaylaştırır.


1

DAHA İYİ ÇÖZÜM

Css özelliklerini varsayılana (UA stili) sıfırlamak için "kopyala / yapıştır" stil sayfasını indirin:
https://github.com/monmomo04/resetCss.git

Teşekkürler Milche Patern!
Gerçekten sıfırlama / varsayılan stil özellikleri değeri arıyordu. İlk denemem, hesaplanan değeri root (html) öğesinin tarayıcı Dev aracından kopyalamaktı. Ancak hesaplandığı gibi, her sistemde farklı görünecek / çalışacaktı.
Çocuk öğelerinin stilini sıfırlamak için yıldız işaretini * kullanmaya çalışırken bir tarayıcı çökmesi ile karşılaşanlar ve sizin için işe yaramadığını bildiğim için, yıldız işaretini "*" yerine tüm HTML etiketleri adıyla değiştirdim . Tarayıcı çökmedi; Chrome Sürüm 46.0.2490.71 m'deyim.
Sonunda, bu özelliklerin stili en üst kök öğenin varsayılan stiline sıfırlayacağını, ancak her HTML öğesi için başlangıç ​​değerine sıfırlayacağını belirtmek gerekir. Bunu düzeltmek için, webkit tabanlı tarayıcının "kullanıcı-aracı" stillerini aldım ve "reset-this" sınıfı altında uyguladım.

Yararlı bağlantı:


Css özelliklerini varsayılana (UA stili) sıfırlamak için "kopyala / yapıştır" stil sayfasını indirin:
https://github.com/monmomo04/resetCss.git

Kullanıcı aracısı stili:
HTML öğeleri için tarayıcıların varsayılan CSS'si
http://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css

Css özgüllüğü (özgüllüğe dikkat edin ):
https://css-tricks.com/specifics-on-css-specificity/

https://github.com/monmomo04/resetCss.git


1

Spesifik senaryomda, sayfanın belirli bir bölümüne ortak stiller uygulamayı atlamak istedim, daha iyi şöyle gösterilmiştir:

<body class='common-styles'>
    <div id='header'>Wants common styles</div>
    <div id='container'>Does NOT want common styles</div>
    <div id='footer'>Wants common styles</div>
</body>

Çok fazla başarı getirmeyen CSS sıfırlamasıyla uğraştıktan sonra (esas olarak kural önceliği ve karmaşık stil sayfası hiyerarşisi nedeniyle), işi çok hızlı ve makul derecede kirli yapan kurtarmaya her yerde jQuery getirdi:

$(function() {
    $('body').removeClass('common-styles');
    $('#header,#footer').addClass('common-styles');
});

(Şimdi JS'yi CSS ile başa çıkmak için kullanmanın ne kadar kötü olduğunu söyle :-))


0

Css'i dosyalardan kaldırmadan stilin yalnızca öğeden nasıl kaldırılacağını anlamaya çalışanlarınız için bu çözüm jquery ile çalışır:

$('.selector').removeAttr('style');

0

CSS'nizi sınıflar içinde ayarlarsanız, jQuery removeClass () Yöntemini kullanarak bunları kolayca kaldırabilirsiniz. Aşağıdaki kod .element sınıfını kaldırır:

    <div class="element">source</div>   
    <div class="destination">destination</div>
      <script>
        $(".element").removeClass();
      </script>

Herhangi bir parametre belirtilmezse, bu yöntem TÜM sınıf adlarını seçilen öğelerden kaldırır.


-2

Hayır, bu sadece css yapınızı daha iyi yönetme meselesidir.

Senin durumunda ben css böyle bir şey sipariş ediyorum:

.element, .element1, .element2 p{z-index: 50; display: block}
.element, .element1{margin: 0 10}
.element2 p{transform: translate3d(0, 0, 0)}

@media only screen and (min-width: 980px) {
.element, .element1, .element2 p{display: none}
}

Sadece deneyin.


-2

Önemli kuralı arama şansınız var mı? Tüm bildirimleri geri almaz, ancak bunları geçersiz kılmak için bir yol sağlar.

"Stil bildiriminde!! Önemli bir kural kullanıldığında, bu bildirim, CSS'de, bildirim listesinde nerede olursa olsun, yapılan diğer tüm bildirimleri geçersiz kılar.

https://developer.mozilla.org/en-US/docs/CSS/Specificity#The_!important_exception


! Önemleri gitmenin yolu değil. Kullanmak cesur ve sadece son çare olarak kullanmalısınız (örneğin, bir eklenti de! Önemli bir kullandığında)
Maarten Wolfsen
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.