あなたは純粋なCSS(Javascriptのための必要はありません)
使用HTML5マークアップを使用して問題を回避することができます
HTML:
<figure>
<img src='thepicture.jpg' alt='image'>
</figure>
CSS:
figure {
max-width: 400px;/*Or whatever;*/
width: 40%; /* or Whatever */
}
figure > img {
width:100%;
height:auto;
margin:0;
}
これは、<figure>
要素にimgが含まれ、画像がFigure要素のサイズに自動的に拡大縮小されるということです。スケーリングは画像上ではなくボックスに合わせるために行われるため、誤ったアスペクト比のオプションはほとんどありません。
<img>
タグには幅や高さが指定されていません。これはCSSで完全に行われます。
figure
タグは、ディメンションの最大サイズ(および最小サイズ)を設定し、画像がこれらの指定されたディメンションを確実に満たすようにします。サイドノートでは
、何を頻繁に起こるのだろうと、彼らはmin-
かmax-
性質を与えられたが、標準を与えられていない場合は、さまざまなブラウザではアスペクト比とレイアウトで混乱しますです。たとえば、標準width
プロパティを与えずにIEにmax-width:
プロパティを与えると、あなたが言及している矛盾の種類が発生します。
が100%の場合、これは既に最大値ですので、同じ要素のmax-width
も定義する必要はありません。min-width
と同じですが、サイズが100%または0%でないパーセンテージまたはその他の固定されていない変数(rem
など)でない限り、単純には必要ありません。
さらにノート:物事のこれらの並べ替えのために正しくサイジング
ボックスはまた、あなたがなるように幅+パディングが、例えば、予想される幅よりも大きくないbox-sizing:border-box
を使用することを確実にすることによって助けすることができます。 width:66%: padding:1rem
は、ボックスサイズがと実際はが2rem + 66%になることを意味します。したがって、33%のマージンでオフセットが発生します。
これを '!important'にする必要はありません – Martin