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

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

新規登録して質問してみよう
ただいま回答率
85.46%
非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

HTML

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

CSS

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

Q&A

1回答

1350閲覧

CSSを非同期で反映させたいです。

naoki1128

総合スコア3

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/09/24 02:13

編集2021/09/24 03:36

前提・実現したいこと

非同期でメッセージ機能を作っており、送ったメッセージにcssを適用しているのですが、
リロードしないとcssが反映されません。

該当のソースコード

html

1<html> 2 <head> 3 <title>****</title> 4 <%= csrf_meta_tags %> 5 <%= csp_meta_tag %> 6 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 7 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> 8 <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> 9 <link rel ="preload" href = "chat.css" > 10 </head>

html

1<div class="chat-container"> 2 <div class ="chat-title"> 3 <h1><%= @user.nickname %>さんにメッセージを送る</h1> 4 </div> 5 <div class="chat-row"> 6 <div class="message-area"> 7 <div class="col-xs-6"> 8 <!-- meassage tableは変えない --> 9 <table class="message table"> 10 <thead> 11 <tr> 12 <th style="text-align: left; font-size: 20px;"><%= current_user.nickname %></th> 13 <th style="text-align: right; font-size: 20px;"><%= @user.nickname %></th> 14 </tr> 15 </thead> 16 <% @chats.each do |chat| %> 17 <% if chat.user_id == current_user.id %> 18 <tbody> 19 <tr> 20 <th class="chat-message-left"><%= chat.message %></th> 21 <th class="chat-time-left"><%= time_ago_in_words(chat.created_at) %></th> 22 <th></th> 23 </tr> 24 <% else %> 25 <tr> 26 <th></th> 27 <th class="chat-message-right"><%= chat.message %></th> 28 <th class="chat-time-right"><%= time_ago_in_words(chat.created_at) %></th> 29 </tr> 30 </tbody> 31 <% end %> 32 <% end %> 33 </table> 34 </div> 35 </div> 36 <div> 37 <%= form_with model: @chat, remote: true do |f| %> 38 <div class="chat-form"> 39 <%= f.text_field :message, class:"message-form" %> 40 <%= f.hidden_field :room_id %> 41 <%= f.submit "SEND", class:"btn btn-sm btn-success chat-btn" %> 42 </div> 43 <% end %> 44 </div> 45 </div> 46</div>

js

1$('.message').append("<th><%= @chat.message %></th>"); 2$('.message').append("<th><%= time_ago_in_words(@chat.created_at) %></th>"); 3$('input[type=text]').val("")

css

1.chat-message-left{ 2 border-radius: 0%; 3 background-color: lightgreen; 4 width: 220px; 5 margin-left: 5px; 6} 7.chat-message-right{ 8 border-radius: 0%; 9 background-color: lightgreen; 10 margin-right: 5px; 11} 12.chat-time-left{ 13 margin-left: 5px; 14 font-size: 10px; 15 color: rgb(77, 77, 77); 16} 17.chat-time-right{ 18 margin-left: 5px; 19 font-size: 10px; 20 color: rgb(77, 77, 77); 21}

試したこと

https://tech.airis0.com/blog/seo-measures5-css-asynchronous-loading/
上記の記事を参考に、<link rel ="preload" href = "chat.css" >を追記したのですが、
非同期では反映させる事ができませんでした。
初歩的な質問ですいません。

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

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

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

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

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

maisumakun

2021/09/24 02:21

適用されるべきCSSはどれでしょうか?
naoki1128

2021/09/24 02:23

すいません。cssを追記いたしました。
maisumakun

2021/09/24 02:24

「チャット内の分も最初から適用しておく」では何かまずいのでしょうか?
naoki1128

2021/09/24 02:27

非同期でメッセージを送った段階で、そのメッセージにcssを反映させたいです。
guest

回答1

0

非同期でメッセージを送った段階で、そのメッセージにcssを反映させたいです。

それをするために「CSSを非同期で読み込ませる」という方法は不適当だと考えます(複数のメッセージが含まれるような状況で、あとのメッセージだけスタイルを変える、ようなことが不可能です)。

「CSSは事前に読み込ませておいて、送信が完了した段階でクラスを切り替えて適用するCSSを変更する」ような方法が適切だと考えます。

投稿2021/09/24 02:31

maisumakun

総合スコア145208

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

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

naoki1128

2021/09/24 02:35

ご回答ありがとうございます。 教えていただきたいのですが、送信が完了した段階でクラスを切り替えて適用するcssを変更とはどのように行えば良いのでしょうか。。。 学習を始めたばかりで初歩的な質問になってしまうかもしれませんが、教えていただけると幸いです。。。
maisumakun

2021/09/24 02:39

途中に書かれているJavaScriptコードは、いつどのようなタイミングで実行されるものですか?
naoki1128

2021/09/24 02:46

メッセージ送信を行なった段階で実行されます。
maisumakun

2021/09/24 02:52

そもそも、このJavaScript自体が妥当ではないですね。 (.messageは<table>タグなので、その直下に<p>を追加するということ自体がHTML的に不適切です)
yambejp

2021/09/24 02:57

CSSは常に適用されるはずです。 サーバーサイドで書かれた分を生のHTMLに書き起こして 動作が確認できるソースを提示した方がよいでしょう
naoki1128

2021/09/24 03:09

pタグの修正を行いました。
maisumakun

2021/09/24 03:15

問題は解決していません。<table>直下には<div>も置けません。 (というより、表内にある他のものと合わせないのはなぜなのでしょうか?)
maisumakun

2021/09/24 08:19

表内の他の行と合わせたクラスをかけて行を生成するようにすれば、勝手にCSSが適用されるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問