ディープブルーデー

それでいーの

CSSで雪だるまを描いた思い出

ツイートの「CSSで雪だるま描いて」は2014年頃にCodeIQで出題された問題で、要約すると「HTML5のdiv要素1つとCSS3だけを使って雪だるまを描いてください」というものでした。CSSで絵を描く世界なんて当時は知らなかったのでCSSの解説サイト首っぴきで興味深く挑戦したのを覚えています。当時のCSSコードが残ってたので、このブログのデザインCSSに埋め込んで、以下にそのときに描いた雪だるまを再現させてみました(ブラウザやスマホ等の環境の違いによっては見れないかもしれません)。htmlファイルとして単独で実行できるようにHTMLコードも載せておきます。









<!DOCTYPE html>
<head>
  <meta charset="utf-8"/>
  <title>snowman</title>
  <style>
    /* body and mouth */
    .snowman {
      display : block; 
      position: relative;
      left    :   0px;
      top     : 100px;
      margin  :   0px auto;
      width   :  22px;
      height  :  12px;
      border-radius    : 50%;
      background-color : red;
      box-shadow: 0px -20px 10px  50px white,
                            0px -20px  0px  51px gray,
                            0px  90px 10px  70px white,
                            0px  90px  0px  71px gray;
    }
    /* nose */
    .snowman::before {
      display : block; 
      position: relative;
      content : "";
      left  : -25px;
      top   : -25px;
      margin:   0px auto;
      width :  30px;
      height:  15px;
      border-top-left-radius    :20px 10px;
      border-top-right-radius   : 5px  5px;
      border-bottom-left-radius :20px 10px;
      border-bottom-right-radius: 5px  5px;
      background-color:red;
      box-shadow: 0px 0px 11px -1px black inset;
      transform: rotate(20deg);
    } 
    /* eyes and mouth */
    .snowman::after {
      display : block; 
      position: relative;
      content: "";
      left  :  0px;
      top   :  0px;
      margin:  0px auto;
      width : 15px;
      height: 15px;
      border-radius: 50%; 
      background-color:white;
      box-shadow: -20px -60px 1px  0px black,
                             20px -45px 1px  0px black,
                             -3px -20px 1px -1px white,
                             2px -20px 1px -1px white;     
    }

  </style>
</head>
<body>
  <div class="snowman"></div>
</body>
</html>