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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2621閲覧

Railsで画像の一部を表示する

lyzmfeqpxs54

総合スコア237

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2018/01/16 06:52

編集2018/02/04 03:10

いつもお世話になります。

現在Railsでwebページを作成しております。
スマートフォンで撮影した画像を表示したいのですが、縦横どちらでも対応できるようにサムネイル自体は正方形で表示して、クリックすると全体が表示されるという形にしたいと考えております。
クリック時の全体表示はlightboxプラグインを用いてできました。

ここからが質問なのですが、縦横の長さが違う画像の場合、サムネイルを左上から限界まで正方形にして表示するにはどのようにすればよいのでしょうか(以下の画像ようなイメージです)。

イメージ説明

現状は以下のように画像を表示しており、縦横比関係なくこのサイズに収めるため、画像が歪んでしまうのです。

初歩的な質問で申し訳ございませんが
ご教示のほどお願いいたします。

追記
コードと状況を追記しました
イメージ説明

Ruby

1 2 3show.html.erb 4 5 6 <% post[:post_image].each do |pic| %> 7 <div class="post_image_pic"> 8 <%= link_to (image_tag "/uploads/#{params[:xxxx}/#{pic}", :size => 380, :style => "border:solid 2px #aaaaaa"), 9 "/uploads/#{params[:xxxx]}/#{pic}", :'data-lightbox' => "abc" %> 10  <%= link_to (image_tag ("buy.png"), :width => "150"), "/#{params[:xxxx]}/buy}" %> 11 </div> 12 <% end %> 13 14 15 16 17CSS 18 19.post_image_pic { 20 width: 380px; 21 margin: 0 8px 24px 0; 22 display: inline-block; 23 vertical-align: top; 24} 25 26

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

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

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

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

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

guest

回答2

0

ベストアンサー

意図した結果となっているかは判りませんが, img要素にobject-fit: coverobject-position: 0 0を指定したら如何でしょう.

CSS

1img{ 2 /*画像の表示サイズ*/ 3 width: 200px; 4 height: 200px; 5 /*画像表示の仕方*/ 6 object-fit: cover; 7 /*画像表樹の基準*/ 8 object-position: 0 0; 9}

参考:
https://developer.mozilla.org/ja/docs/Web/CSS/object-fit
https://developer.mozilla.org/ja/docs/Web/CSS/object-position

投稿2018/02/04 05:12

defghi1977

総合スコア4756

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

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

lyzmfeqpxs54

2018/02/06 13:13

ご回答ありがとうございます。 御教示いただいた方法で解決することができました。 また、何かありました際にご教示いただけますと幸いです。
guest

0

画像が縦長か横長かが Ruby コードで判定できると仮定します。

img 要素を用いず,div か何かの background-image に当該画像を表示することとします。

erb

1<div class="photo-thumbnail" style="background-image: url(<%= image_path(...) %>)"></div>

という感じでしょうか。そして,スタイルシートでまず

css

1.photo-thumbnail { 2 overflow: hidden; 3}

としておき,さらに追加で

css

1.photo-thumbnail--portrait { 2 background-size: 100% auto; 3} 4 5.photo-thumbnail--landscape { 6 background-size: auto 100%; 7}

というクラスも定義します。

そして,さきほどの ERB コードには書いてませんが,画像が縦長か横長かで div に上記の追加のクラスをつけてやります。

もっと素直な方法もあるかもしれませんが,とりあえず思いついたものを書きました。

コードは試してないので,もし間違っていたらすみません。うまくいかなかったら教えてください。

投稿2018/01/17 03:18

scivola

総合スコア2108

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

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

lyzmfeqpxs54

2018/02/04 03:09 編集

ご回答ありがとうございます。 返信が遅くなり大変申し訳ございません。 現在、追記したようにコードと画像を並べており、画像A〇に関してのみ適用したいと考えております。 画像のように並べたいので、background-imageで当てはめるという方法以外でご教示いただけないでしょうか。情報の提示が遅くなりほんとうに申し訳ございません。 何か方法をご存じあれば、ご教示いただけますと幸いです。 よろしくお願いいたします。
scivola

2018/02/04 04:57

A 系列にのみ適用したい,ということですよね。 なぜ background-image がダメだと思ったのですか?
lyzmfeqpxs54

2018/02/04 05:13

早速のご返答ありがとうございます。 現在、追記したようにコードを書いており、divで書いた場合に同じように、表示することが難しいと考えてしまったためです。
scivola

2018/02/04 08:13

link_to を使っているから div が書けない,ということでしょうか? link_to はブロック付きで使うこともできて, <%= link_to "/uploads/#{params[:xxxx]}/#{pic}", :'data-lightbox' => "abc" do %> <!-- このブロックの中に件の div 要素を書く --> <% end %> のようにすれば中身を自由にできます。
lyzmfeqpxs54

2018/02/06 13:15

ご回答ありがとうございます。 defghi1977様の方法でやりたいこと自体はできましたが、scivola様にご教示いただいたやり方も勉強のためにやってみたいと思います。 また何かありました際にお力添えをいただければと思います。 度々のご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問