☔
【Rails7系】背景に画像(background-image)を設定する
はじめに
現在Ruby on Railsを使用し、アプリ開発を行なっております。
背景が単色では物足りなく感じ、背景に画像を設定しました。
背景に画像を設定するのは久しぶりで、設定に少し手間取ったため投稿いたします。
参考になりましたら幸いです。
環境
Rails 7.1.3.4
実装方法
STEP1: 画像ファイルの配置
app/assets/images配下に画像ファイルを配置します。
私は、background.jpgと名前を指定しファイルを配置しました。
STEP2: app/assets/stylesheets配下のcssファイルに背景画像を設定する
app/assets/stylesheets/〇〇.cssファイルを作成し、そのファイル内に下記を記載します。
私はすでに別でcssファイルを作成していたため、今回はそのファイルに追記しております。
.background-image{
background-image: url(background.jpg);
background-size:cover;
}
-
こちらの記事にあるように、
background-image: url(background.jpg);
にシングルウォーテーションがあるとうまくいかないようです。(私は未検証です) -
background-size:cover;
を指定しないと、フルサイズでカバーしてくれないのでこちらも記載します。
STEP3: app/views/layouts/application.html.erbで、〇〇.cssファイルを読み込む
headタグ内で、先ほど作成した〇〇.cssファイルを読み込みます。
stylesheet_link_tag
の後にcssファイル名の.css
を除いた形で、cssファイルを指定します。
<head>
# app/assets/stylesheets/〇〇.cssを読み込む
<%= stylesheet_link_tag '〇〇', media: 'all' %>
</head>
STEP4: 背景画像を使用したい箇所で、divタブで囲む
一旦全てのファイルに背景画像を適用させたかったため、app/views/layouts/application.html.erbのbodyタグ内でdivタグで背景画像を指定しました。(<div class="background-image">
)
<body>
<div class="background-image">
<% if current_user %>
<%= render 'shared/after_login_header' %>
<% else %>
<%= render 'shared/before_login_header' %>
<% end %>
<%= render 'layouts/flash_messages' %>
<%= yield %>
</body>
最後に
他の方の記事を参考にさせていただきながら設定しましたが、異なる記載の箇所も散見されたので記事にしました。
もし誤り等あればご指摘いただけますと幸いです。
最後までご覧いただき、ありがとうございました。
Discussion