カルーセルで画像の縦横比を維持する
Bootstrapを使ってカルーセルを作っているのですが、大きな画像があるため、画面が画像より小さいと比率が保てません。
どうすれば変更できますか?
以下は私のコードです:
.carousel .item {
height: 500px;
}
.carousel img {
position: absolute;
top: 0;
left: 0;
min-width: 100%;
height: 500px;
}
http://jsfiddle.net/DRQkQ/
画像の幅を100%にしたいのですが、高さは500pxのままにしてください。
画像をdivに収め、その中に
overflow: hidden;
width: 100%;
height: 500px;
display: block;
margin: 0 auto;
しかし、うまくいきません。
ありがとうございました!
42
8
問題はここ、ブートストラップCSSにある:
max-width: 100%;` を設定した場合、画像はビューポートより大きくなりません。CSSでこの動作をオーバーライドする必要があります:
一番下に追加された
max-width: none;
に注目してください。これはデフォルトのmax-width値で、制限を解除します。[あなたのフィドルが更新されました。
CSS3
object-fit
属性で処理する方が良いと思います。幅と高さが固定された画像があり、アスペクト比を維持したい場合は、「object-fit:contain;」を使用できます。 高さと幅を指定して比率を維持します。
例:
詳細については、こちらをご覧ください:http://www.creativebloq.com/css3/control-image-aspect-ratios-css3-2122968。
これが誰かに役立つことを願っています。
カルーセルアイテム内の
img
タグを削除し、背景を追加します。こうすることで、CSS3のcoverプロパティを使うことができる。以下のように、carousel.cssの行からheightの行をコメントアウトすることで実現できた:
このコードはついに私のために働きました:
アスペクト比を維持するためカルーセルdivの完全なカバレッジ:
他の人が述べたように、css3はこれのためにうまく機能します。 コンテナの全幅、固定高さを使用して、画像保持アスペクト比を「カバー」でスケーリングし、オーバーフローを捨てました。
どうやら、上記のソリューションは私にはうまくいきませんでした(理由はわかりません)?)しかし、私はjavascriptを使用して別の回避策を見つけました。
基本的に、これはより退屈な方法ですが、機能します。 jQueryを使用して、カルーセルの高さを特定のアスペクト比で割った幅に設定します。
これが私のコードです。
それは私にはうまくいくようです。
それがあなたのためにもうまくいくことを願っています。
アスペクト比を自分で設定するか、別の方法を使用できます。 まず、ウィンドウの幅と高さを、画像が適切にフォーマットされているように見えるビュー次元に設定します。 幅と高さを照会し、比率を計算します。 ウィンドウを元の幅と高さに戻します。 ユーザーは変更にまったく気づかないでしょうが、寸法は記録されます。