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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

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

Q&A

解決済

3回答

2758閲覧

2色のリボンをCSSで作る、最も良い方法を教えてください。

sascha

総合スコア16

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

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

0グッド

1クリップ

投稿2017/01/13 05:38

編集2017/01/13 05:41

イメージ説明

CSSで画像のような背景を作りたいです。

画像をそのまま使う以外で、どの方法が一番スマートですか?

背景を3色にしても擬似要素でつける三角を2色ずつには分けにくいし、そもそも3色にできるのか謎です。
borderのみで色分けする方法は、画像の灰色の部分をどうしたら良いかわかりません。
この形を大小で2つ作って重ねる、というのが今のところ思いついたわかりやすそうな方法です。

色々検索したり試したりしつつ考えているうちにだんだんよくわからなくなったので、
もっとスマートな方法があれば提案お願いします。
このような形を解説したサイトがあれば、それを紹介してもらうだけでも構いません。

回答よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

background: linear-gradientでストライプ柄にするのはどうでしょうか
以下のようなサイトを利用すると簡単に作れますよ
http://www.colorzilla.com/gradient-editor/

html

1<div class="test">aaaaaaaaaa</div>

css

1.test{ 2 width:200px; 3 height:50px; 4 background: linear-gradient(to bottom, #009e90 16%,#009e90 16%,#bcbcbc 16%,#bcbcbc 77%,#bcbcbc 77%,#bcbcbc 77%,#009e90 77%,#009e90 77%); 5}

↓コメントを2つの方法を追加

  1. 背景色と同じ色の三角を重ねてリボン型にする

背景色によって三角の色を変えないといけませんが記述は少ないです。

css

1.test { 2 height:100px; 3 width:250px; 4 position: relative; 5 background: linear-gradient(to bottom, #009e90 23%,#009e90 23%,#bcbcbc 23%,#bcbcbc 77%,#bcbcbc 77%,#bcbcbc 77%,#009e90 77%,#009e90 77%); 6} 7 8.test:after{ 9 content: ""; 10 position: absolute; 11 top: 0; 12 right: 0px; 13 height: 0; 14 width: 0; 15 border: 50px solid transparent; /*.testのheightの半分*/ 16 border-right-color: #fff; 17} 18
  1. 平行四辺形を2つ作ってリボンの端を作る

擬似要素を2つ作る分記述が増えますが端が透過されているので背景が画像でも問題なし。

css

1.test { 2 height:100px; 3 width:250px; 4 position: relative; 5 background: linear-gradient(to bottom, #009e90 23%,#009e90 23%,#bcbcbc 23%,#bcbcbc 77%,#bcbcbc 77%,#bcbcbc 77%,#009e90 77%,#009e90 77%); 6} 7 8.test:after{ 9 content: ""; 10 position: absolute; 11 top: 50px; 12 right: -25px; 13 height: 50px; 14 width: 50px; 15transform:skewX(45deg); 16background: linear-gradient(to top, #009e90 46%,#009e90 46%,#bcbcbc 46%,#bcbcbc 100%,#bcbcbc 100%); 17} 18 19.test:before{ 20 content: ""; 21 position: absolute; 22 top: 0; 23 right: -25px; 24 height: 50px; 25 width: 50px; 26transform:skewX(-45deg); 27background: linear-gradient(to bottom, #009e90 46%,#009e90 46%,#bcbcbc 46%,#bcbcbc 100%,#bcbcbc 100%); 28}

投稿2017/01/13 05:57

編集2017/01/13 10:29
koronatail

総合スコア433

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

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

sascha

2017/01/13 08:08

早速の回答ありがとうございます! 16%のところを23%にしたら理想に近いストライプにできました! ただ、この形に:afterで、borderで白い三角形を作ってくっつけて、リボンに見せようとしていますが、うまくいきません...。 調べると、リボンの裂け目の部分を透明にするとか色々方法があるようですが、どの方法が一番わかりやすいでしょうか?
koronatail

2017/01/13 10:16

申し訳ありません質問内容をよく見ていませんでした・・・・。 リボン型にするcssを回答に追記しました。 白い三角でいいのであればそれが一番楽です。 追記した内容もストライプ柄の要素に白い三角を重ねたものになっています。 三角の部分を透明にしようと思ったら難しいと思います。 試してないですが平行四辺形型の擬似要素をストライプ柄にして上下に重ねることになるでしょうか。
koronatail

2017/01/13 10:30

三角の部分が透明なリボンもできたので追記しました。記述が増えますがこっちのが使いやすい気がします。 保守性も考えて使い分けてください。
sascha

2017/01/13 14:32 編集

ソースまでご丁寧にありがとうございます!! 平行四辺形というのがよくわかりませんでしたが、縦方向のリボンにカスタマイズしてみたら仕組みが理解できました! とても勉強になりました。本当にありがとうございます。
guest

0

もう解決してますが、こんな方法も。%は適当です。

CSS

1.ribon{ 2 height: 40px; 3 width:500px; 4 background-color: #bebdbc; 5 border-style: solid; 6 border-width: 20px 0; 7 border-color: #4cb4af transparent; 8 position: relative; 9} 10.ribon::after{ 11 position: absolute; 12 height:0;width:0; 13 top:-20px;right:0; 14 border-style: solid; 15 border-width: 40px 40px; 16 border-color: transparent white transparent transparent; 17 content:''; 18}

投稿2017/01/14 02:23

NS-DOS

総合スコア110

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

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

sascha

2017/01/14 02:28

回答ありがとうございます!
guest

0

投稿2017/01/13 06:01

toutou

総合スコア2050

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問