CSSでカレーパンマン作った

## そうだ、おそれないで
カレーアドベントカレンダーと言いつつ、カレーを絡めた記事が1つだけというサボりをしたわけですが、
やっと、、**カレー出てきます**

## 何作ったの

カレーパンマン作りました。
頑張ったところ褒めてください。


......（アウトプットするだけでも）褒めてください。

<p class="codepen" data-height="265" data-theme-id="default" data-default-tab="css,result" data-user="thugumi-ishimaru" data-slug-hash="YzPXWOL" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="カレーパンマン">
  <span>See the Pen <a href="https://codepen.io/thugumi-ishimaru/pen/YzPXWOL">
  カレーパンマン</a> by Thugumi Ishimaru (<a href="https://codepen.io/thugumi-ishimaru">@thugumi-ishimaru</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>


## 頑張ったところ
### カレーパンマンの口の波線

波線のいろんなやり方を試しました。

#### divを4つ作るまではやった。話はそこからだ。

カレーパンマンの口の波線を表現するために、まず、波線を表現するためのdivを4つ作りました。

<img width="600" alt="スクリーンショット 2019-12-05 22.31.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146512/287c34c6-b7fd-fd4c-7b14-1032d2f98121.png">

鎖。。。。。。
（border-radiusで楕円形にしています。今回は省きます。）

```html
<div class="curryPanMan_mouce">
   <div class="curryPanMan_mouceItem"></div>
   <div class="curryPanMan_mouceItem"></div>
   <div class="curryPanMan_mouceItem"></div>
   <div class="curryPanMan_mouceItem"></div>
</div>
```

そこから、CSSでいくつかやり方はあるのですが今回2種類ほど試しました。

#### オーバーレイする用のdivを用意して、愚直に重ねる方法

* 1.口をオーバーレイするdivを用意する
    * 例：`div.curryPanMan_mouceHide`
* 2.`.curryPanMan_mouceHide`を下部が丸くなるように修正
* 3.用意した4つの波線用の口の上にちょうど重なるように`.curryPanMan_mouceHide`を移動させる

##### 1.オーバーレイするdivを用意
`.curryPanMan_mouce`と並列に配置しました。

```html
<div class="curryPanMan_mouce">
   <div class="curryPanMan_mouceItem"></div>
   <div class="curryPanMan_mouceItem"></div>
   <div class="curryPanMan_mouceItem"></div>
   <div class="curryPanMan_mouceItem"></div>
</div>
<div class="curryPanMan_mouceHide"></div>
```

##### 2. `.curryPanMan_mouceHide`を下部が丸くなるように修正
以下のcssを書きます。

```scss

$curryMan:#E06B31;

.curryPanMan_mouceHide {
  width: 100%;
  height: 50px;
  background: $curryMan;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
}
```

<img width="427" alt="スクリーンショット 2019-12-05 22.25.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146512/0de3fdbd-966d-7003-fb03-946b818e85f6.png">

こんな感じのができたので、重ね合わせます。

##### 3. 融合

ついに、この鎖と融合します。
<img width="600" alt="スクリーンショット 2019-12-05 22.31.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146512/ecd6237c-edf4-402b-d0fd-f79451a7d778.png">


合体

<img width="567" alt="スクリーンショット 2019-12-05 22.31.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146512/9803ef71-60af-2635-dae9-1fbd577124a5.png">

これが実装方法1つ目

#### 波線用のdiv1つ1つに擬似要素を用意して、色を重ねる方法

* 1. 用意した4つの口に擬似要素を用意する
* 2. 擬似要素を1つ1つの口に重ねる

やってみよう

##### 1. 用意した4つの口に擬似要素を用意する

擬似要素を用意します。
今回は`before`でやります。

まず、擬似要素の親に対して`position:relative`を指定してあげます。
次に、擬似要素に対して、`position: absolute`を指定し、親子関係を明確にしておきます。

この時点でこんな感じ

<img width="543" alt="スクリーンショット 2019-12-05 22.41.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146512/f3d45c38-5974-f154-6aec-36a0b05a5eaf.png">

```scss
.curryPanMan_mouceItem {
    border: solid 8px #333;
    width: 100px;
    height: 30px;
    border-radius: 50%;
    position: relative;
}
```

```scss
.curryPanMan_mouceItem:before {
    content: "";
    display: block;
    width: 130px;
    height: 28px;
    background: #E06B31;
    border-radius: 30%;
    position: absolute;
    transform: scale(0.9);
}
```

##### 2. 融合
最後に、`before`の位置を調整しましょう。
重ねます。

```scss

.curryPanMan_mouceItem:before {
    content: "";
    display: block;
    width: 130px;
    height: 28px;
    background: #E06B31;
    border-radius: 30%;
    position: absolute;
    transform: scale(0.9);
    top: -10px; //追加
    left: -16px; //追加
}
```




<img width="616" alt="スクリーンショット 2019-12-05 22.43.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146512/5612f320-06b1-b13b-ebcc-00d7ee5edc4d.png">

口って難しい！！！！！！！！

### まとめ

~~どっちも結局口が微妙~~

今回は~~カレーパンマンを表現~~波線を書くということで2種類の実装方法の可能性を探ってみました。
こういうときはSVGでやった方が確実かつ楽なんだろうなと思いつつ、やってみたわけです。

「波線を書く」というだけでも、いろんな作り方があるしいろんな実装方法がありました。
今回は2種類だけ紹介しましたが、きっと、絶対にもっと楽かつ、確実な実装方法はあります！！！

実際に作る時は以下を頭の片隅にとどめとくと良いかもです。

* 実装方法は1つじゃない、いくつもある
* いくつかの実装方法のパターンを出して、それぞれのメリット・デメリットを考える
* メリット・デメリットを踏まえてどの実装方法が一番最適化を自分の中で理由を持っておこう

以上です！今日のカレーごちそうさまでした！！！！