質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

9392閲覧

bootstrap4: Carouselのimgeを縦横同一比のままresponsibeにしたい

innjera

総合スコア132

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2016/11/21 03:20

編集2016/11/21 14:44

Bootstrap 4 / carouselを利用しています。
デフォルトでレスポンシブになっているのですが、ブラウザを小さくすると、画像は調整されるのですが、画像の背景部分が小さくならずそのままの縦サイズで残ってしまっています。

背景も写真と合わせてレスポンシブにしたいのですが、ご教示頂けますと助かります。
*フルwindow(これはok)
![イメージ説明]
*スマホ(写真はリサイジングされてますが、背景は元の高さが維持されており、写真とズレが生じています(背景は写真グレー部分))
イメージ説明
実現したいことのイメージは三井物産さんのHPのレスポンシブです。
http://www.mitsui.com/jp/ja/

html

1 <div id="myCarousel" class="carousel slide" data-ride="carousel"> 2 <ol class="carousel-indicators"> 3 <li data-target="#myCarousel" data-slide-to="0" class="active"></li> 4 <li data-target="#myCarousel" data-slide-to="1"></li> 5 <li data-target="#myCarousel" data-slide-to="2"></li> 6 </ol> 7 <div class = "carousel"> 8 <div class="carousel-inner" role="listbox"> 9 <div class="carousel-item active"> 10 <img alt="misaki-first" class="first-slide" src="/assets/lesson0-a6297374b549fee0b67975d255084dbb8bdff45c0a3bf4e48ba1ef712a77393f.jpg" /> 11 <div class="container"> 12 <div class="carousel-caption text-xs-left"> 13 <h1>フエイスヨガで美しい笑顔レッスン</h1> 14 <p>千村みさきのHP</p> 15 <p><a class="btn btn-lg btn-danger" href="#" role="button">お問い合わせはこちら</a></p> 16 </div> 17 </div><!--container--> 18 </div><!--carousel-item--> 19 <div class="carousel-item"> 20 <img alt="misaki-second" class="second-slide" src="/assets/lesson0-a6297374b549fee0b67975d255084dbb8bdff45c0a3bf4e48ba1ef712a77393f.jpg" /> 21 <div class="container"> 22 <div class="carousel-caption"> 23 <h1>スマイルラインで話すボイスレッスン</h1> 24 <p>千村みさきのHP</p> 25 <p><a class="btn btn-lg btn-danger" href="#" role="button">詳しくはこちら</a></p> 26 </div> 27 </div><!--container--> 28 </div><!--carousel-item--> 29 <div class="carousel-item"> 30 <img alt="misaki-third" class="second-third" src="/assets/lesson0-a6297374b549fee0b67975d255084dbb8bdff45c0a3bf4e48ba1ef712a77393f.jpg" /> 31 <div class="container"> 32 <div class="carousel-caption text-xs-right"> 33 <h1>こうすれば好印象、笑顔で生き生きレッスン</h1> 34 <p>千村みさきのHP</p> 35 <p><a class="btn btn-lg btn-danger" href="#" role="button">お仕事以来</a></p> 36 </div> 37 </div><!--container--> 38 </div><!--carousel-item--> 39 <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"> 40 <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 41 <span class="sr-only">Previous</span> 42 </a> 43 <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"> 44 <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 45 <span class="sr-only">Next</span> 46 </a> 47 </div><!--carousel-inner--> 48 </div><!--carousel--> 49 </div><!--carousel slide-->

css

1.carousel { 2 margin-bottom: 4rem; 3} 4.carousel-caption { 5 z-index: 10; 6} 7.carousel-item { 8 background-color: #777; 9 overflow: hidden; 10 height: 30rem;/* トリミングしたい枠の高さ */ 11 position: relative; 12} 13.carousel-item img { 14 position: absolute; 15 top: 50%; 16 left: 50%; 17 -webkit-transform: translate(-50%, -50%); 18 -ms-transform: translate(-50%, -50%); 19 transform: translate(-50%, -50%); 20 width: 100%; 21 height: auto; 22} 23.carousel .item>img { 24 position: absolute; 25 top: 0; 26 left: 0; 27 max-width: 100%; 28 height: auto; 29} 30.carousel-inner > .item > img { 31 position: absolute; 32 top: 0; 33 left: 0; 34 min-width: 100%; 35 height: 100%; 36} 37.carousel-indicators { 38 top: 1.5rem; 39 right: 1.5rem; 40 bottom: auto; 41 left: auto; 42 width: 1rem; 43 margin-left: 0; 44} 45.carousel-indicators > li { 46 margin-bottom: .25rem; 47}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gin

2016/11/21 04:10

参考の画像には「画像」いないですよね?背景のことですか?
innjera

2016/11/21 10:51

いつも有難う御座います。画像と背景、両方の意味でした。失礼しました。
guest

回答2

0

ベストアンサー

とりあえずコード上にいるimgは、見た感じ.carousel-itemheight: 32remを取っちゃえばいいように思えますが、取ったら崩れます?
ほかで指定している可能性があるならheight: auto;で。

css

1.carousel-item { 2 /*height: 32rem;*/ 3 background-color: #777; 4}

投稿2016/11/21 04:12

gin

総合スコア2722

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

innjera

2016/11/21 10:53

heightを取ると見ると、写真がフルサイズで表示されてしまいました。。。確かにレスポンシブですが、さらに大きく表示されてしまいました・・・
gin

2016/11/21 11:59

縦長の画像ですか?? > フルwindow(これはok) ってアタマの先しか見えてないですけどOKなんです??
innjera

2016/11/21 12:16

縦長の画像です。 (頭の部分しか見えてないのは、それはそれで問題なのですが、サイズの件とは別問題と思い、まずは枠を直してから写真の見え方を修正しようと思っていました。。)
gin

2016/11/21 12:19

heightをautoにしたら画像の高さに準じるようになります。 三井物産の画像は縦長じゃないですよね。
innjera

2016/11/21 12:26

有難う御座います。つまりは元画像に問題があって、横長の画像を使用する必要があるということですよね。
gin

2016/11/21 12:31

画像に問題があるかどうかはなんとも言えません。 PC版のスライダーって横長ですよね? どうするつもりだったんです?? 横長にする前提で縦長の画像を使用していたのなら問題(ってほどでもない?)ですが…
innjera

2016/11/21 12:48

質問がわかりにくく申し訳ありません。今しがた、横の写真を使用したところ、問題点がよりクリアになりましたので、大変恐縮ですが、質問文にお目通し頂き、修正ポイントのご指摘頂けますと大変有難いです。宜しくお願い致します。
gin

2016/11/21 12:51

背景いります? あと画像縦中央にいますね。 私が夕方試した時は上についてましたが…
innjera

2016/11/21 13:04

写真の位置はhttp://www.tam-tam.co.jp/tipsnote/html_css/post10099.htmlを見て先ほど修正しました。 背景。。。。た、確かに、不要です。。ちょっと自分でもがいて見ます!ヒントを有難う御座います。
gin

2016/11/21 13:09

一応、三井物産の解説(?)をしておくと、PC版のときだけ画像と文章をabsoluteで重ねてますね。 SP版では解除されて、画像が上の文章が下の通常並びになってます。
innjera

2016/11/21 13:33

背景を入れているのが.carousel-itemなのですが、これを消すと写真そのものが消えてしまいました。。。。 三井物産さんのは確かに文書の配置が変わっていますね。。私にはレベルが高く、いかんともし難くなってきました。。。
gin

2016/11/21 13:36

いや、箱は残して背景だけ消すんですよ~ 「background-image:none;」とかで。
gin

2016/11/21 13:41

あと三井物産のも特に難しく考える必要はなく、まずは画像上で文章下のSP版の見た目を作ります。 それをPC版で「.carousel-item」を「position:relative;」にして起点とし、画像と文章を「position:absolute;」で調整してるだけです。
innjera

2016/11/21 13:56

有難う御座います。「background-image:none;」で背景は消えましたが、写真の外側の枠を設定している「carousel-item」に高さが残っているので、右側と左側に設定しているボタン(灰色部分)や白のボタン3つ(右上)ははみ出てしまいます。(写真、差し替えました) height: auto;にすると写真が消えてしまいます。。。
gin

2016/11/21 14:02

「height: auto;」で消えるのは「position:absolute;」などを指定しているからです。 これって三井物産のを真似したんでしょうか? 真似するなら最後までキッチリ真似しないと崩れちゃいますよ~ ↓このあたりをいったんごっそりコメントアウトしてみてください。 ------- .carousel-item img { /* position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%);*/ width: 100%; height: auto; } -------
gin

2016/11/21 14:09

あ、PC版の表示が問題ないようだったらSP版はこれを入れてください。 ------- .carousel-item img { position: static; top: 0; left: 0; -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); width: 100%; height: auto; } ------- モバイルファーストで組んでるならwidthとheightだけでいいですが。
innjera

2016/11/21 14:29

三井物産を真似したのではなく、使用する写真を、真ん中を中心にして表示したかったので、 http://www.tam-tam.co.jp/tipsnote/html_css/post10099.html を参考にしました。 ご教示いただいたやり方ですと、(PCだと)写真の下部が切り取られた形で表示される(SPだと)写真は全て表示されますが、下部にのですが(「部PCで見た際に、写真上部から固定されてしたに表示されているので、 「<a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span>」 が下部にはみ出てしまいます。これに高さを設定すれば良いのでしょうか??
gin

2016/11/21 14:39

CSSはPC版とSP版両方調整しないとダメですよ? PC版は元のままでSP版はposition: static;にしたやつを指定です。 あと左右のは画像の大きさに合わせたいのであればJSで画像の高さを取って入れ込む感じですね~
innjera

2016/11/21 22:56

なるほど、JSで調整していく必要があるわけですね。有難う御座いました!
guest

0

解決されたようですが、縦横比を保ったまま縦長も横長も画面いっぱいに、は下記のようにすれば実現できそうです。

CSS

1.carousel-item { 2 height: 70vh; 3} 4.carousel-item > img { 5 position: absolute; 6 left: 50%; 7 top: 50%; 8 -webkit-transform: translate(-50%, -50%); 9 -moz-transform: translate(-50%, -50%); 10 -ms-transform: translate(-50%, -50%); 11 -o-transform: translate(-50%, -50%); 12 transform: translate(-50%, -50%); 13 max-height: none !important; 14 max-width: none !important; 15 min-height: 100%; 16 min-width: 100%; 17 18} 19```**動くサンプル:**[https://jsfiddle.net/5wh987ra/](https://jsfiddle.net/5wh987ra/)

投稿2016/11/22 02:53

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

innjera

2016/11/22 23:56

有難う御座います!!!JSに手を加えずにやるやり方を求めていたので、まさに、でした!本当に有難う御座います。
gin

2016/11/23 02:51

あれ? 画像切れても要素いっぱいに表示でよかったんですか?? てっきり画像全体表示と思ってました…<求めていた三井物産もそうなので なので縦長はPCだとそれだけでスクロールが出るので横長とか言ってたんですw
kei344

2016/11/23 03:04

To: ginさん その場合 min-height min-width を消して max-height: 100% !important; max-width: 100% !important; か、 /**/.carousel-item > img { /**/ display: block; /**/ height: 100% !important; /**/ margin: 0 auto; /**/ object-fit: contain; /**/} こんなかんじで。
gin

2016/11/23 03:26

画像の全体を表示するってやつですかね? 明日試してみますね~^^ object-fit: contain;はcoverのほうがいいですかね。containだと画像が切れちゃうので… でもいろいろ厄介なんですよね~ 横長画像だと小さくすると文字が中途半端に被るから画像に被らないようにしてやらないとだろうし、左右のコントローラーも画像の範囲だけがいいってことですし…
gin

2016/11/23 03:49

寝起きだといろいろ言葉足らずでいかんな… 無論一部ってことは理解しています~ kei344さんは汲み取ってくれてるとは思いますが^^;
kei344

2016/11/23 03:54

To: ginさん > containだと画像が切れちゃうので… 切れないと思いますよ。 https://jsfiddle.net/5wh987ra/1/ > でもいろいろ厄介なんですよね~ 「こう書けばできるのでは」を提示したまでです。
kei344

2016/11/23 03:56

> 一部ってことは理解しています なんのことでしょう。
innjera

2016/11/23 04:17

kei344さん、ginさん いつも有難う御座います!私のレベルが低いこともあり、質問の仕方が不明瞭で色々と誤解を与えてしまっているのだと思います。申し訳ありません!この手のデザインは元の写真の問題もあり、結構ややこしいことはよく分かりました。 お2方のアドバイスにてとてもcssの理解が深まっております。やりたいことも実現できておりますので、引き続き宜しくお願い致します!!!
gin

2016/11/23 04:20

あ、width指定なしでheightのみ指定でしたね。 > 一部 画像配置の部分だけで、厄介って言った部分に関しては当り前ですが含まれていないということですー 「「こう書けばできるのでは」を提示したまでです。」これはもちろん承知しておりますと。 別にそこで書かなくてよかった余計な独り言なのです… 言葉まだ足りてないですが、悪気は100%ないので気分を悪くされていたらすみません!
kei344

2016/11/23 04:40 編集

> あ、width指定なしでheightのみ指定でしたね。 width指定しても大丈夫です。(というかBootstrapで指定されています) (自分で書いておいてあれですが、とりあえず object-fit はもう少しブラウザ対応が進んでからかな、とは思います) > 悪気は100%ないので気分を悪くされていたらすみません! 別に何も思っていませんよ、何のことだろう?と不思議になっただけなので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問