LoginSignup
2
0

More than 3 years have passed since last update.

color_fieldとインラインでの擬似要素の表示について

Last updated at Posted at 2019-05-28

吹き出しの背景色をその時の気分で色を決めたい!

変更前がこちら

スクリーンショット 2019-05-29 21.07.38.png

やること

Articleモデルに色を登録するカラムcolor_1color_2を追加する

color_field

jqueryのカラーピッカーとかを使って色を登録しようかなんて思っていたところRailsが提供しているcolor_fieldというものを見つけた。

これで色を選択できる!こんなかんじ↓

画面収録-2019-05-29-1.32.03.gif

スクリーンショット 2019-05-29 1.27.09.png

_form.html.erb
  <tr>
    <th scope="row">吹き出し1</th>
    <td><%= f.text_field :balloon_1, size: "90x10"  %>
        <%= f.color_field :color_1 %>
    </td>
  </tr>
  <tr>
    <th scope="row">吹き出し2</th>
    <td><%= f.text_field :balloon_2, size: "90x10" %>
        <%= f.color_field :color_2 %>
    </td>
  </tr>

色の表示

<div class = "balloon1" style="background-color:<%= @article_.color_1 %>">
<div class = "balloon1" style="background-color:#b8e1f5">

スクリーンショット 2019-05-29 1.47.20.png

これだとまだ吹き出しの3角の部分の色がstyle.cssで指定したままの色なので未完成です。
この吹き出しのCSSはこのようなコードでできています。

style.css
.detail .article .balloon1{
  position: relative;
  padding: 20px;
  border-radius: 10px;
  background-color: #ffb1cd99;
  width: 75%;
  height: 25px;
}

/* 三角アイコン */
.balloon1::before{
  content: '';
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  left: -15px;
  top: 17px;
  border-right: 15px solid #ffb1cd99;
  border-top: 15px solid transparent;
  border-bottom: 15px solid transparent;
}

::beforeってのが擬似要素ってやつでこれのスタイル指定を別で行わなきゃいけないようです。

擬似要素ってなあに?って方はこちら↓
この方の記事がわかりやすかったです!
いろんな仕様の変更とかで:::が混じってわかりにくい記事も多いです
参考:擬似要素と擬似クラス

  <style>.balloon1::before { border-right: 15px solid <%= @article_.color_1 %>; }</style>
  <div class = "balloon1" style="background-color:<%= @article_.color_1 %>"><%= @article_.balloon_1 %></div>

スクリーンショット 2019-05-29 12.06.31.png

できた!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0