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

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

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

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

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

CSS

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

Q&A

解決済

3回答

2607閲覧

xxx.html.erbで, pタグ内の複数の要素のうち特定の物にだけcssを適応したいがやり方がわかりません.

sasaharukimedes

総合スコア27

Ruby

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

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

CSS

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

0グッド

0クリップ

投稿2020/07/01 08:08

前提・実現したいこと

現在webアプリを開発中で, その中でレイアウトの問題にぶつかったため質問させていただきたいと思いました. タイトルのとおりなのですが, Railsで開発を行っており, テンプレのhtml.erb内でpタグの中に複数の要素を入れており, その中の一部分にだけcss(具体的にはtext-align)を適応したいです.

発生している問題・エラーメッセージ

エラーではないのですが, 現在の状況だと, pタグ内の全てに同じcssが適応されていますが, textalignだけは個別に(数種類)適応させたいのです.

該当のソースコード

show.html.erb

<div class="main posts-show"> <div class="container"> <div class="posts-show-item"> <p> <%= @post.dear %> *これにtext-align: left <br> <br> <%= @post.content %> *そのまま <br> <br> *試したことに書いておいた, pタグは各要素を挟む形でこんな感じで書きました.一つだけ例をあげるとこんな感じでやりました *<p class = "xxxx"> <%= @post.from %> ここに*text-align: right *</p> <br> <%= @post.created_at.to_s(:datetime_jp) %> ここに*text-align: right </p> </div> </div> </div>

posts.css

.posts-show form { display: inline; } .posts-show-item { padding: 30px; background-color: white; box-shadow: 0 2px 6px #c1ced7; overflow: hidden; background-image: url(/ocean-letter.jpeg); background-size: cover; background-repeat: no-repeat; } .posts-show-item img { width: 60px; height: 60px; border-radius: 40%; box-shadow: 0 2px 6px #c1ced7; vertical-align: middle; object-fit: cover; } .posts-show-item .post-user-name a { vertical-align: middle; font-size: 24px; margin-left: 15px; } .posts-show-item p { font-size: 20px; margin: 20px 0; color: #FF9933; background-image: linear-gradient(180deg, #FFEACE 99%, #ced4da 99%, #646464 100%); background-repeat: repeat-y; background-size: 100% 2.4em; line-height: 2.4; } .post-time { color:#FF9933; margin: 10px; text-align: right; background-image: repeating-linear-gradient( #FFEACE, #FFEACE calc(2.0rem - 3px), #ced4da calc(2.0rem - 1px), #ced4da 1.5rem, #FFEACE 1.5rem ); background-origin: content-box; background-clip: content-box; background-attachment: local; }

試したこと

Pタグを間に挟んだりはもちろんしたのですが,そうすると各要素(dear, content, fromのそれぞれの間)に空白ができてしまって, 思っているレイアウトにはならなくなってしまいました.

補足情報(FW/ツールのバージョンなど)

コード上に説明を書いたほうがイメージが共有されるかと思い少し書き込みがあります. *マークのところは, 書き込みですので, ゴチャついてしまっていますがご容赦ください. もし邪魔なら, 消しますので.
Ruby2.6.5, Rails 6.0

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

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

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

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

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

guest

回答3

0

ベストアンサー

html

1<p> 2 <span><%= @post.dear %></span> 3 <span><%= @post.content %></span> 4 <span><%= @post.from %></span> 5 <span><%= @post.created_at.to_s(:datetime_jp) %></span> 6</p>

css

1.posts-show-item p span { 2 display: block; 3 margin-bottom: 2em; 4} 5.posts-show-item p span:first-child { 6 text-align: left: 7} 8.posts-show-item p span:nth-child(3) { 9 text-align: right; 10} 11.posts-show-item p span:nth-child(4) { 12 text-align: right; 13 margin-bottom: 0; 14}

spanで囲い spanをblockにしておいて、

  1. 個別にtext-align をかけます
  2. <br><br>があると煩雑になってしまうので下マージンで間隔を調整します
    必要に応じ個別の調整も可能ですし^^

こんな感じでどうでしょう?

投稿2020/07/01 11:10

-millmill-

総合スコア674

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

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

sasaharukimedes

2020/07/02 05:57

@-millmill- さん 回答ありがとうございます. いくつかコメントを頂いた中で, レイアウトのイメージ通りにしやすく, 何よりコードが理解しやすかったためベストアンサーにさせていただきました!ありがとうございました, これからも勉強頑張ります.
guest

0

dearが何かわかりませんが、1つの意味のある段落であれば、シンプルにpタグをもう一つ追加する形がHTML的に好ましいような気がします。

html

1 <div class="posts-show-item"> 2 <p class="dear"> 3 <%= @post.dear %> *これにtext-align: left 4 </p> 5 <p class="content"> 6 <%= @post.content %> *そのまま 7

css

1.posts-show-item p.dear { 2 test-align: left;//そもそも書かなくてもいいかも 3 //必要があれば追加 4} 5 6.posts-show-item p.content { 7 font-size: 20px; 8 margin: 20px 0; 9 : 10} 11

投稿2020/07/01 10:34

no1knows

総合スコア3365

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

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

sasaharukimedes

2020/07/02 05:59

@no1knowsさん 回答ありがとうございました. cssでの指摘ありがとうございました, 確かにleftはいらなかったです. 他の方のご意見を参考にさせていただきましたが, 助かりましたありがとうございました.
guest

0

spanタグを使うのはどうでしょうか?

erb

1<%= tag.span @post.dear, style: "text-align: left" %>

投稿2020/07/01 08:38

編集2020/07/01 08:40
asm

総合スコア15147

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

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

sasaharukimedes

2020/07/02 06:00

@asmさん いつも知恵を貸してくださってありがとうございます. 他の方の回答ですが, spanタグをその方も使っていらっしゃったので, 利用させていただきました. また, 困ったときはよろしくおねがいします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問