html打造动画【连载1】- 萌萌的大白

每个人心中都有一个暖暖的大白,blingbling的大眼睛软软的肚子宽厚的肩膀善良的心肠如果可以,我愿意沦陷在大白的肚子里永远不出来,哈哈毛球要失宠咯
哈哈哈

每个人都是独立的个体,大白也不例外,仔细观察大白有一个圆圆的头加一对黑溜溜的眼睛,没有腹肌的躯干和一颗裸露的心脏,圆滚滚的肚子两边一对宽厚的臂膀,仔细看还有两个萌萌哒小手指呢,最后一对粗的像大象一样的大腿才能支撑这软软的肚子嘛,哈哈~

定义背景
  • 因为大白是白的,所以我们可以定义一个深颜色的背景来突出一下大白,让我们在茫茫屏幕中一眼就能看到它,欧耶~
/*使用了一个渐变色,没有做各个浏览器的兼容性处理*/
body {background: linear-gradient(to bottom, #f91818 0%,#ea8181 100%);}    
定义画大白的容器
  • 定义个div容器,控制大白在屏幕中的整体位置
<!--定义大白的存放容器-->
<div id="baymax"></div>
#baymax {
    margin: 0 auto;/*设置为 居中*/
    height: 600px; /*设置高度*/
    overflow: hidden; /*隐藏溢出*/
}
画大白的头部
  • 大白的头部是一个椭圆形的,不用canvas自带的画椭圆的方法最先想到的就是先画一个长方形然后用圆角矩形(border-radius,设置成50%会有圆形的效果)的方法绘制。
  • 头部下巴那边有一层灰色的阴影,我们在长方形的下面加一个灰色的底边框就可以了。
  • 眼睛也是圆形的可以用同样的方法,将眼睛和嘴巴(那是嘴巴吗?)相对定位在头部相应位置即可。
<!-- 定义头部,包括两个眼睛、嘴 -->
        <div id="head">
            <div id="eye">
            </div>
            <div id="eye2">
            </div>
            <div id="mouth">
            </div>
        </div>
#head { height: 64px;width: 100px;
    border-radius: 50%; /*以百分比定义圆角的形状*/
    background: #fff; /*定义背景颜色*/
    margin: 0 auto;/*头部居中*/
    margin-bottom: -20px;/*这个是为了使头部与身体融为一体*/
    border-bottom: 5px solid #e0e0e0; /*设置下边框的样式,制作阴影的效果*/
    z-index: 100;  /*属性设置元素的堆叠顺序;拥有更高堆叠顺序的元素总是会
                             处于堆叠顺序较低的元素的前面*/
    position: relative; /*生成相对定位的元素,方便眼睛和嘴巴的定位*/
}
#eye,#eye2 {width: 11px;height: 13px;background: #282828;border-radius: 50%;
    position: relative; /*生成相对定位的元素,相对于上层头部容器的位置*/
    top: 30px;left: 27px;
    transform: rotate(8deg);/*旋转该元素,让眼睛有一定的角度*/
}
#eye2 {
    transform: rotate(-8deg); /*使左右两只眼睛旋转对称*/
    left: 69px; /*设置第二只眼睛相对于头部的位置*/
    top: 17px;
}
#mouth {width: 38px;height: 1.5px;background: #282828;
    position: relative;/*生成相对定位的元素,相对于上层头部容器的位置*/
    left: 34px;top: 10px;
}
大白头部效果.png
画大白的躯干和中间的小心脏
  • 大白脖子到肚子之间的躯干比头部大比肚子小,可以想象成一个竖着的椭圆形跟其他部分拼接而成(要有想象力哦,不像画画,肯定是要各种图形拼接的)。
  • 心脏就是一个圆形,里面的月牙效果可以用内部阴影做出效果。
<!-- 定义躯干,包括心脏 -->
        <div id="torso">
            <div id="heart">
            </div>
        </div>
#torso {margin: 0 auto;height: 200px; width: 180px;background: #fff;
    border-radius: 47%;/*设置圆角*/
    border: 5px solid #e0e0e0;/*设置边框*/
    border-top: none;/*因为顶部要跟头部做衔接,所以顶部不设置边框*/
    z-index: 1;/*保证躯干堆叠在头部的里面*/
}
#heart{
  width:25px;height:25px;border-radius:50%;
  box-shadow:2px 5px 2px #ccc inset;/*向边框四周添加阴影效果*/
  position:relative;/*设置心脏相对于躯干的位置*/  
  right:-115px;top:40px;
  z-index:111;/*保证心脏堆叠在躯干的外面*/
  border:1px solid #ccc;
}
大白躯干效果.png
画大白的肚子腹部,包括 cover(和躯干的连接处)
  • 大白的肚子腹部就是比躯干大一圈的椭圆然后移到躯干的中间位置。
  • 但是在衔接部分会有边框的影响,我们可以用一个白色的椭圆将衔接部分的边框遮盖住就可以了。
<!-- 定义肚子腹部,包括 cover(和躯干的连接处) -->
        <div id="belly">
            <div id="cover">
            </div>
        </div>
#belly {
    margin: 0 auto;height: 300px;width: 245px;
    margin-top: -140px;/*将腹部往上移动,差不多移到躯干的中间位置*/
    background: #fff;border-radius: 47%;
    border: 5px solid #e0e0e0; /*设置边框*/
    border-top: none;
    z-index: 5;/*保证腹部堆叠在躯干的外面*/
}
#cover {
    width: 190px;background: #fff;height: 150px;margin: 0 auto;
    position: relative;/*将cover部分相对定位到要遮挡的位置*/
    top: -20px;border-radius: 50%;
}
大白的肚子效果.png
画大白的左右臂,包括一大一小两个手指
  • 手臂部分是用一个倾斜的椭圆做成,然后隐藏到躯干后面对应的位置即可。
  • 两个小手指也是两个倾斜的小椭圆组合而成,定位到手臂对应的位置即可。
<!-- 定义左臂,包括一大一小两个手指 -->
        <div id="left-arm">
            <div id="l-bigfinger">
            </div>
            <div id="l-smallfinger">
            </div>
        </div>
        <!-- 定义右臂,同样包括一大一小两个手指 -->
        <div id="right-arm">
            <div id="r-bigfinger">
            </div>
            <div id="r-smallfinger">
            </div>
        </div>
#left-arm,#right-arm {
    height: 270px;width: 120px;border-radius: 50%;background: #fff;
    margin: 0 auto;
    position: relative; /*将手臂相对定位到相应的位置*/
    top: -350px;left: -100px;
    transform: rotate(20deg); /*将手臂(椭圆)顺时针旋转20度,更加贴合躯干*/
    z-index: -1;/*保证手臂堆叠在躯干的里面*/
}
#right-arm {
    transform: rotate(-20deg);/*右手臂(椭圆)相应的逆时针旋转20度,与左手臂对称*/
    left: 100px;top: -620px;
}
#l-bigfinger,#r-bigfinger {
    height: 50px;width: 20px;border-radius: 50%;background: #fff;
    position: relative;/*将大手指相对定位到相应的位置,并相应的旋转*/
    top: 250px;left: 50px;transform: rotate(-50deg);
}
#r-bigfinger {
    left: 50px;transform: rotate(50deg);
}
#l-smallfinger,#r-smallfinger {
    height: 35px;width: 15px;border-radius: 50%;background: #fff;
    position: relative;;/*将小手指相对定位到相应的位置,并相应的旋转*/
    top: 195px; left: 66px;transform: rotate(-40deg);
}
#r-smallfinger {
    transform: rotate(40deg);left: 37px;
}
大白手臂效果.png
画大白的左右腿
  • 腿的画法就是在矩形的基础上,用border-radius方法在矩形的四边画出不同程度的圆角形成腿的形状就行,然后将腿相对定位到身体对应的位置即可。
<!-- 定义左腿 -->
        <div id="left-leg">
        </div>
        <!-- 定义右腿 -->
        <div id="right-leg">
        </div>
#left-leg,#right-leg {
    height: 170px;width: 90px;
    border-radius: 40% 30% 10px 45%;/*矩形的左上、右上、左下、右下各个角度画不同程度的圆角*/
    background: #fff;
    position: relative;/*相对定位到对应的位置*/
    top: -640px;left: -45px;
    transform: rotate(-1deg);
    z-index: -2;/*保证腿部堆叠在最下面*/
    margin: 0 auto;
}
#right-leg {
    border-radius:30% 40% 45% 10px;
    top: -810px;left: 50px;
    transform: rotate(1deg);
}
大白腿部效果.png
写在最后的拼图游戏
  • 看完整个教程,是不是觉得画一个大白其实就很少的几个知识点:border-radius、position: relative、 z-index、transform: rotate(*deg)、border、box-shadow,剩下的就是靠position和z-index各种定位拼接堆叠,只要想明白了要哪些基本元素,就可以很轻松的拼接成一个萌萌的大白哦下面我把所有的零部件列举出来,怎么拼接就看自己的想象力咯哈哈
    大白分解和最终效果图.png
完整代码
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
    <title>html+css实现大白的画法</title>
    <meta content="" name="description">
    <meta content="" name="keywords">
  <style type="text/css">
      /*定义整体的背景色*/
      body {background: linear-gradient(to bottom, #f91818 0%,#ea8181 100%);}   
      #baymax {
    /*设置为 居中*/
    margin: 0 auto;
    /*高度*/
    height: 600px;
    /*隐藏溢出*/
    overflow: hidden;
}

#head {
    height: 64px;
    width: 100px;

    /*以百分比定义圆角的形状*/
    border-radius: 50%;

    /*背景*/
    background: #fff;

    margin: 0 auto;
    margin-bottom: -20px;

    /*设置下边框的样式*/
    border-bottom: 5px solid #e0e0e0;

    /*属性设置元素的堆叠顺序;
    拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面*/
    z-index: 100;

    /*生成相对定位的元素*/
    position: relative;
}
#eye,
#eye2 {
    width: 11px;
    height: 13px;
    background: #282828;
    border-radius: 50%;
    position: relative;
    top: 30px;
    left: 27px;

    /*旋转该元素*/
    transform: rotate(8deg);
}

#eye2 {

    /*使其旋转对称*/
    transform: rotate(-8deg);
    left: 69px;
    top: 17px;

}

#mouth {
    width: 38px;
    height: 1.5px;
    background: #282828;
    position: relative;
    left: 34px;
    top: 10px;
}
#torso,
#belly {
    margin: 0 auto;
    height: 200px;
    width: 180px;
    background: #fff;
    border-radius: 47%;

    /*设置边框*/
    border: 5px solid #e0e0e0;
    border-top: none;
    z-index: 1;
}

#belly {
    height: 300px;
    width: 245px;
    margin-top: -140px;
    z-index: 5;
}

#cover {
    width: 190px;
    background: #fff;
    height: 150px;
    margin: 0 auto;
    position: relative;
    top: -20px;
    border-radius: 50%;
}

#heart{
  width:25px;
  height:25px;
  border-radius:50%;
  position:relative;

  /*向边框四周添加阴影效果*/
  box-shadow:2px 5px 2px #ccc inset;

  right:-115px;
  top:40px;
  z-index:111;
  border:1px solid #ccc;
}

#left-arm,
#right-arm {
    height: 270px;
    width: 120px;
    border-radius: 50%;
    background: #fff;
    margin: 0 auto;
    position: relative;
    top: -350px;
    left: -100px;
    transform: rotate(20deg);
    z-index: -1;
}

#right-arm {
    transform: rotate(-20deg);
    left: 100px;
    top: -620px;
}

#l-bigfinger,
#r-bigfinger {
    height: 50px;
    width: 20px;
    border-radius: 50%;
    background: #fff;
    position: relative;
    top: 250px;
    left: 50px;
    transform: rotate(-50deg);
}

#r-bigfinger {
    left: 50px;
    transform: rotate(50deg);
}

#l-smallfinger,
#r-smallfinger {
    height: 35px;
    width: 15px;
    border-radius: 50%;
    background: #fff;
    position: relative;
    top: 195px;
    left: 66px;
    transform: rotate(-40deg);
}

#r-smallfinger {
    background: #fff;
    transform: rotate(40deg);
    top: 195px;
    left: 37px;
}

#left-leg,
#right-leg {
    height: 170px;
    width: 90px;
    border-radius: 40% 30% 10px 45%;
    background: #fff;
    position: relative;
    top: -640px;
    left: -45px;
    transform: rotate(-1deg);
    z-index: -2;
    margin: 0 auto;
}

#right-leg {
    background: #fff;
    border-radius:30% 40% 45% 10px;
    margin: 0 auto;
    top: -810px;
    left: 50px;
    transform: rotate(1deg);
}
  </style>

</head>

<body>
    <div id="baymax">
        <!-- 定义头部,包括两个眼睛、嘴 -->
        <div id="head">
            <div id="eye">
            </div>
            <div id="eye2">
            </div>
            <div id="mouth">
            </div>
        </div>
        <!-- 定义躯干,包括心脏 -->
        <div id="torso">
            <div id="heart">
            </div>
        </div>
        <!-- 定义肚子腹部,包括 cover(和躯干的连接处) -->
        <div id="belly">
            <div id="cover">
            </div>
        </div>
        <!-- 定义左臂,包括一大一小两个手指 -->
        <div id="left-arm">
            <div id="l-bigfinger">
            </div>
            <div id="l-smallfinger">
            </div>
        </div>
        <!-- 定义右臂,同样包括一大一小两个手指 -->
        <div id="right-arm">
            <div id="r-bigfinger">
            </div>
            <div id="r-smallfinger">
            </div>
        </div>
        <!-- 定义左腿 -->
        <div id="left-leg">
        </div>
        <!-- 定义右腿 -->
        <div id="right-leg">
        </div>
    </div>
</body>

</html>

PS:学习自其它文章,画完是不是特别有成就感呢,哈哈哈哈哈哈下次画点啥呢你说我来画?啦啦啦啦啦~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 9,352评论 0 8
  • 附上7月4日晚8点的直播地址:https://www.mayigeek.com/mayi-edu-web/user...
    Iris_mao阅读 820评论 4 7
  • 1.长方形 #Rectangle{ width: 200px; height: 50px; background-...
    一直以来都很好阅读 484评论 0 0
  • 上次看到简友用HTML+CSS写了一个小叮当,这次我发愤图强,终于写出了这只大白 截的静态图,他的头其实是可以动的...
    _Crown阅读 1,841评论 9 38
  • (一) 武城。 已经持续一个月降雨了。不是狂风暴雨,却也不见停歇。从早晨出门去学校,到傍晚从学校回来,小红伞始终顶...
    格格蓝阅读 430评论 2 1