PHPとCSS 吹き出し内の背景色をランダムに変更するには
解決済
回答 1
投稿
- 評価
- クリップ 1
- VIEW 1,775
前提・実現したいこと
度々質問させていただいてすみません!今回は、コメントが投稿されると、表示されるスレッドを吹き出しにして、その背景色を投稿に合わせてランダムに色を変えて表示する という処理をしたいと考えています。ランダムに選んだ色は投稿時に、mySQLに色番号をinsertして、SQL文で出力されたものを使用しようと思っているのですが、まずはその前の表示テストで、スレッドの背景の変更は出来ているのですが、吹き出しのはじの三角部分の色のところの処理の仕方がわかりません。
吹き出しのやり方はネット上で公開されているものを使わせていただきました。
該当のソースコード
.bubble {
display:inline-block;
position: relative;
padding:1em;
border-radius:15px;
}
.bubble:after {
position: absolute;
content: " ";
height: 0;
width: 0;
}
/* 左三角半分 */
.bubble-half-left:after {
right: 100%;
top: 10%;
border-top:10px solid ;
border-left:10px solid transparent;
}
//--------------------------------------------------------------
表示部分
<?php
$var = array();
$var = array('#e4d2d8','#d3cfd9','#e8d3c7','#e0ebaf');
$result = $var[mt_rand(0, count($var)-1)];
?>
<div class="bubble bubble-half-left" style="background:<?php echo $result?>">
あいうえおかきくけこ</div>
試したこと
CSSの、bubble-half-left:afterの中身をbubble:afterの中に一緒に入れてみたりしましたが、三角部分は真っ黒になります。
うまく中央部分と色を連動させることって出来ますでしょうか?
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
三角部分はborder-color
で指定してください^^
<div class="bubble
に背景色用のサブクラスを設けて指定色毎にCSSを書いて置いて
ランダム抽出あるいはDBから選出した値に合わせて classを追加する方がいいとおもいます。
<div class="bubble bubble-half-left pink">
<div class="bubble bubble-half-left violet">
<div class="bubble bubble-half-left orange">
<div class="bubble bubble-half-left yellow">
.pink{
background-color:#e4d2d8;
}
.pink:after {
border-right: 10px solid #e4d2d8;
}
.violet{
background-color:#e4d2d8;
}
.violet:after {
border-right: 10px solid #e4d2d8;
}
.orange{
background-color:#e8d3c7;
}
.orange:after {
border-right: 10px solid #e8d3c7;
}
.yellow{
background-color:#e0ebaf;
}
.yellow:after {
border-right: 10px solid #e0ebaf;
}
:after部分訂正しました! ごめんなさい><;;
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/05/04 16:58
2016/05/04 17:07
ご指摘ありがとうございます..♪
.pink:after {
border-top: 10px solid #e4d2d8;
}
でダイジョブだと思います^^;;;;
2016/05/04 17:14
おっちょこちょいですみません!
.pink:after {
border-right: 10px solid #e4d2d8;
}
2016/05/05 12:12
ご回答くださりどうもありがとうございます!
なるほど~!ちょっとした発想の転換なのですね。私にはまだまだそれは出来ないので、ほんとに勉強になりました!
で、コードも1例だけで良かったのに、全部書いてくださりとても感謝です!
CSSの方はコピペさせていただきまして(colorはborder-topで良かったんです)、
HTMLとPHPの方は、
<?php
$var = array();
$var = array('pink','violet','orange','yellow');
$result = $var[mt_rand(0, count($var)-1)];
?>
<div class="bubble bubble-half-left <?php echo $result; ?>">
あいうえおかきくけこ</div>
としたら無事にうまく出来ました~~~!!
ほんとにどうもありがとうございました!また何かありましたらよろしくお願いいたします~!
>kei344さん
いつも的確なご回答をくださりどうもありがとうございます!
CSSの方もちゃんと勉強されててほんとに素晴らしいです!
また何かありましたらよろしくお願いいたします!
2016/05/05 15:03
つたない説明でごめんなさい
今後ともよろしくお願いします…♪