[み]HTML5とCSS3だけでつくられたものすごいやつ

Photoshopはずいぶんさわってないんで、いろいろ忘れてしまっているみはら(@masashi_385)です。今回紹介するのは、まるでPhotoshopとかIllustratorとかでつくったんでしょ?と言いたくなってしまうようなHTML5とCSS3でつくられたものすごいやつです。

どんなものすごいのがあるかというと、Appleのワイヤレスキーボード、MacOS、iOSのアイコン、iPhone、Photoshopの画面、ソーシャルメディアのアイコンなどなど、どれもHTMLとCSSでつくったとは思えません。

では、このものすごいやつのウチのひとつAppleのワイヤレスキーボードのソースを見てみます。
その前に、見た目はこんなんです。

では、コードです。

<div id="keyboard">
        <ul class="cf">
            <li><a href="#" class="key c27 fn"><span id="esc">esc</span></a></li>
            <li><a href="#" class="key c112 fn"><span>F1</span></a></li>
            <li><a href="#" class="key c113 fn"><span>F2</span></a></li>
            <li><a href="#" class="key c114 fn"><span>F3</span></a></li>
            <li><a href="#" class="key c115 fn"><span>F4</span></a></li>
            <li><a href="#" class="key c116 fn"><span>F5</span></a></li>
            <li><a href="#" class="key c117 fn"><span>F6</span></a></li>
            <li><a href="#" class="key c118 fn"><span>F7</span></a></li>
            <li><a href="#" class="key c119 fn"><span>F8</span></a></li>
            <li><a href="#" class="key c120 fn"><span>F9</span></a></li>
            <li><a href="#" class="key c121 fn"><span>F10</span></a></li>
            <li><a href="#" class="key c122 fn"><span>F11</span></a></li>
            <li><a href="#" class="key c123 fn"><span>F12</span></a></li>
            <li><a href="#" class="key fn"><span>Eject</span></a></li>
        </ul>
        <ul class="cf" id="numbers">
            <li><a href="#" class="key c192"><b>~</b><span>`</span></a></li>
            <li><a href="#" class="key c49"><b>!</b><span>1</span></a></li>
            <li><a href="#" class="key c50"><b>@</b><span>2</span></a></li>
            <li><a href="#" class="key c51"><b>#</b><span>3</span></a></li>
            <li><a href="#" class="key c52"><b>$</b><span>4</span></a></li>
            <li><a href="#" class="key c53"><b>%</b><span>5</span></a></li>
            <li><a href="#" class="key c54"><b>^</b><span>6</span></a></li>
            <li><a href="#" class="key c55"><b>&amp;</b><span>7</span></a></li>
            <li><a href="#" class="key c56"><b>*</b><span>8</span></a></li>
            <li><a href="#" class="key c57"><b>(</b><span>9</span></a></li>
            <li><a href="#" class="key c48"><b>)</b><span>0</span></a></li>
            <li><a href="#" class="key c189 alt"><b>_</b><span>-</span></a></li>
            <li><a href="#" class="key c187"><b>+</b><span>=</span></a></li>
            <li><a href="#" class="key c46" id="delete"><span>Delete</span></a></li>
        </ul>
        <ul class="cf" id="qwerty">
            <li><a href="#" class="key c9" id="tab"><span>tab</span></a></li>
            <li><a href="#" class="key c81"><span>q</span></a></li>
            <li><a href="#" class="key c87"><span>w</span></a></li>
            <li><a href="#" class="key c69"><span>e</span></a></li>
            <li><a href="#" class="key c82"><span>r</span></a></li>
            <li><a href="#" class="key c84"><span>t</span></a></li>
            <li><a href="#" class="key c89"><span>y</span></a></li>
            <li><a href="#" class="key c85"><span>u</span></a></li>
            <li><a href="#" class="key c73"><span>i</span></a></li>
            <li><a href="#" class="key c79"><span>o</span></a></li>
            <li><a href="#" class="key c80"><span>p</span></a></li>
            <li><a href="#" class="key c219 alt"><b>{</b><span>[</span></a></li>
            <li><a href="#" class="key c221 alt"><b>}</b><span>]</span></a></li>
            <li><a href="#" class="key c220 alt"><b>|</b><span>\</span></a></li>
        </ul>
        <ul class="cf" id="asdfg">
            <li><a href="#" class="key c20 alt" id="caps"><b></b><span>caps lock</span></a></li>
            <li><a href="#" class="key c65"><span>a</span></a></li>
            <li><a href="#" class="key c83"><span>s</span></a></li>
            <li><a href="#" class="key c68"><span>d</span></a></li>
            <li><a href="#" class="key c70"><span>f</span></a></li>
            <li><a href="#" class="key c71"><span>g</span></a></li>
            <li><a href="#" class="key c72"><span>h</span></a></li>
            <li><a href="#" class="key c74"><span>j</span></a></li>
            <li><a href="#" class="key c75"><span>k</span></a></li>
            <li><a href="#" class="key c76"><span>l</span></a></li>
            <li><a href="#" class="key c186 alt"><b>:</b><span>;</span></a></li>
            <li><a href="#" class="key c222 alt"><b>"</b><span>'</span></a></li>
            <li><a href="#" class="key c13 alt" id="enter"><span>return</span></a></li>
        </ul>
        <ul class="cf" id="zxcvb">
            <li><a href="#" class="key c16 shiftleft"><span>Shift</span></a></li>
            <li><a href="#" class="key c90"><span>z</span></a></li>
            <li><a href="#" class="key c88"><span>x</span></a></li>
            <li><a href="#" class="key c67"><span>c</span></a></li>
            <li><a href="#" class="key c86"><span>v</span></a></li>
            <li><a href="#" class="key c66"><span>b</span></a></li>
            <li><a href="#" class="key c78"><span>n</span></a></li>
            <li><a href="#" class="key c77"><span>m</span></a></li>
            <li><a href="#" class="key c188 alt"><b>&lt;</b><span>,</span></a></li>
            <li><a href="#" class="key c190 alt"><b>&gt;</b><span>.</span></a></li>
            <li><a href="#" class="key c191 alt"><b>?</b><span>/</span></a></li>
            <li><a href="#" class="key c16 shiftright"><span>Shift</span></a></li>
        </ul>
        <ul class="cf" id="bottomrow">
            <li><a href="#" class="key" id="fn"><span>fn</span></a></li>
            <li><a href="#" class="key c17" id="control"><span>control</span></a></li>
            <li><a href="#" class="key option" id="optionleft"><span>option</span></a></li>
            <li><a href="#" class="key command" id="commandleft"><span>command</span></a></li>
            <li><a href="#" class="key c32" id="spacebar"></a></li>
            <li><a href="#" class="key command" id="commandright"><span>command</span></a></li>
            <li><a href="#" class="key option" id="optionright"><span>option</span></a></li>
            <ol class="cf">
                <li><a href="#" class="key c37" id="left"><span><img src="left.png" /></span></a></li>
                <li>
                    <a href="#" class="key c38" id="up"><span><img src="up.png" /></span></a>
                    <a href="#" class="key c40" id="down"><span><img src="down.png" /></span></a>
                </li>
                <li><a href="#" class="key c39" id="right"><span><img src="right.png" /></span></a></li>
            </ol>
        </ul>
    </div>

当然ですが、これだけ見たら単なるリストですね。HTML+CSSという話であれば、あたり前ですがここからはどんな風に表示されるかなんてわかりません。
ということで、お待ちかねのCSSです。

#keyboard {
    margin: 50px auto;
    width: 794px;
    height: 315px;
    background: #d5d9dc  url('keyboard-background.jpg') repeat-x;
    -moz-border-radius-topleft: 7px 21px;
    -moz-border-radius-topright: 7px 21px;
    -moz-border-radius-bottomright: 10px;
    -moz-border-radius-bottomleft: 10px;
    border-top-left-radius: 7px 21px;
    border-top-right-radius: 7px 21px;
    border-bottom-right-radius: 10px;
    border-bottom-left-radius: 10px;
    padding: 50px 0 0 10px;
    -webkit-box-shadow:  
        inset 0 0 8px #bbb,
        0 1px 0 #aaa,
        0 4px 0 #bbb,
        0 10px 30px #ddd;
    -moz-box-shadow:  
        inset 0 0 8px #bbb,
        0 1px 0 #aaa,
        0 4px 0 #bbb,
        0 10px 30px #ddd;
    box-shadow:  
        inset 0 0 8px #bbb,
        0 1px 0 #aaa,
        0 4px 0 #bbb,
        0 10px 30px #ddd;}

ul {list-style-type: none; width: 784px; margin: 0 auto;}
li {float: left;}


.key{
    display: block;
    color: #aaa;
    font: bold 9pt arial;
    text-decoration: none;
    text-align: center;
    width: 44px;
    height: 41px;
    margin: 5px;
    background: #eff0f2;
    -moz-border-radius: 4px;
    border-radius: 4px;
    border-top: 1px solid #f5f5f5;
    -webkit-box-shadow:
        inset 0 0 25px #e8e8e8,
        0 1px 0 #c3c3c3,
        0 2px 0 #c9c9c9,
        0 2px 3px #333;
    -moz-box-shadow:
        inset 0 0 25px #e8e8e8,
        0 1px 0 #c3c3c3,
        0 2px 0 #c9c9c9,
        0 2px 3px #333;
    box-shadow:
        inset 0 0 25px #e8e8e8,
        0 1px 0 #c3c3c3,
        0 2px 0 #c9c9c9,
        0 2px 3px #333;
    text-shadow: 0px 1px 0px #f5f5f5;}

.key:active, .keydown {
    color: #888;
    background: #ebeced;
    margin: 7px 5px 3px;
    -webkit-box-shadow:
        inset 0 0 25px #ddd,
        0 0 3px #333;
    -moz-box-shadow:
        inset 0 0 25px #ddd,
        0 0 3px #333;
    box-shadow:
        inset 0 0 25px #ddd,
        0 0 3px #333;
    border-top: 1px solid #eee;}
   
.fn span {
    display: block;
    margin: 14px 5px 0 0;
    text-align: right;
    font: bold 6pt arial;
    text-transform: uppercase;}
#esc {
    margin: 6px 15px 0 0;
    font-size: 7.5pt;
    text-transform: lowercase;}


#numbers li a span {
    display: block;}
   
#numbers li a b {
    margin: 3px 0 3px;
    display: block;}

#numbers li .alt b {display: block;margin: 0 0 3px;}

#numbers li #delete span {
    text-align: right;
    margin: 23px 10px 0 0;
    font-size: 7.5pt;
    text-transform: lowercase;}
   
#qwerty li a span {
    display: block;
    margin: 13px 0 0;
    text-transform: uppercase;}
   
#qwerty li #tab span {
    text-align: left;
    margin: 23px 0 0 10px;
    font-size: 7.5pt;
    text-transform: lowercase;}

#qwerty li .alt b {display: block; margin: 3px 0 0;}
#qwerty li .alt span {margin: 2px 0 0;}


#asdfg li a span {
    display: block;
    margin: 13px 0 0;
    text-transform: uppercase;}

#asdfg li .alt span {margin: 0; text-transform: lowercase;}
#asdfg li .alt b {display: block; margin: 3px 0 0;}
#asdfg li #caps b {
    display: block;
    background: #999;
    width: 4px;
    height: 4px;
    border-radius: 10px;
    margin: 9px 0 0 10px;
    -webkit-box-shadow: inset 0 1px 0 #666;
    -moz-box-shadow:inset 0 1px 0 #666;
    box-shadow:inset 0 1px 0 #666;}
#asdfg li #caps span {
    text-align: left;
    margin: 10px 0 0 10px;
    font-size: 7.5pt;}
#asdfg li #enter span {
    text-align: right;
    margin: 23px 10px 0 0;
    font-size: 7.5pt;}


#zxcvb li a span {
    display: block;
    margin: 13px 0 0;
    text-transform: uppercase;}
#zxcvb li .shiftleft span {
    text-align: left;
    margin: 23px 0 0 10px;
    font-size: 7.5pt;
    text-transform: lowercase;}
#zxcvb li .shiftright span {
    text-align: right;
    margin: 23px 10px 0 0;
    font-size: 7.5pt;
    text-transform: lowercase;}
#zxcvb li .alt b {display: block;margin: 4px 0 0;}
#zxcvb li .alt span {margin: 0;}

   
#bottomrow li #fn span, #bottomrow li #control span, #bottomrow li #optionleft span, #bottomrow li #commandleft span {
    display: block;
    text-align: left;
    margin: 31px 0 0 8px;
    font-size: 7.5pt;
    text-transform: lowercase;}

#bottomrow li #optionright span, #bottomrow li #commandright span {
    display: block;
    text-align: right;
    margin: 31px 8px 0 0;
    font-size: 7.5pt;
    text-transform: lowercase;}

#bottomrow ol li #left span, #bottomrow ol li #right span, #bottomrow ol li #up span, #bottomrow ol li #down span {
    display: block;
    margin: 9px 0 0;}

.fn {height: 26px; width: 46px;}
#delete {width: 72px;}
#tab {width: 72px;}
#caps {width: 85px;}
#enter {width: 85px;}
.shiftleft, .shiftright {width: 112px;}
#fn, #control, .option, .command, #spacebar {height: 49px;}

#control {width: 56px;}
.option {width: 46px;}
.command {width: 67px;}
#spacebar {width: 226px;}

#left img, #up img, #down img, #right img {border: none;}
ul ol {list-style-type: none;}
#down {height: 23px;}
#up, #left, #right {height: 24px;}
#left, #right {margin: 30px 5px 5px;}
#left:active, #right:active {margin: 32px 5px 3px;}
#up {margin: 5px 5px 1px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;}
#up:active {margin: 8px 5px -2px;}
#down {margin: 0 5px 5px; border-top-left-radius: 0px; border-top-right-radius: 0px;}
#down:Active {margin: 3px 5px 4px;}

もうホントここまで来ると、狂気じみたものを感じずにはいられません。すごいです。いい意味でお腹いっぱいです。

ちなみに、このAppleワイヤレスキーボードをはじめ、HTML+CSSのみでつくられたものすごいのは、ここで紹介されていました。
16 Graphics Coded Purely With CSS – Development
ソーシャルメディアのアイコンとか、ホントにすごいです。しかも、Chromeでページを見ると、翻訳しますか?的なこと聞かれますよね?それで翻訳すると、奇跡が起きます。
翻訳前

翻訳後

翻訳しなくていいところまで翻訳してくれます。

どれもこれもすごい作品なので、ぜひ見てみてください:)

シェアありがとうございます

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

commentYour Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

checkboxみはら.comはエックスサーバーです

editNEW エントリー

PAGE TOP arrowup