[CSS]HTMLはシンプルで、紙をぺろっと折ったエフェクトをつけるチュートリアル

div要素の隅に紙を折ったエフェクトをつけるスタイルシートのチュートリアルを紹介します。

サイトのキャプチャ

Code a Simple Folded Corner Effect With CSS

下記は各ポイントを意訳したものです。

コンセプト

このチュートリアルのコンセプトは、div要素に対してできるだけシンプルに紙を折ったエフェクトを与えることです。画像を使用すれば、当然かなり簡単にできることですが、これをCSSで行います。

基本的に必要なものは長方形のボックスのほかに、二つの三角形です。

サイトのキャプチャ

上の三角形は背景色と同じ色にし、下の三角形で折ったエフェクトにします。

サイトのキャプチャ

デモ

デモは擬似要素を使用しているため、IE8+とモダンブラウザでご覧ください。

デモのキャプチャ

デモページ

実装

HTML

HTMLは非常にシンプルです。
見出しとパラグラフを配置したdiv要素に、class(foldtl)を加えます。

<div class="page foldtl">
  <h2>見出し</h2>
  <p>パラグラフ...</p>
</div>

CSS

まずは、ページ全体とdiv要素のスタイルです。
div要素の背景はCSS3グラデーションを使用しています。

* {margin: 0; padding: 0px;}
body {
  background: #272822;
}

.page {
  background: #fff;
  width: 250px;
  height: 330px;
  margin: 50px;
  float: left;

  background: #ffffff; /* Old browsers */
  background: -moz-linear-gradient(top,  #ffffff 0%, #e5e5e5 100%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top,  #ffffff 0%,#e5e5e5 100%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top,  #ffffff 0%,#e5e5e5 100%); /* Opera 11.10+ */
  background: -ms-linear-gradient(top,  #ffffff 0%,#e5e5e5 100%); /* IE10+ */
  background: linear-gradient(top,  #ffffff 0%,#e5e5e5 100%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
}

見出しとパラグラフのスタイルです。

.page h2 {
  padding: 85px 0 0 20px;
  font: 400 35px/1.5 'Lilita One', Helvetica, sans-serif;
}

.page p {
  padding: 10px 20px;
  font: 12px/1.5 Helvetica, sans-serif;
  color: #4b4b4b;
}

ここから、三角形を作り、紙を折ったエフェクトを作成します。
エフェクト用のclass「foldtl」をスタイルします。

.foldtl {
  position: relative;
  -webkit-box-shadow: 5px 5px 5px rgba(0,0,0,0.8);
  -moz-box-shadow: 5px 5px 5px rgba(0,0,0,0.8);
  box-shadow: 5px 5px 5px rgba(0,0,0,0.8);
}

下の三角形を「:before」擬似要素で作ります。

.foldtl:before {
  content: "";
  position: absolute;
  top: 0%;
  left: 0%;
  width: 0px;
  height: 0px;
  border-bottom: 70px solid #eee;
  border-left: 70px solid transparent;
  -webkit-box-shadow: 7px 7px 7px rgba(0,0,0,0.3);
  -moz-box-shadow: 7px 7px 7px rgba(0,0,0,0.3);
  box-shadow: 7px 7px 7px rgba(0,0,0,0.3);
}

最後に、上の三角形を「:after」擬似要素で作ります。これは背景となじませます。

.foldtl:after {
  content: "";
  position: absolute;
  top: 0%;
  left: 0%;
  width: 0px;
  height: 0px;
  border-top: 69px solid #272822; 
  border-right: 69px solid transparent;
}

このエフェクトで失敗するかもしれないポイントの一つがシャドウです。下記のように、下だけシャドウをつけるのではなく、折り返した箇所全部に適用することで、よりリアルなエフェクトになります。

サイトのキャプチャ

左:下だけシャドウ、右:折り返した箇所全部にシャドウ

top of page

©2017 coliss