先上效果图

该例子来自 CSS世界 的书中项目

总结技巧如下:

  1. 巧用 border 和 伪元素 来 绘制层叠效果。
  2. 使用 transform-origin 来改变元素的轴心
  3. 使用 filter:drop-shadow 绘制 物体 阴影

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>铅笔</title>
<style>
.pencil {
display: flex;
width: 50em;
height: 3.5em;
font-size: 12px; margin: 0 auto;
padding-top: 100px; filter: drop-shadow(0.4em 0.8em 0.3em grey);
}
.taper {
width: 4em;
/* background-color: burlywood; */
} .taper::before {
content: '';
position: absolute;
border-style: solid;
border-width: calc(3.5em / 2) 4em calc(3.5em / 2) 0;
border-color: transparent;
border-right-color: burlywood;
} .taper::after {
content: '';
position: absolute;
border-style: solid;
border-width: calc(3.5em / 2) 4em calc(3.5em / 2) 0;
border-color: transparent;
border-right-color: black;
transform-origin: left;
transform: scale(0.3);
} .barrel {
width: 40em;
background-color: green;
border-top: 1em solid forestgreen;
border-bottom: 1em solid darkgreen; color: silver;
line-height: 1.5em;
text-align: center;
text-transform: uppercase;
letter-spacing: 0.1em; }
.eraser {
position: relative;
width: 6em;
background-color: lightpink;
border-top:1em solid pink;
border-bottom:1em solid lightcoral;
border-radius: 0 0.5em 0.5em 0 ;
} .eraser::before {
content: '';
position: absolute;
width: 1.5em;
height: 1.5em;
background-color: silver;
border-top:1em solid lightgrey;
border-bottom:1em solid grey;
top: -1em;
}
</style>
</head>
<body>
<div class="pencil">
<div class="taper"></div>
<div class="barrel">一蓑烟雨任平生</div>
<div class="eraser"></div>
</div>
</body>
</html>

  

drop-shadow文档

用CSS border画一个铅笔的更多相关文章

  1. css 如何“画”一个抽奖转盘

    主要描述的是如何运用 css 绘制一个抽奖转盘,并运用原生 js 实现转盘抽奖效果. 先来张效果图: 布局 一般来说,转盘一般有四个部分组成:外层闪烁的灯.内层旋转的圆盘.圆盘上的中奖结果.指针. 所 ...

  2. Effective前端3:用CSS画一个三角形

    p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...

  3. Effective前端1---chapter 2 用CSS画一个三角形

    1.CSS画三角形的画法 第一步:三角形可以用border画出来,首先一个有四个border的div长这样: <div class="triangle"></di ...

  4. Effective前端(3)用CSS画一个三角形

    来源:https://zhuanlan.zhihu.com/p/26160325 三角形的场景很常见,打开一个页面可以看到各种各样的三角形: 由于div一般是四边形,要画个三角形并不是那么直观.你可以 ...

  5. css画一个提示框

    用css画一个如下图的提示框: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  6. 【前端切图】用css画一个卡通形象-小猪佩奇

    最近在腾讯云技术社区遇到了一位奇才,用css画出了一个社会人小猪佩奇,不得不服.研究了一下他的文章https://segmentfault.com/a/1190000014909658,感觉甚是有趣, ...

  7. CSS画一个三角形,CSS绘制空心三角形,CSS实现箭头

     壹 ❀ 引 这两天因为项目工作较少,闲下来去看了GitHub上关于面试题日更收录的文章,毕竟明年有新的打算.在CSS收录中有一题是 用css创建一个三角形,并简述原理 .当然对于我来说画一个三角形是 ...

  8. div+css画一个小猪佩奇

    用DIV+CSS画一个小猪佩奇,挺可爱的,嘻嘻. HTML部分(全是DIV) <!-- 小猪佩奇整体容器 --> <div class="pig_container&quo ...

  9. 用CSS的border画三角形

    用border画三角形,实际上属于一种奇淫巧技. 利用的是border的一个特性:当一个元素的宽高都为0时,给border设置宽度(至少给2个相邻的边框设置宽度),border就会撑开这个元素. 四个 ...

  10. 用CSS画一个带阴影的三角形的示例代码

    1. 思路 怎么用CSS3画一个带阴影的三角形呢 ? 有童鞋说, 这还不简单吗 网上有很多解决方案, 但其实大多都是实现不太完美的, 存在一些问题 假设我们做一个向下的三角形箭头 常见的方法大致有两种 ...

随机推荐

  1. CPU的实模式

    实模式是指CPU的寻址方式,寄存器大小,指令用法等,是用来反应CPU在该环境下如何工作的概念. CPU的工作原理:CPU大体分为三个部分,控制.运算.存储单元. 控制单元是CPU的控制中心,大致由指令 ...

  2. [oeasy]python0011_ 字符序号_ordinal_ord

    ​ 序号(ordinal) 回忆上次内容 ​hello world​​ 不是从来就有的 来自于​​unix​​和​​c​​ 虽然我们今天有各种先进的学习手段 最早的高级语言学习是从最早的那张打字机用纸 ...

  3. AT_abc182_d 题解

    洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 从数轴的原点开始向正方向走. 第一次向前走 \(a_1\) 步,第二次向前走 \(a_ ...

  4. 测试思想-流程规范 用例优先级定义与使用规范 V1.0

    用例优先级定义与使用规范 V1.0 By:授客   1.      规范说明 目的 对软件测试过程中的用例级别进行详细描述及标准化定义,明确不同测试阶段的测试范围,减少测试冗余投入,提高测试效率,建立 ...

  5. python selenium 判断元素是否存在,实现:找到元素,执行对应的代码;找不到元素,继续执行其他代码

    selenium因为找不到元素会抛出异常,导致执行结束 可以考虑使用driver.find_elements(),找不到元素时就会返回空列表,使用if-else语句,判断列表是否为空,非空,则正常找到 ...

  6. 使用 @Audited 增强Spring Boot 应用程序的数据审计能力

    介绍 在Spring Boot开发的动态世界中,确保数据完整性和跟踪变化是至关重要的.实现这一目标的一个强大工具是@Audited注解.本文深入探讨了该注解的复杂性.其目的.实现步骤以及如何利用其功能 ...

  7. python中的字符串和列表

    name="1" name='1' name="""1""""" name='''1''' #都为正 ...

  8. 用了组合式 (Composition) API 后代码变得更乱了,怎么办?

    前言 组合式 (Composition) API 的一大特点是"非常灵活",但也因为非常灵活,每个开发都有自己的想法.加上项目的持续迭代导致我们的代码变得愈发混乱,最终到达无法维护 ...

  9. 【Hibernate】01 概述

    什么是Hibernate? - Hibernate是我们JavaEE开发中的DAO层框架 - DAO[Data Access Object] 数据访问对象层 - 在DAO层,访问数据库,进行CRUD操 ...

  10. 【Layui】11 滑块 Slider

    文档地址: https://www.layui.com/demo/slider.html 基本滑块: <fieldset class="layui-elem-field layui-f ...