效果预览

在线演示

按下右侧的“点击预览”按钮在当前页面预览,点击链接全屏预览。

https://codepen.io/zhang-ou/pen/deVgRM

可交互视频教程

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/c/cb6pkUE

源代码下载

本地下载

请从 github 下载。

https://github.com/comehope/front-end-daily-challenges/tree/master/014-three-languages-for-web-development

代码解读

定义 dom,一个容器中包含一个 span,span 内有文字:

  1. <div class="book">
  2. <span>HTML</span>
  3. </div>

居中显示:

  1. html, body {
  2. width: 100%;
  3. height: 100%;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background: linear-gradient(to top left, white, dimgray);
  8. }

画出书的正面:

  1. .book {
  2. width: 12rem;
  3. height: 18rem;
  4. background: linear-gradient(navy, deeppink, tomato);
  5. transform: skewY(-10deg);
  6. }

画出书的侧面:

  1. .book {
  2. position: relative;
  3. }
  4. .book::before {
  5. content: '';
  6. position: absolute;
  7. width: 1.5rem;
  8. height: 100%;
  9. background: linear-gradient(navy, deeppink, tomato);
  10. top: 0;
  11. left: -1.5rem;
  12. transform: skewY(45deg);
  13. transform-origin: right;
  14. filter: brightness(0.6);
  15. }

画出书的顶面:

  1. .book::after {
  2. content: '';
  3. position: absolute;
  4. width: 100%;
  5. height: 1.5rem;
  6. background: white;
  7. top: -1.5rem;
  8. left: 0;
  9. transform-origin: bottom;
  10. transform: skewX(45deg);
  11. filter: brightness(0.9);
  12. }

给图书加阴影,让它显得更立体:

  1. .book {
  2. box-shadow: -10px 5px 30px rgba(0, 0, 0, 0.5);
  3. }

设置文字样式:

  1. .book span {
  2. color: whitesmoke;
  3. font-size: 2.2rem;
  4. font-family: sans-serif;
  5. display: block;
  6. background: silver;
  7. text-align: center;
  8. height: 8rem;
  9. margin-top: 5rem;
  10. padding-top: 2rem;
  11. box-sizing: border-box;
  12. text-shadow: -2px 2px 10px rgba(0, 0, 0, 0.3);
  13. position: absolute;
  14. width: 100%;
  15. }

画出文字侧面,与画图书侧面的方法相似:

  1. .book span {
  2. position: relative;
  3. }
  4. .book span::before {
  5. content: '';
  6. position: absolute;
  7. width: 1.5rem;
  8. height: 100%;
  9. background: silver;
  10. top: 0;
  11. left: -1.5rem;
  12. transform-origin: right;
  13. transform: skewY(45deg);
  14. filter: brightness(0.6);
  15. }

文字下增加一行小字号文字:

  1. .book span::after {
  2. content: 'development';
  3. display: block;
  4. font-size: 1rem;
  5. }

dom 改为 3 本书,包含在一个容器之中,并且分别命名样式类:

  1. <div class="books">
  2. <div class="book html">
  3. <span>HTML</span>
  4. </div>
  5. <div class="book css">
  6. <span>CSS</span>
  7. </div>
  8. <div class="book js">
  9. <span>JavaScript</span>
  10. </div>
  11. </div>

3 本书布局:


  1. .books {
  2. display: flex;
  3. width: calc(12rem * 3 + 3rem * 2);
  4. justify-content: space-between;
  5. margin-top: 6rem;
  6. }
  7. .book:nth-child(2) {
  8. top: -3rem;
  9. }
  10. .book:nth-child(3) {
  11. top: -6rem;
  12. }

3 本书配色:

  1. .book.html span,
  2. .book.html span::before {
  3. background: orange;
  4. }
  5. .book.css span,
  6. .book.css span::before {
  7. background: yellowgreen;
  8. }
  9. .book.js span,
  10. .book.js span::before {
  11. background: royalblue;
  12. }

设置 3 本书的小字号文字:

  1. .book.html span:after {
  2. content: '<devolopment />';
  3. }
  4. .book.css span::after {
  5. content: '.devolopment::';
  6. }
  7. .book.js span::after {
  8. content: '{ devolopment }';
  9. }

最后,为图书增加鼠标划过效果:

  1. .book {
  2. transition: 0.3s;
  3. }
  4. .book:hover {
  5. margin-top: -1.5rem;
  6. }

大功告成!

知识点

原文地址:https://segmentfault.com/a/1190000014751037

如何用纯 CSS 创作一种侧立图书的特效的更多相关文章

  1. 前端每日实战:14# 视频演示如何用纯 CSS 创作一种侧立图书的特效

    效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/deVgRM 可交互视频教程 此视频是可以交 ...

  2. 14.纯 CSS 创作一种侧立图书的特效

    原文地址:https://segmentfault.com/a/1190000014751037 HTML代码: <div class="books"> <div ...

  3. 如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/XqYroe 可交互视频教 ...

  4. 如何用纯 CSS 创作一种文字断开的交互特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/LmjNgL 可交互视频教程 此视 ...

  5. 如何用纯 CSS 创作一种按钮被瞄准的交互特效

    效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. 在线演示 https://codepen.io/zhang-ou/pen/ELWMLr 可交互视频教程 此视 ...

  6. 前端每日实战:12# 视频演示如何用纯 CSS 创作一种文字断开的交互特效

    效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/LmjNgL 可交互视频教程 此视频是可以交 ...

  7. 前端每日实战:19# 视频演示如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/XqYroe 可交互视频教程 此视频 ...

  8. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/OZmXQX 可交互视频教程 此视 ...

  9. 如何用纯 CSS 创作一个 3D 文字跑马灯特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/GdrrZq 可交互视频教程 此视 ...

随机推荐

  1. CF1060E Sergey and Subway(点分治)

    给出一颗$N$个节点的树,现在我们**在原图中**每个不直接连边但是中间只间隔一个点的两个点之间连一条边. 比如**在原图中**$u$与$v$连边,$v$与$w$连边,但是$u$与$w$不连边,这时候 ...

  2. IIS7的FTP出错: 451 No mapping for the unicode character exists in the target multi-byte code page

    提示:IIS7的FTP出错: 451 No mapping for the unicode character exists in the target multi-byte code page 今天 ...

  3. hdu6201 transaction transaction transaction(from 2017 ACM/ICPC Asia Regional Shenyang Online)

    最开始一直想着最短路,不过看完题解后,才知道可以做成最长路.唉,还是太菜了. 先上图: 只要自己添加两个点,然后如此图般求最长路即可,emmm,用SPFA可以,迪杰斯特拉也可以,或者别的都ok,只要通 ...

  4. CGI、ASP、PHP、JSP、 ASP.NET网站开发语言比较

    一.主流网站开发语言的简介及优缺点. 现在主流的网站开发语言主要包括cgi.asp.php.asp.net.jsp等. HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持. (一)  ...

  5. 地址重用REUSEADDR

    一个socket连接断开后会进入TIME_WAIT,大概有几十秒,这个时候端口是无法使用的,如果不设定地址重用,就会报错,说端口占用. 创建一个socket实例后,在对这个实例进行地址绑定前,要设定地 ...

  6. IE下png图片黑边问题

    png图片在ie8下有黑色边框的情况想必大家都有遇到过吧,那么该怎么解决呢?其实很简单,下面的方法或许对大家有所帮助 background-image:url(******.png)!importan ...

  7. SAE上无法加载css等文件

    如果你的SAE用到了这些文件,你会发现本地虽然能够运行成功,但是SAE上却无法加载. 其实就是地址发生了变化,我们告诉SAE这些东西怎么找就可以了. 例如我的css和js文件放在了app/static ...

  8. Keepalived+LVS(DR)+MySQL

    实验环境 主机名 IP VIP 服务 主备 KA_LV_MYSQL_01 192.168.30.130 192.168.30.100 keepalived.LVS.MySQL MASTER KA_LV ...

  9. 动手实现 React-redux(一):初始化工程

    可以看到 Redux 并不复杂,它那些看起来匪夷所思的设定其实都是为了解决特定的问题而存在的,我们把问题想清楚以后就不难理解它的那些奇怪的设定了.这节开始我们来看看如何把 Redux 和 React. ...

  10. MySQL读写分离实现

    数据库写入效率要低于读取效率,一般系统中数据读取频率高于写入频率,单个数据库实例在写入的时候会影响读取性能,这是做读写分离的原因.实现方式主要基于mysql的主从复制,通过路由的方式使应用对数据库的写 ...