ちょっとした遊びゴコロを発揮して CSS だけでオンズのロゴマークを作る方法を模索してみました。
もともと比較的簡単な構成のロゴマークなので、それほど難しくはないと思っていましたので、ちょっとハードルを上げるために1つのルールを定めました。
それは「たった1つの div 要素のみで作る」こと。
つまり使える html は <div class="onze"></div> のみで、あとはスタイルシートを駆使して制作することになります。
具体的には疑似セレクタ「:before」と「:after」を利用することになりますね。
以下、実際にできあがったコードを順を追って説明していきます。
.onze {
margin:0 auto;
position:relative;
width:130px;
height:130px;
background-color:#1aa;
border-radius:0 50% 0 50%;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
-ms-box-sizing:border-box;
-o-box-sizing:border-box;
box-sizing:border-box;
}
まずはベースになる部分。
「width」と「height」は 130px として、「border-radius」を使って輪郭部分を作りました。
この要素に対して「position:relative;」を指定することを忘れてはいけません。
続いて外側の白い円の輪郭部分です。
.onze:before {
content:"";
width:130px;
height:130px;
position:absolute;
background-color:#1aa;
border:4px solid #fff;
top:-4px;
left:-4px;
border-radius:50%;
box-sizing:padding-box;
z-index:1;
}
この箇所は「:before」疑似セレクタを使いました。
border:4px solid #fff;として白枠の部分を作り、さらにCSS3から使用可能になったbox-sizing:padding-box;を指定して、ボックスの大きさをカンタンに扱えるようにカスタマイズ。
さらにposition:absolute;で絶対配置にして「top」と「left」をそれぞれ「-4px」と指定して位置を調節します。
単にbox-sizing:border-box;として全体の円の大きさを 130px にしてしまうと、ベース部分とのサイズの兼ね合いで正確なロゴマークにならないので、この方法を選択しました。
最後のステップは中央の白抜きの円の部分です。
.onze:after {
content:"";
display:block;
position:absolute;
top:50%;
left:50%;
width:80px;
height:80px;
margin-top:-40px;
margin-left:-40px;
border-radius:50%;
background-color:#fff;
z-index:2;
}
前項で「:before」を使ったので次は「:after」を使うしかありません。
考え方は前項と同じですが、要素を中央に配置するためにネガティブ・マージンを使います。margin-top:-40px;とmargin-left:-40px;を使用しているのがポイントです。
そして念のためにz-indexで要素の重なり順も指定します。
以上。
完成したものは以下のURLよりご覧ください。
CSS だけで作ったオンズのロゴマーク:サンプル・デモ