CSS stilini geçersiz kılın ve sıfırlayın: otomatik veya hiçbiri çalışmıyor


130

Tüm tablolar için tanımlanan aşağıdaki CSS stilini geçersiz kılmak istiyorum:

table {
        font-size: 12px;
        width: 100%;
        min-width: 400px;
        display:inline-table;
    }

Sınıfı adlı özel bir tablom var 'other'.
Son olarak masa dekorasyonu şöyle görünmelidir:

table.other {
    font-size: 12px;
}

bu yüzden 3 özellikleri kaldırmak gerek: width, min-widthvedisplay

Birlikte sıfırlamak için çalıştı noneya auto, ama yardım etmedi, ben bu davaları demek:

table.other {
    width: auto;
    min-width: auto;
    display:auto;
}
table.other {
    width: none;
    min-width: none;
    display:none;
}

Yanıtlar:


195

İlk özellik kümesinin işe yaramamasının nedeninin autodeğerinin olmaması display, dolayısıyla mülkiyetin göz ardı edilmesi gerektiğine inanıyorum. Bu durumda, inline-tableyine de geçerli olacaktır ve şu widthşekilde geçerli değildir:inline öğeler için , bu özellikler kümesi hiçbir şey yapmayacaktır.

İkinci özellik grubu, tabloyu basitçe gizleyecektir. display: none .

tableBunun yerine sıfırlamayı deneyin :

table.other {
    width: auto;
    min-width: 0;
    display: table;
}

Düzenleme: min-width varsayılan değerdir 0, değilauto


garip, firebug ile bakıyorum - min-width otomatik tarafından geçersiz
kılındı

6
@sergionni Oh evet, unuttum - min-widthvarsayılan bir değere sahip 0- reference.sitepoint.com/css/min-width
Yi Jiang

Firebug'a tekrar baktım, bir de sorun var, iç içe geçmiş tablolar var, bu nedenle geçersiz kılma tüm hiyerarşilere uygulanmalı
sergionni

1
@sergionni table.other tableSıfırlama özellikleri için kullanılan seçiciye ekleyerek bunu yapabilirsiniz
Yi Jiang

1
width: autogeçersiz kılmak istediğim tek şey width: 100%- Teşekkür ederim
Meredith

18

"hiçbiri" yaptığını varsaydığınız şeyi yapmaz. Bir CSS özelliğini "temizlemek" için, CSS standardı tarafından tanımlanan varsayılan değerine geri ayarlamanız gerekir. Bu nedenle, en sevdiğiniz referanstaki varsayılanlara bakmalısınız.

table.other {
    width: auto;
    min-width: 0;
    display:table;
}

10
Set min-width: inherit /* Reset the min-width */

Bunu dene. Çalışacak.


2
Bu kabul edilen bir cevap olmalıdır. min-width: 0aynı şeyi yapmaz
v010dya

Doğru, ama ya bir ebeveyn varsa min-width? bunu gerçek bir varsayılan yerine alacaksın.
adi518

7

displayBir tablonun varsayılan özelliği display:table;. Diğer tek kullanışlı değer inline-table. Diğer tümdisplay değerler tablo öğeleri için geçersizdir.

Bir yoktur autoEğer JavaScript çalışıyorsanız, hile olacaktır boş bir dize, bunu ayarlayabilirsiniz rağmen, varsayılan sıfırlamak için bir seçenek.

width:auto;geçerlidir, ancak varsayılan değildir. Bir tablo için varsayılan genişliği 100%ise width:auto;bu ihtiyacı olarak eleman sadece daha genişliği kadar sürebilir yapacaktır.

min-width:auto;izin verilmez. Ayarladıysanız min-width, bir değeri olmalıdır, ancak bunu sıfıra ayarlamak muhtemelen varsayılana sıfırlamak kadar iyidir.


JS hakkında ilginç fikir. İhtiyacım olan şey gibi görünüyor ve önce CSS ile deneyeceğim.
sergionni

1

De, display: none;her tabloya göstermez, deneyin display: inline-block;genişlik ve 'otomatik' kalan dakika genişliği beyanları ile.


0

Her şeyi mükemmelleştirmek için Javascript kullanmaya başladım.

JS kemanım: https://jsfiddle.net/QEpJH/612/

HTML:

<div class="container">
    <img src="http://placekitten.com/240/300">
</div>

<h3 style="clear: both;">Full Size Image - For Reference</h3>
<img src="http://placekitten.com/240/300">

CSS:

.container {
    background-color:#000;
    width:100px;
    height:200px;

    display:flex;
    justify-content:center;
    align-items:center;
    overflow:hidden;

}

JS:

$(".container").each(function(){
    var divH = $(this).height()
    var divW = $(this).width()
    var imgH = $(this).children("img").height();
    var imgW = $(this).children("img").width();

    if ( (imgW/imgH) < (divW/divH)) { 
        $(this).addClass("1");
        var newW = $(this).width();
        var newH = (newW/imgW) * imgH;
        $(this).children("img").width(newW); 
        $(this).children("img").height(newH); 
    } else {
        $(this).addClass("2");
        var newH = $(this).height();
        var newW = (newH/imgH) * imgW;
        $(this).children("img").width(newW); 
        $(this).children("img").height(newH); 
    }
})

0

Minimum genişlik ayarını geri döndürmenin en iyi yolu şudur:

min-width: 0;
min-width: unset;

unset spesifikasyon içindedir, ancak bazı tarayıcılar (IE 10) buna saygı göstermez, bu nedenle 0 çoğu durumda iyi bir yedektir . min-genişlik: 0;

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.