CSS3 で作成した本のページめくり効果

CSS3 で作成した本のページめくり効果

結果:

実装コード:

html

<!-- よろしければハートを付けてください! -->
<div id='本'>
  <div id='トップ'></div>
  <div id='フロント'></div>
  <div id='右'></div>
  <div id='下'></div>
  <div id='影'></div>
  <div id='ブックマーク'>
    <div>
      <div>
        <div>
          <div></div>
        </div>
      </div>
    </div>
  </div>
  <div id='ブックマークシャドウ'></div>
</div>
<div id='フリップ'>
  <div id='前面'>
    <div>
      <div>
        <div>
          <div>
            <div>
              <div>
                <div>
                  <div>
                    <div>
                      <div></div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div id='戻る'>
    <div>
      <div>
        <div>
          <div>
            <div>
              <div>
                <div>
                  <div>
                    <div>
                      <div></div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<h4>CSS 3D 曲げ効果 - ページ フリップ</h4>

CSS3

/* 必ず - transform-style: preserve-3d; を使用してください */
html、本文{
  高さ:100%;
  オーバーフロー: 非表示;
}
体 {
  背景: 放射状グラデーション(#E4CEA6, #9C8763);
  パースペクティブ: 900px;
  マージン: 0;
}
#反転{
  アニメーション: ラッパー 6 秒の easy-in-out 無限;
  高さ: 350ピクセル;
  幅: 253px; 
  位置: 絶対;
  左: 50%;
  上位: 30%
  変換: translateZ(-10px) rotateX(60deg) rotateZ(29deg) rotateY(0deg)!重要;
  変換スタイル: 3D を保持します。
  変換の原点: 0 0 0;
}
@keyframes ラッパー {
  50% {
    変換: translateZ(-10px) rotateX(60deg) rotateZ(29deg) rotateY(-180deg);
  }
}
#反転div{
  高さ: 350ピクセル;
  幅: 24px;
  位置: 絶対;
  左: calc(100% - 1px);
  変換原点: 0 100%;
  変換スタイル: 3D を保持します。
  背景サイズ: 253px 350px;
}
#フリップ #フロント、 
#flip #front div {
  背景画像: url(http://blogs.slj.com/afuse8production/files/2012/06/Hobbit1.jpg);
  ボックスシャドウ: インセット rgba(255,255,255,0.3) 0px -1px 0 0,#35582C 0px 1px 0px 0px;
}
#flip #front > div > div > div > div > div > div > div > div > div > div > div { 
  ボックスの影: インセット rgba(255,255,255,0.3) -1px -1px 0 0, #35582C 1px 1px 0px 0px;
}
#flip #back { transform: rotateY(.4deg); transform-origin: -100% 0; } /* ページの重なりを避ける */
#裏返す、
#反転 #戻る div {
  背景画像: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/164210/map1_.jpg); 
}

#flip > div { 左: 0; 背景位置x: 0; }
#flip div > div { background-position-x: -23px; animation: page 6s easy-in-out infinite; }
#反転 div > div > div { background-position-x : -46px; } 
#反転 div > div > div > div { background-position-x : -69px; }
#反転 div > div > div > div > div { background-position-x : -92px; }
#反転 div > div > div > div > div > div { background-position-x : -115px; }
#反転 div > div > div > div > div > div > div { background-position-x : -138px; }
#反転 div > div > div > div > div > div > div > div { background-position-x : -161px; }
#flip div > div > div > div > div > div > div > div > div { background-position-x : -184px; }
#flip div > div > div > div > div > div > div > div > div > div { background-position-x : -207px; }
#flip div > div > div > div > div > div > div > div > div > div { background-position-x : -229px; }
/* ピースの数が多いほど、曲げが滑らかになります */

@keyframes ページ {
  15% { 変換: 回転Y(-10度); }
  50% { 変換: rotateY(-2deg); }
  65% { 変換: rotateY(10deg); }
  100% { 変換: rotateY(0deg); }
}

#本 {
  幅: 248ピクセル;
  高さ: 350ピクセル;
  位置: 絶対;
  残り:50%;
  上位: 30%
  変換: translate3d(0px,0px,-10px) rotateX(60deg) rotateZ(29deg);
  変換スタイル: 3D を保持します。
  -webkit-transform-origin: 0 0 0;
}
@keyframes ブック {
  25% {
    ボックスシャドウ: インセット rgba(0,0,0,.2) 0px 0 50px -140px;
  }
  50% {
    ボックスシャドウ: インセット rgba(0,0,0,.2) 0px 0 50px -140px;
  }
  100% {
    ボックスシャドウ: インセット rgba(0,0,0,.2) 510px 0 50px -140px;
  }
}
#本 #トップ {
  アニメーション: ブック 6s イーズインアウト 無限;
  背景: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/164210/map2.jpg);
  背景サイズ: 100% 100%;
  背景位置: 100%;
  ボックスシャドウ: インセット rgba(0,0,0,0.2) 510px 0 50px -140px;
  高さ: 350ピクセル;
  幅: 248ピクセル;
  位置: 絶対;
  左: 0;
  上: 0;
}
#本 #下 {
  背景: #E7DED1;
  ボックスシャドウ: rgba(83, 53, 13, 0.2) 4px 2px 1px,
              #35582C 1px 1px 0px 0px;
  高さ: 350ピクセル;
  幅: 253px;
  位置: 絶対;
  変換: translateZ(-40px);
  左: 0;
  上: 0;
}
#本 #影
  アニメーション: 影 6 秒、イーズイン アウト、無限;
  ボックスシャドウ: インセット rgba(83, 53, 13, 0) -200px 0 150px -140px;
  高さ: 350ピクセル;
  幅: 248ピクセル;
  位置: 絶対;
  左: -100%;
  上: 0;
  変換: translateZ(-40px);
}
@keyframes シャドウ {
  20% {
    ボックスシャドウ: インセット rgba(83, 53, 13, 0) -200px 0 150px -140px;
  }
  50% { 
    ボックスシャドウ: インセット rgba(83, 53, 13, 0.3) -350px 0 150px -140px;
  }
  60% { 
    ボックスシャドウ: インセット rgba(83, 53, 13, 0) -200px 0 150px -140px;
  }
}
#本 #表紙 {
  背景: -webkit-linear-gradient(top,#FCF6EA, #D8D1C3);
  背景サイズ: 100% 2px; 
  ボックスシャドウ: インセット #C2BBA2 3px 0 0px、#35582C -2px 1px 0px 0px;
  高さ: 40px;
  幅: 251ピクセル;
    左: -3px;
  位置: 絶対;
  下: -40px;
  変換: rotateX(-90deg);
  変換原点: 50% 0;
  左上の境界線の半径: 5px;
  左下の境界線の半径: 5px;
}
#本 #権利 {
  背景: -webkit-linear-gradient(左、#DDD2BB、#BDB3A0);
  背景サイズ: 2px 100%; 
  ボックスシャドウ: インセット rgba(0,0,0,0) 0 0 0 20px;
  高さ: 100%;
  幅: 40px;
  位置: 絶対;
  右: -40px;
  上: 0;
  変換: rotateY(90deg);
  変換原点: 0 50%;
}

h4 {
  位置: 絶対;
  下: 20px;
  左: 20px;
  マージン: 0;
  フォントの太さ: 200;
  不透明度: 1;
	フォントファミリー: サンセリフ;
  色: rgba(0,0,0,0.3); 
}

/* ブックマーク */

#ブックマーク{
  位置: 絶対;
  変換: translate3d(20px,350px,-16px);
  変換スタイル: 3D を保持します。
}
#ブックマーク div {
  背景: rgb(151, 88, 88);
  ボックスシャドウ: rgb(133,77,77) 1px 0;
  高さ: 10px;
  幅: 20px;
  位置: 絶対;
  上: 9px;
  変換: rotateX(-14deg);
  変換原点: 50% 0;
  変換スタイル: 3D を保持します。
}
#ブックマーク > div > div {
  背景: linear-gradient(top, rgb(151, 88, 88), rgb(189, 123, 123), rgb(151, 88, 88));
}
#ブックマーク > div > div > div {
  背景: linear-gradient(top,rgb(151, 88, 88),rgb(133, 77, 77));
}
#ブックマーク > div > div > div > div {
  背景: なし;
  border-top: 0px 透明の実線;
  右境界線: 10px 実線 rgb(133, 77, 77);
  border-bottom: 10px 透明の実線;
  左境界線: 10px 実線 rgb(133, 77, 77);
  高さ: 0;
  幅: 0;
}
#ブックマークシャドウ {
  背景: linear-gradient(top,rgba(83, 53, 13, 0.25),rgba(83, 53, 13, 0.11));
  高さ: 15px;
  幅: 20px;
  位置: 絶対;
  変換: translate3d(12px,350px,-25px) rotateX(-90deg) skewX(20deg);
  変換の原点: 0 0;
}

上記はCSS3で作成した本のページめくり効果の詳細です。CSS3の本のページめくり効果の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

<<:  HTMLのインライン要素とブロックレベル要素とは何か、またそれらの違いは何ですか

>>:  ウェブデザイナーが知っておくべき効率的なナビゲーションデザインの3つの原則

推薦する

Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法

1. Vueプロジェクトのパッケージ化開発されたvueプロジェクトに次の名前を入力し、パッケージ化し...

Vue のプロダクション環境と開発環境を切り替えてフィルターを使用する方法

目次1. 本番環境と開発環境を切り替える最初の方法: .envファイルを設定する2番目の方法2. フ...

kubernetes1.5.2 から kubernetes1.10 にアップグレードする際の主要な設定変更記録

この記事では、kubernetes1.5.2 から kubernetes1.10 にアップグレードす...

訪問者を惹きつけるウェブサイトコンテンツを作成する14の方法

ネットサーフィンをしていると、私の注意を引こうとする美しいグラフィックでいっぱいの Web サイトを...

HTML 縦列表示テキストを使用してテキストを縦列で表示します

コードをコピーコードは次のとおりです。 <span style='display:bl...

mysql5.7.14 解凍版インストールと設定方法 グラフィックチュートリアル (win10)

Win10はmysql5.7の解凍版をインストールします。参考までに、具体的な内容は次のとおりです...

JavaScript の構成と継承の説明

目次1. はじめに2. プロトタイプチェーン継承3. コンストラクタの継承4. 組み合わせ継承1. ...

JavaScript のクロージャによって発生する問題を回避する

閉鎖による問題を回避するためのletについてオブジェクト指向の考え方を使用して、購入者情報の削除機能...

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決します

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決しますコード例: var...

Linuxアカウントファイル制御管理の詳細な手順

Linux システムでは、ユーザーが手動で作成したさまざまなアカウントに加えて、システムまたはプログ...

CentOS 7 で NFS ファイル共有ストレージ サービスを構築するための完全な手順

序文NFS (Network File System) は、ネットワーク ファイル システムを意味し...

HTML メタタグの小さなコレクション

<Head>……</head> は <HTML> のファイル ヘ...

スタイルを書く際の背景色宣言の重要性

タイトルの通り、ページを修正すると以下のような状況が発生する可能性があります。現在、古いページを改修...

iOS スタイルの選択ボックスの開閉機能を実装するための純粋な CSS

1 効果デモアドレス: https://www.albertyy.com/2020/7/check...

Vue3ルーティングVueRouter4を使用する簡単な例

ルーティングvue-router4 では API の大部分は変更されていないため、変更点のみに焦点を...