すべてのテーブルに定義されている次のCSSスタイルをオーバーライドしたいと思います。
table {
font-size: 12px;
width: 100%;
min-width: 400px;
display:inline-table;
}
'other'
というクラスを持つ特定のテーブルがあります。
最終的にテーブルの装飾は次のようになります。
table.other {
font-size: 12px;
}
だから私は3つのプロパティを削除する必要があります:width
、min-width
およびdisplay
none
またはauto
でリセットしようとしましたが、助けにはなりませんでした。次の場合です。
table.other {
width: auto;
min-width: auto;
display:auto;
}
table.other {
width: none;
min-width: none;
display:none;
}
最初のプロパティセットが機能しない理由は、 auto
にdisplay
値がないため、そのプロパティを無視する必要があるためだと思います。その場合、inline-table
は引き続き有効であり、width
はinline
要素には適用されないため、そのプロパティセットは何も実行しません。
2番目のプロパティセットは、display: none
が目的であるため、単にテーブルを非表示にします。
代わりにtable
にリセットしてみてください。
table.other {
width: auto;
min-width: 0;
display: table;
}
編集:min-width
デフォルトはauto
ではなく0
になります
「none」は、想定どおりに動作しません。 CSSプロパティを「クリア」するには、CSS標準で定義されているデフォルトに戻す必要があります。したがって、お気に入りの参照でデフォルトを検索する必要があります。
table.other {
width: auto;
min-width: 0;
display:table;
}
Set min-width: inherit /* Reset the min-width */
これを試して。それが動作します。
テーブルのデフォルトのdisplay
プロパティはdisplay:table;
です。他の有用な値はinline-table
のみです。他のすべてのdisplay
値は、テーブル要素に対して無効です。
デフォルトにリセットするauto
オプションはありませんが、Javascriptで作業している場合は、空の文字列に設定してトリックを実行できます。
width:auto;
は有効ですが、デフォルトではありません。テーブルのデフォルトの幅は100%
ですが、width:auto;
は要素が必要なだけの幅を占めるようにします。
min-width:auto;
は許可されていません。 min-width
を設定する場合、値を設定する必要がありますが、ゼロに設定することは、おそらくデフォルトにリセットするのと同じくらい良いでしょう。
さて、display: none;
はテーブルをまったく表示しません。幅と最小幅の宣言を 'auto'のままにしてdisplay: inline-block;
を試してください。
最小幅の設定を元に戻す最良の方法は次のとおりです。
min-width: 0;
min-width: unset;
unsetは仕様にありますが、一部のブラウザー(IE 10)はそれを尊重しないため、0はmostの場合の適切なフォールバックです。最小幅:0;
私はすべてを完璧にするためにJavascriptを使用することになりました。
私のJSフィドル: 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);
}
})