2012-06-26 16 views
9

Jeśli to możliwe, w jaki sposób mogę przesłonić właściwość min-height klasy dla konkretnego elementu div?Nadpisywanie właściwości min-height

Przykład:

.someclass { 
 
    min-height: 200px; 
 
}
<div class="someclass"> 
 
    -- content -- 
 
</div>

Próbowałem przy użyciu coś podobnego style="min-height:100px!important;" na div, ale to nie wydają się działać.

Odpowiedz

14

to bardzo zły zwyczaj używać deklaracji !important w standardowych arkuszach stylów. Unikaj go za wszelką cenę, ponieważ łamie kaskadowy charakter arkuszy stylów.

Użyj more specific selector, aby zastąpić poprzednie style.

Aby zresetować style do wartości domyślnych, należy użyć auto|inherit|0 w zależności od atrybutu. Dla min-height jest to 0. CSS3 wprowadza specjalną wartość inital, która powinna być preferowana - ale niestety ma ograniczoną liczbę IE support.

W twoim przypadku min-height:100px; w selektorze o wyższej specyficzności (albo id albo styl inline - najlepiej nie ten drugi) powinien załatwić sprawę.

let div = document.querySelector("#morespecific"); 
 

 
div.innerHTML = "This div has its min-height set to: "+window.getComputedStyle(div).minHeight;
.someclass{ 
 
    min-height:200px; 
 
    border:1px solid red; 
 
} 
 
#morespecific{ 
 
    min-height:100px; 
 
    border-color:blue; 
 
}
<div id="morespecific" class="someclass"> 
 
-- content -- 
 
</div>

+0

trzeba przesłonić min-wysokość: 200px. min-wysokość: auto również nie działa – nik

+0

dzięki za rozwiązanie, pomijałem px po 100px. zdarza się to czasami, gdy postać przychodzi dynamicznie – nik

+0

nie ma za co;) – Christoph

1

!important flaga musi przejść wewnątrz średnikiem, tak:

.someclass {min-height: 200px !important;} 

Ponadto nie powinien być naprawdę korzystania !important flagi czy można na to poradzić. Nadrzędna reguła musi być bardziej szczegółowa niż oryginalna reguła.

Myślę, że musisz przeczytać na specificity and inheritance.

+0

używane ważne, aby odrzucić to rozwiązanie i potrzebuję przesłonić właściwość min-height: 200px. Już używa 200px, więc to nie pomoże – nik

+0

... Więc zmień 200 na 100? –

+0

.someclass z innymi właściwościami nie jest ustawiony tylko dla tego div. To dlatego trzeba to zmienić :) – nik

0

style inline nadpisać style CSS, więc

<div class="someclass" style="height: 50px;">...</div> 

zastępuje reguły w arkuszu stylów. Jednak nie jest to dobre rozwiązanie, aby rozwiązać ten problem. Preferowanym rozwiązaniem byłoby użycie selektora o wyższej specyficzności w twoim zewnętrznym css.

+0

Próbowałem tego, ale to nie zadziałało. – nik

+0

To samo, ale pominąłem px z właściwości, więc właściwym rozwiązaniem byłoby

-- content --
. Dziękuje za odpowiadanie. – nik

3

nie mogłem znaleźć żadnego lepszą odpowiedź niż po prostu użyć 0, aby przesłonić min rzeczy i używać coś jak 1000% zastąpić max rzeczy.

+0

Tak! jest to standardowy sposób resetowania właściwości "min- *" CSS. –

+0

To jest odpowiedź logiczna. Dzięki. –

Powiązane problemy