【二次元的CSS】—— 用 DIV + CSS3 画咸蛋超人(详解步骤)

2016-05-17 HTML5cn

仅仅使用div作为身体的布局,用css3的各种transform和圆角属性来绘制各部位的形状,当然也不会使用任何图片哦。那就没意思了。

有的同学说,用canvas不是能画得更逼真而且更简单吗?这点我也非常赞同,但我的理由还是,那就没意思了。

这次写的详细一点,把各个部位都拆出来分析。

第一步:头部轮廓

<header></header>

.ultraman header {

border: 7px solid #000;

border-top: 15px solid #000;

width: 200px;

height: 200px;

border-radius: 50% 50% 60% 60%;

position: absolute;

background: #fff;

}

第二步:就算作是头发吧

<header>

<div class="hair"></div>

</header>

.ultraman header .hair {

position: absolute;

top: -40px;

left: 80px;

width: 0;

height: 0;

border-left: 20px solid transparent;

border-right: 20px solid transparent;

border-top: 140px solid #000;

border-radius: 30% 30% 50% 50%;

}

第三步:眼睛

<header>

<div class="hair"></div>

<div class="left_eye"></div>

<div class="right_eye"></div>

</div>

</header>

因为我是用less写的嘛,所以先定义了一个眼睛的类,然后再生成2个眼睛

.eye(@l,@r,@deg){

border:5px solid #000;

width:70px;

height:70px;

background:#ffc30a;

border-radius:@l @r;

transform:rotate(@deg);

position:absolute;

top:60px;

}

.left_eye{

.eye(50%,80%,-15deg);

left:10px;

}

.right_eye{

.eye(80%,50%,15deg);

right:10px;

}

第四步:耳朵

<header>

<div class="hair"></div>

<div class="left_eye"></div>

<div class="right_eye"></div>

<div class="left_ear"></div>

<div class="right_ear"></div>

</header>

.ear(@deg){

width:20px;

height:50px;

border:5px solid #000;

position:absolute;

top:70px;

z-index:-1;

transform:rotate(@deg);

background:#fff;

}

.left_ear{

.ear(-7deg);

left:-20px

}

.right_ear{

.ear(7deg);

right:-20px

}

第五步:小身体

<div class="body">

<div class="light"><span></span></div>

</div>

身上有个灯,时间到了,会嘀嘟嘀嘟叫的,所以加一个动画效果

@keyframes jump{

0%{

background:#48e1e7;

}

50%{

background:#961e1e;

}

100%{

background:#48e1e7;

}

}

.body{

width:100px;

height:80px;

background:#fff;

border:7px solid #000;

position:absolute;

top:180px;

left:50px;

border-radius:0 0 20% 20%;

z-index:-1;

.light{

width:40px;

height:40px;

border:3px solid #000;

position:relative;

top:20px;

left:30px;

background:red;

transform:rotate(-45deg);

span{

width:8px;

height:8px;

border:2px solid #000;

background:#48e1e7;

display:block;

position:absolute;

left:3px;

top:26px;

border-radius:50%;

z-index:2;

animation:jump 0.5s infinite;

}

}

}

第六步:手

<div class="left_hand"></div>

<div class="right_hand"></div>

手只要旋转一下就好了,比出一个十字

.hand{

width:30px;

height:100px;

border-radius:60% 60% 50% 50%;

border:7px solid #000;

position:absolute;

background:#fff;

}

.left_hand{

.hand;

top:160px;

left:30px;

}

.right_hand{

.hand;

top:160px;

left:90px;

transform:rotate(-90deg);

}

第七步:裤子

<div class="trousers"></div>

.trousers{

border:7px solid #000;

position:absolute;

background:red;

width:100px;

height:45px;

top:240px;

left:50px;

z-index:-2;

border-radius:0 0 15% 15%;

}

第八步:腿

<div class="left_footer"></div>

<div class="right_footer"></div>

<div class="egg"></div>

至于egg是什么, 我就不赘述了。

.footer{

width:34px;

height:80px;

border-radius:50% 50% 60% 60%;

border:7px solid #000;

position:absolute;

background:#fff;

z-index:-3;

}

.left_footer{

.footer;

left:46px;

top:260px;

transform:rotate(20deg);

}

.right_footer{

.footer;

right:20px;

top:270px;

transform:rotate(-50deg);

}

.egg{

background:#75d8f9;

width: 18px;

height: 30px;

top: 286px;

left: 97px;

position: absolute;

border-radius: 50%;

border-top:7px solid #000;

}

收工

欢迎大家吐槽。

作者:lancer07

原文:https://segmentfault.com/a/1190000005101636

【二次元的CSS】—— 用 DIV + CSS3 画咸蛋超人(详解步骤)的更多相关文章

  1. CSS3 transform 属性详解(skew, rotate, translate, scale)

    写这篇文章是因为在一个前端QQ群里,网友 "小豆豆" (应他要求要出现他的网名......) ,问skew的角度怎么算,因为他看了很多文章还是不能理解skew的原理.于是,我觉得有 ...

  2. CSS进阶内容—浮动和定位详解

    CSS进阶内容-浮动和定位详解 我们在学习了CSS的基本知识和盒子之后,就该了解一下网页的整体构成了 当然如果没有学习之前的知识,可以到我的主页中查看之前的文章:秋落雨微凉 - 博客园 CSS的三种布 ...

  3. CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)

    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)   在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾 ...

  4. 第94天:CSS3 盒模型详解

    CSS3盒模型详解 盒模型设定为border-box时 width = border + padding + content 盒模型设定为content-box时 width = content所谓定 ...

  5. CSS3属性transform详解【转载】

    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)   在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾 ...

  6. 《网页设计基础——CSS的四种引入方式详解》

    网页设计基础--CSS的四种引入方式详解     一.行内式:   规则: 1. 行内式是所有样式方法中最为直接的一种,它直接对HTML的标记使用style属性,然后将CSS代码直接写在其中.   格 ...

  7. 【二次元的CSS】—— 纯CSS3做的能换挡的电扇

    这次分享的电扇,和以往用css3画人物相比 多加了一点交互,就是电扇开关的地方,用到了一点点css3的 :checked +div 这个很少用到的选择器来实现的. GitHub传送门:https:// ...

  8. CSS3 中border-image详解

    CSS3 border-image详解.应用及jQuery插件 一.border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊 ...

  9. css控制UL LI 的样式详解

    用<ul>设置导航 <style> #menu ul {list-style:none;margin:0px;} #menu ul li {float:left;} </ ...

随机推荐

  1. 菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t[转]

    菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blo ...

  2. ie浏览器下载附件中文乱码

    String llq = request.getHeader( "USER-AGENT" ).toLowerCase();Boolean isIE = false;if (llq. ...

  3. Python自学--part2

    概要 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 一.列表.元祖操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 na ...

  4. docker中使用源码方式搭建SRS流媒体服务

    一.背景 搭建流媒体服务的方式一般会采用nginx+rtmp和srs服务两种,前者是nginx加上插件所用,而后者是专门为了为了流媒体而生,在这一节中我们将从头搭建srs流媒体服务 二. 运行环境 为 ...

  5. springboot2 +thymeleaf

    springboot 1.5. 9+ thymeleaf <!--sidebar--> <nav class="col-md-2 d-none d-md-block bg- ...

  6. 再不懂时序就 OUT 啦!,DBengine 排名第一时序数据库,阿里云数据库 InfluxDB 正式商业化!

    云数据库 InfluxDB® 版介绍 阿里云数据库 InfluxDB® 版已于近日正式启动商业化 . 云数据库 InfluxDB® 是基于当前最流行的开源数据库 InfluxDB 提供的在线数据库服务 ...

  7. BZOJ2191:Splite

    Description 给两个多边形,问否在平移旋转不翻转不重叠的情况下拼成一个凸多边形. Input 每组第一行一个数N表示第一个多边形的顶点数,下接N行按顺序(逆/顺时针)给出顶点坐标,再下一行给 ...

  8. utils02_使用github创建一个远程仓库

    1.注册github账号 https://github.com/ 2.第一次登陆需要创建一个仓库 3.在本地生成密钥和公钥 ssh-keygen -t rsa 会在当前用户下生成2个文件就是公钥和密钥 ...

  9. ERROR:ORA-30076: 对析出来源无效的析出字段

    DEBUG:key: sql: select count(*) as col_0_0_ from jc_user cmsuser0_ where 1=1 and cmsuser0_.register_ ...

  10. node.js 安装步骤

    1.打开链接(http://nodejs.cn/download/) 2.下载自己所需的安装包(32位 or 64位.哪个系统) 3.双击直接安装(成功如下图) 4.点击 Node.js comman ...