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

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

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

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

Q&A

4回答

4439閲覧

CSSでハートの枠線のみを表現する方法があれば教えて下さい。

退会済みユーザー

退会済みユーザー

総合スコア0

CSS

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

0グッド

0クリップ

投稿2016/07/31 05:03

編集2016/07/31 08:48

CSSで塗りつぶしのハートを表現する方法は調べれば出てくるのでわかるのですが、塗りつぶしなしの枠線のみを表現する方法がわかりません。
もしわかる方がいましたら教えて下さい。

塗りつぶしのハートを重ねる方法も以下のように試したのですが、曲線部分だけが少し太くなってしまうので、なんとか直せないかと思っています。

イメージ説明

HTML

1<div class="heart"> 2 <span class="heart-arrange"></span> 3</div>

CSS

1@mixin heart($size, $color) { 2 position: relative; 3 width: 100px; 4 height: 90px; 5 -webkit-transform: scale($size); 6 -moz-transform: scale($size); 7 -ms-transform: scale($size); 8 -o-transform: scale($size); 9 transform: scale($size); 10 11 &:before, &:after{ 12 position: absolute; 13 content: ""; 14 left: 50px; 15 top: 0; 16 width: 50px; 17 height: 80px; 18 background: $color; 19 -moz-border-radius: 50px 50px 0 0; 20 border-radius: 50px 50px 0 0; 21 -webkit-transform: rotate(-45deg); 22 -moz-transform: rotate(-45deg); 23 -ms-transform: rotate(-45deg); 24 -o-transform: rotate(-45deg); 25 transform: rotate(-45deg); 26 -webkit-transform-origin: 0 100%; 27 -moz-transform-origin: 0 100%; 28 -ms-transform-origin: 0 100%; 29 -o-transform-origin: 0 100%; 30 transform-origin: 0 100%; 31 } 32 33 &:after{ 34 left: 0; 35 -webkit-transform: rotate(45deg); 36 -moz-transform: rotate(45deg); 37 -ms-transform: rotate(45deg); 38 -o-transform: rotate(45deg); 39 transform: rotate(45deg); 40 -webkit-transform-origin: 100% 100%; 41 -moz-transform-origin: 100% 100%; 42 -ms-transform-origin: 100% 100%; 43 -o-transform-origin: 100% 100%; 44 transform-origin: 100% 100%; 45 } 46} 47 48 49.heart { 50 position: relative; 51 @include heart(0.3, red); 52 z-index: 1; 53 54 .heart-arrange { 55 display: inline-block; 56 position: absolute; 57 top: 0; 58 right: 0; 59 bottom: 0; 60 left: 0; 61 @include heart(0.9, white); 62 z-index: 10; 63 64 } 65 66}

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

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

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

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

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

kei344

2016/08/01 18:26

まだ質問が「受付中」になっていますが、いったんご自身の回答をもって「解決済」にされてはいかがでしょうか。
guest

回答4

0

みてていやけがさしそうですが

ではなく 曲線 を用いてハートを頑張ればいいと思います

(私はやりたくないレベル)

参考

投稿2016/07/31 08:55

編集2016/07/31 12:31
asahina_dev

総合スコア610

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

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

退会済みユーザー

退会済みユーザー

2016/07/31 11:58

ご回答ありがとうございます。 いただいた参考ページを読ませていただきましたが、本当にかなり複雑ですね。。 サイズや色などいろいろな組み合わせで使いたいと思っていて、CSSだけでは少し複雑になり過ぎてしまいそうなので、今回は画像を検討してみようと思います。 私の質問について考えていただいたのに申し訳ございません。 ご丁寧にお答えいただきありがとうございました。
guest

0

・色の反転などをさせたい
・すべてのパターンの画像を用意するのはしんどい(カラーコードで書き換えたい)
・好みのフォルムにしたい
を実現したいということでCSSで描画したいっていうことでしょうか。

CSSでということが重要であればあまりお望みの回答ではないかもしれませんが、
普通の画像じゃなくて、SVGを使ってみてはいかがでしょう?
SVGなら、strokeやfillの色をコードに記述しないで、CSS側で設定することができます。

これは私が作っているサイトのモックですが、上のふたつのアイコンはSVGです。
http://codepen.io/mayo31/pen/dMNavJ

CSSの145行目あたりで、色を指定しています。

投稿2016/07/31 12:51

NatsumiOki

総合スコア1298

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

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

0

そのハートの上に一回り小さい白いハートを重ねればいいんじゃないでしょうか。

面倒ならアイコンフォントを使っちゃうほうが速い気もします。

追記

html

1<div class="heart"> 2<div class='heart-inner'> 3</div> 4</div>

css

1.heart{ 2position: relative; 3width: 200px; 4height: 200px; 5-webkit-transform: rotate(45deg); 6-moz-transform: rotate(45deg); 7-ms-transform: rotate(45deg); 8-o-transform: rotate(45deg); 9transform: rotate(45deg); 10background-color: rgba(250,184,66, 1); 11} 12.heart:before, 13.heart:after{ 14position: absolute; 15width: 200px; 16height: 200px; 17content: ''; 18-webkit-border-radius: 50%; 19-moz-border-radius: 50%; 20-o-border-radius: 50%; 21border-radius: 50%; 22background-color: rgba(250,184,66, 1); 23} 24.heart:before{ 25bottom: 0px; 26left: -100px; 27} 28.heart:after{ 29top: -100px; 30right: 0px; 31} 32 33 34.heart-inner{ 35z-index: 10; 36position: relative; 37width: 190px; 38height: 190px; 39background-color: white; 40top: 5px; 41left: 5px; 42} 43.heart-inner:before, 44.heart-inner:after{ 45position: absolute; 46width: 190px; 47height: 190px; 48content: ''; 49-webkit-border-radius: 50%; 50-moz-border-radius: 50%; 51-o-border-radius: 50%; 52border-radius: 50%; 53background-color: white; 54} 55.heart-inner:before{ 56bottom: 0px; 57left: -100px; 58} 59.heart-inner:after{ 60top: -100px; 61right: 0px; 62}

投稿2016/07/31 05:33

編集2016/07/31 10:11
realizerS

総合スコア265

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

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

退会済みユーザー

退会済みユーザー

2016/07/31 08:50

ハートを2つ重ねる方法でもやってみたのですが、質問を編集して画像を添付した通り、曲線部だけが太くなってしまうという問題にぶつかってしまいました。 こちらの理由はわかりますでしょうか?CSSの内容も新しく添付し直しました。 可能であれば、CSSだけで対応したいと思っておりまして。
realizerS

2016/07/31 10:10

ごちゃごちゃしていますが、以下でどうでしょうか。 ```html <div class="heart"> <div class='heart-inner'> </div> </div> ``` ```css .heart{ position: relative; width: 200px; height: 200px; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); transform: rotate(45deg); background-color: rgba(250,184,66, 1); } .heart:before, .heart:after{ position: absolute; width: 200px; height: 200px; content: ''; -webkit-border-radius: 50%; -moz-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; background-color: rgba(250,184,66, 1); } .heart:before{ bottom: 0px; left: -100px; } .heart:after{ top: -100px; right: 0px; } .heart-inner{ z-index: 10; position: relative; width: 190px; height: 190px; background-color: white; top: 5px; left: 5px; } .heart-inner:before, .heart-inner:after{ position: absolute; width: 190px; height: 190px; content: ''; -webkit-border-radius: 50%; -moz-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; background-color: white; } .heart-inner:before{ bottom: 0px; left: -100px; } .heart-inner:after{ top: -100px; right: 0px; } ```
realizerS

2016/07/31 10:11

コメントでコードブロックって表示できなかったのですね。 解答に追記しました。
退会済みユーザー

退会済みユーザー

2016/07/31 11:56

こちら試してみましたが、うまくいきませんでした。 ハートをボタンとしてタップしたら色を反転するなどいろいろやりたいことがあり、CSSではかなり複雑そうになりそうなので、今回は画像を使うことを少し検討してみます。 本当にいろいろとありがとうご丁寧にお答えいただきありがとうございました。
guest

0

雑ですが。お勧めは「」です。

CSS

1#heart2 { 2 border: 1px solid rgba(150, 20, 230, 0.2); 3 height: 90px; 4 margin: 3em 1em 0; 5 position: relative; 6 width: 100px; 7} 8#heart2 > div { 9 border: 1px solid; 10 border-color: transparent red red transparent; 11 bottom: 0; 12 display: block; 13 height: 50px; 14 position: absolute; 15 transform: rotate(45deg); 16 transform-origin: 100% 100% 0; 17 width: 50px; 18} 19#heart2::before { 20 left: 34px; 21 transform: rotate(90deg); 22} 23#heart2::after { 24 border-color: red transparent transparent red; 25 transform-origin: 100% 100% 0; 26} 27#heart2::before, 28#heart2::after { 29 border: 1px solid; 30 border-color: red transparent transparent red; 31 border-radius: 50%; 32 content: ""; 33 height: 50px; 34 margin: 10px 0 0 9px; 35 position: absolute; 36 width: 50px; 37} 38 39#font { 40 color: red; 41 font-family: "游ゴシック","YuGothic","Hiragino Kaku Gothic ProN","Hiragino Kaku Gothic Pro","MS ゴシック"; 42 font-size: 100px; 43}

HTML

1<div id="heart2"><div></div></div> 2<div id="font">♡</div> 3```**動くサンプル:**[https://jsfiddle.net/5j10wxa7/1/](https://jsfiddle.net/5j10wxa7/1/)

投稿2016/07/31 09:02

kei344

総合スコア69407

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

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

退会済みユーザー

退会済みユーザー

2016/07/31 12:01

ご回答いただきありがとうございます。 いただいたもので枠線のみの表示ができることはわかったのですが、そちらを使って期待するものを実装するのはかなり苦労しそうなので、今回は画像を検討しようかと思います。 「♡」でもできることを知らず良い気づきだったのですが、フォルムがあまり好みではないので。。 いつもいろいろと教えていただき、本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問