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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

5366閲覧

image_tagとbackground-image:urlを組み合わせて使いたいです。

s.k

総合スコア423

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/12/01 07:12

###前提・実現したいこと
railsにおいて、背景画像をimage_tagとbackground-imageを組み合わせて表示したいです。

以下の条件を満たすためです。

【条件】
①表示する画像の縦横比は元の比と同じにすること。
②幅⁼高さ,幅≠高さ(縦長,横長)に関わらず一定の枠内に収め、余白を残さないように表示すること。

###書き出し

以下のコードだと画像が表示されません…

<div style="background-image:url('<%= image_tag(@user.image.url) %>')"></div>

上記①,②の条件を満たすためにはbackground-image:urlを使うことがベストプラクティスであるとご指摘いただきました。

###実行手順
①,link_toブロックを作成。
②,①のブロック内に<div></div>を挿入。
③,<div>内に**<%= image_tag(@user.image.url) %>を引数にとるbackground-image:url**を挿入。

①,link_toブロックを作成。

<%= link_to current_user do %> <% end %>

②,①のブロック内に<div></div>を挿入。

<%= link_to current_user do %> <div></div> <% end %>

③,<div>内に**<%= image_tag(@user.image.url) %>を引数にとるbackground-image:url**を挿入。

<%= link_to current_user do %> <div style="background-image:url('<%= image_tag(@user.image.url) %>')"></div> <% end %>

###結果の予想
形式的には背景画像ですが、link_toブロックで囲んでいますので、実質的には、リンク画像が表示される予想です。

###実際の結果

div枠内に以下のようなリンクが出てくるだけでした。

')">

###ステップ明記

③の引数の記述方法に誤りがあると思っています。
引数を**'<%= image_tag(@user.image.url) %>'から/images/icons/hoge.png****/uploads/user/image/1/thumb_unnamed.jpg**に変換しても表示されませんでした。

image_tagとの組み合わせではなくそれ以前の問題の可能性があります…

###文献の引用
Rails4ではbackground:url("assets/hoge.png")の書き方は動かない話

私の場合は多少ケースが異なるかと思いましたが試してみました。

###環境 ――

gem 'rails', '4.2.5' gem 'carrierwave', '0.10.0' gem 'mini_magick', '3.8.0'

ご助言お願いします。

###コードまとめ

<div class="user-show-icon-cover"> <div class="user-show-icon-information"> <a href="" style="background-image:url(/uploads/user/image/1/thumb_unnamed.jpg)"></a> <%= link_to current_user do %> <%= image_tag(@user.image.url, :alt => "アイコン", :class => "user_show_image") %> <% end %> </div> </div>

CSS

1.user-show-icon-cover { 2 position: relative; 3 height: 200px; 4 width: 200px; 5 border: 5px solid #000; 6 border-radius: 5px; 7 overflow: hidden; 8 box-sizing: border-box; 9} 10.user-show-icon-information 11{ 12 width: 100%; 13 height: 100%; 14} 15.user-show-icon-information a 16{ 17 display: block; 18 width: 100%; 19 height: 100%; 20 background-size: cover; 21 background-repeat: no-repeat; 22 background-position: center center; 23} 24

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

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

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

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

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

gin

2016/12/02 02:27

想像ですけどimage_tagってimg要素を生成するやつですよね?なので③はこうなって「<div style="background-image:url('<img src="aaaaa">')"></div>」aaaaaの後ろの「">」でdivが閉じられて「')">」がテキストとして出てるっぽいですね。
s.k

2016/12/02 03:25

ginさん ありがとうございます!生成するやつです!なるほど…
guest

回答1

0

ベストアンサー

上記①,②の条件を満たすためにはbackground-image:urlを使うことがベストプラクティスであるとご指摘いただきました。

そうかなぁ。

下記質問に回答したコードでも出来ると思います。

【HTML - swiper スライダーの要素の高さ(58584)|teratail】
https://teratail.com/questions/58584

投稿2016/12/20 18:33

kei344

総合スコア69407

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

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

s.k

2016/12/21 01:14

うおおおおおお! object-fit: cover; あたりですかね? やってみます!
s.k

2016/12/21 01:22

object-fitでまずできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問