写这篇博客的起因是我看了Medium上的这篇文章:How I started drawing CSS Images,然后哇哦?,同样是前端开发,这区别怎么这么大呢?这位作者和我完全点了不同的技能点啊!

看了几个她在codepen上的作品,比如这个皮卡丘,发现用到的技术也并不多,于是我也想试试。

不过有哪个动漫中的人物足够简单,能够用几个基本的几何图形就画出来呢?我想到了一个人,于是我决定画一个《一拳超人》中的卤蛋,不对,是秃头披风侠——琦玉老师。

技术概述

从html文件中你可以看到这张图片实际上全部是由div元素组合而成的,一共用到了15个div。在给一个div元素加上适当的css样式后,就形成了脸上的一个部位。

在绘制琦玉的头像时,最重要的一个css属性就是border-radius,我们用它可以画出圆形、椭圆及各种变体。图中的脸部轮廓、眼睛、耳朵的形状都是由border-radius来实现的,稍后将介绍其使用方法。

另一个需要说明的css属性是transform,可以实现平移和旋转。

border-radius 介绍

之前我对border-radius的认识只局限于可以给元素加上圆角,以及将其值设为50%可以让矩形显示为圆形。查了些资料后,才发现可以用它画出许多图形。

border-radius是以下四个属性的简写,每一个属性用于设置一个角的形状:

border-top-left-radius

border-top-right-radius

border-bottom-right-radius

border-bottom-left-radius

图片来自MDN

从上图可以看出当只设置一个值或设置两个相同的值时,显示为圆;设置两个不同的值时,显示为椭圆。以border-top-left-radius为例:

/* the corner is a circle */

/* border-top-left-radius: radius */

border-top-left-radius: 3px;

/* the corner is an ellipsis */

/* border-top-left-radius: horizontal vertical */

border-top-left-radius: 0.5em 1em;

若是简写形式,则写成如下格式:

border-radius: 48% 48% 50% 50% / 42% 42% 54% 54%;

'/'之前的四个值表示水平轴的长度,'/'之后的四个值表示垂直轴的长度,当水平轴的长度和垂直轴的长度相等时,可以省略'/'及之后的这一组值。

对于同一组的四个数值,也有简写方式。方法与 padding 和 margin 的简写类似,第一个值与第三个值相同或第二个值与第四个值相同时,可以只写一遍。

在了解了border-radius的用法后,通过给div元素合适的宽高比,在调整四个圆角的半径,就能够获得你想要的形状了。

// 以下的样式能够画出琦玉的脸部形状

// 在调整width, height, border-radius 后,可画出眼、鼻、嘴的形状

#div1 {

width: 100px;

height: 144px;

border: 2px solid #000;

border-radius: 48% 48% 50% 50% / 42% 42% 54% 54%;

}

transform 介绍

transform属性也是一个很强大的属性,能够对元素做各种变形。不过我们这里只需要用它来进行平移和旋转的操作。

/* 可以用 translate 来实现平移操作 */

/* translate() 的两个参数分别表示水平方向和垂直方向的平移距离 */

transform: translate(12px, 50%);

/* 上面这一行与下面的这两行是等价的 */

transform: translateX(12px);

transform: translateY(50%);

/* 顺时针旋转20度 */

transform: rotate(20deg);

组合得到最终结果

在你已经将琦玉头像进行拆解,把各个部分都用一个div来表示并加上了合适的样式后,就能将它们组合起来了。你可以用transform来调整它们的距离,或者直接用absoulte定位。

最后就得到了琦玉的头像:

额,秃子,你谁啊!?

看来不是所有的光头都叫琦玉,还需要对细节进行一点调整:

OK,这样就有点像琦玉老师了。最后,如果你愿意的话,还可以用transition属性来稍微加上点动画效果。

再放一遍代码地址:

本文在我的博客上的地址:

用html和css画画,如何用 html 和 css 画一拳超人相关推荐

  1. 如何用 html 和 css 画一拳超人

    写这篇博客的起因是我看了Medium上的这篇文章:How I started drawing CSS Images,然后哇哦?,同样是前端开发,这区别怎么这么大呢?这位作者和我完全点了不同的技能点啊! ...

  2. gulp编译css_如何用gulp缩小CSS

    gulp编译css by Vinicius Gularte 由Vinicius Gularte 如何用gulp缩小CSS (How to minify your CSS with gulp) In t ...

  3. 如何用css排段落,标准网页中用CSS进行段落排版的方法

    符合标准网页中用DIV CSS如何对段落进行排版的?通过这篇教程你就会有所了解 margin div css布局中段落使用 标签,对于段落的上下左右的空白(缩进)可以使用margin标签定义样式.ma ...

  4. css习题(如何用html和css画三角形(等腰和直角))

    用HTML语言和css语言画一个等腰三角形和一个直角三角形 以下是HTML页面的代码: <html><head><meta charst="utf-8" ...

  5. 34、CSS高频前端面试题之CSS基础

    参考:https://juejin.cn/post/6905539198107942919 目录 一.CSS基础 1. CSS选择器及其优先级 2.CSS中可继承与不可继承属性有哪些 2.1 无继承性 ...

  6. css中字体下划线样式,css下划线 浅谈css自定义下划线

    使用css样式对一段文字或一段文字中其中几个文字设置虚线效果的下划线如何实现?我们知道css字体下划线使用text-decoration样式实现,而虚线下划线则不能使用此css样式属性.要实现通过下边 ...

  7. css overflow 省略号,图文详解CSS文本溢出显示省略号效果(text-overflow)

    在工作中经常会遇到文本溢出,需要显示省略号的情况,那这个省略号是怎么实现的呢?这篇文章就给大家讲讲CSS中如何用text-overflow实现超出部分显示省略号.对CSS文字溢出加省略号这个知识不熟悉 ...

  8. php文章列表样式,css列表样式有哪些?css设置列表样式的方法

    关于列表的css样式有哪些以及如何设置css列表样式?接下来的这篇文章将为大家介绍关于css列表样式的内容. 1.css有序列表(ol)和css无序列表(ul) list.html 列表样式 水果 苹 ...

  9. css 圆形背景icon_我写CSS的常用套路(附demo的效果实现与源码)

    前言 本文是笔者写CSS时常用的套路.不论效果再怎么华丽,万变不离其宗.1.交错动画 有时候,我们需要给多个元素添加同一个动画,播放后,不难发现它们会一起运动,一起结束,这样就会显得很平淡无奇.那么如 ...

最新文章

  1. 思考Web应用的数据流
  2. float浮动的学习
  3. poj 1844 数学题
  4. android 解决setbackgrounddrawable过时
  5. SQL SERVER 数据库主键和外键的思考
  6. 激活函数详解/为什么要用激活函数
  7. 《ETL原理及应用》学习笔记 ·001【ETL介绍】
  8. Ubuntu 11.10 快捷键 gnome gFTP 服务器 vsftpd 程序 面板
  9. tensorflow之argmax与axis
  10. 用计算机知识写祝福,计算机课程设计心得体会
  11. LordPE 查看程序依赖项的好工具
  12. 维视智造机器视觉表面缺陷检测技术
  13. 如何导出某人微信聊天记录到电脑
  14. 深入探究:TIFF格式的影像如何转jpg (保持色彩不变)
  15. html 预选单选按钮,关于html:单选按钮的预选
  16. 20175208 张家华 MyOD
  17. CMYK色彩印刷原理
  18. 软件交付过程的思考与总结
  19. 试用期六个月,前三个月没有社保,这样的工作机会你会考虑吗?
  20. 500年前的北大寺物证

热门文章

  1. WACOM数位板没有压感问题的解决步骤
  2. java说影_面试被问到Java虚拟机,用这篇文章怼过去
  3. 如何轻松愉快地理解条件随机场(CRF)?
  4. 数显之家快讯:【SHIO世硕心语】2021,用最高标准要求自己,成为那个把一招练了100000次的高手!
  5. 中国式家长计算机入门怎么去的,中国式家长新手入门怎么玩_新手入门注意事项...
  6. Spring+Mybatis+SpringMVC+Maven+MySql(SSM框架)搭建实例
  7. 桩筏有限元中的弹性板计算_采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数...
  8. Qt 工具类(05):在Qt里使用Lamda表达式
  9. Java 构造器之构造器的隐式调用和显式调用
  10. 想用天猫精灵、小爱同学语音控制灯、窗帘、卷帘门、投影幕……实现你的智能家居梦?用十几元钱制作一个红外射频转发器试试吧