发布网友 发布时间:2022-04-21 20:22
共2个回答
懂视网 时间:2022-04-20 18:01
我们一般做水平三列布局都是用的float方法,将每一块浮动显示在同一行。这种方法会导致元素没有原来的高度属性,要用清除浮动来解决空间占据问题。对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。
2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了几乎所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。基本语法查看博客:Flex 布局教程:语法篇
另外还要对css中的伪元素有一定的了解:before、after
最后想要表情动起来,最主要的就是animation属性的使用了。
我们先对整体座椅个布局,使各个表情能直观的展示在各个位置上,因为每个表情几乎占据的是一个正方形的空间,所以我们将每个青蛙表情水平展示在页面上,这里就用到了flex布局方式。
<div class="container"><!--所有表情的存放容器,flex布局,所有子项目水平显示,自动换行,水平居中显示,竖直方向从顶部开始--><div class="emoji-container"> <!--存放青蛙表情的大容器,控制大小间距之类的属性--><div class="icon"> <!--存放每一个青蛙表情的容器,控制每一个表情自己的位置和特征--><div class="frog" id="frog-n"></div></div></div></div> body {background-color: #F1FFE6;} .container {width: 950px;margin: 70px auto 0px auto;text-align: center;} .container .emoji-container { /*flex弹性布局,多用于左右并排布局,跟float的作用类似,不用清除浮动*/ display: -webkit-box; display: -ms-flexbox; display: flex; /*justify-content属性定义了项目在主轴上的对齐方式。center就是在x轴上居中显示*/ -ms-grid-column-align: center; justify-items: center; /*align-items属性定义项目在交叉轴上如何对齐。flex-start就是从y轴的最上端开始排列*/ -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; /*flex-wrap属性定义,如果一条轴线排不下,如何换行。wrap:换行,第一行在上方。*/ -ms-flex-wrap: wrap; flex-wrap: wrap; } .container .emoji-container .icon { margin-right: 40px; margin-bottom: 40px; } .container .emoji-container .icon:nth-child(6n) { margin-right: 0px; } .icon {width: 125px;height: 120px;position: relative;} .icon .frog {position: absolute; top: 0;left: 0;width: 100%;height: 100%;}
观察一个每一个蛙蛙表情,虽然每一个表情形态各异,但是它们的身体、嘴巴、眼睛、小红晕的位置和大小几乎都是一致,这些一致的样式我们可以写成公用样式,每个蛙蛙的特征再根据每个人蛙蛙的id写单个的样式进行重绘或者覆盖。
<div class="frog" id="frog-1"> <!-- 蛙蛙的身体部分 --> <div class="body"> <!-- 蛙蛙的嘴巴 --> <div class="mouth"></div> </div> <!-- 蛙蛙的眼睛 --> <div class="eyes"> <!-- 蛙蛙的左右眼睛 --> <div class="eye eye-left"> <!-- 蛙蛙的内眼圈儿 --> <div class="eye-inner"> <!-- 蛙蛙的眼珠 --> <div class="pupil"> <!-- 蛙蛙眼圈里的光晕 --> <div class="light"></div> </div> </div> </div> <div class="eye eye-right"> <div class="eye-inner"> <div class="pupil"> <div class="light"></div> </div> </div> </div> </div> </div>/*蛙蛙身体部分样式*/.icon .frog .body {width: 110px;height: 86px;background-color: #A3D768; border-radius: 50%;position: absolute;top: 25px;left: 0;right: 0;margin: auto;box-shadow: 4px 4px 0px 0px rgba(163, 215, 104, 0.3); }/*蛙蛙嘴巴部分样式,因为每个蛙蛙的嘴巴不一样,所以公共样式就只定义了位置*/.icon .frog .body .mouth {margin: auto;}.icon .frog .eyes {width: 86px;height: 35px;position: absolute; top: 8px;left: 0;right: 0;margin: auto; }/*蛙蛙眼睛部分样式*/.icon .frog .eyes .eye {width: 35px;height: 35px;}.icon .frog .eyes .eye:before {content: "";display: block;width: 100%;height: 100%; background-color: #A3D768;border-radius: 50%; }/*蛙蛙眼圈部分样式*/.icon .frog .eyes .eye .eye-inner {background-color: #fff;width: 80%;height: 80%; position: absolute;top: 10%;left: 10%;border-radius: 50%; }/*蛙蛙眼珠部分样式*/.icon .frog .eyes .eye .eye-inner .pupil {background-color: #3F6A34; width: 60%;height: 60%;position: absolute;top: 20%;left: 20%;border-radius: 50%; }/*蛙蛙眼珠里的亮光部分样式*/.icon .frog .eyes .eye .eye-inner .pupil .light {background-color: #fff; width: 50%;height: 50%;position: absolute;top: 10%;left: 10%;border-radius: 50%; }/*蛙蛙左右两边眼睛的位置*/.icon .frog .eyes .eye-left {position: absolute;top: 0px;left: 0;}.icon .frog .eyes .eye-right {position: absolute;top: 0px;right: 0;}
第一只小青蛙是在基本样式的基础上有一个嘴角上扬的动态效果,所以要完成第一只蛙蛙的绘制,只要在公用样式的基础上加上嘴巴的动效就可以了,dom结构也是一样的。
.frog#frog-1 .body .mouth {width: 18px;height: 22px;border-bottom: 3px solid #3F6A34;position: absolute;top: 6px;left: 0;right: 0;-webkit-animation: smile 3.8s linear 0s infinite;animation: smile 3.8s linear 0s infinite; } @-webkit-keyframes smile { 0% { border-radius: 0%; } 20% { border-radius: 50%; } 70% { border-radius: 50%; } } @keyframes smile { 0% { border-radius: 0%; } 20% { border-radius: 50%; } 70% { border-radius: 50%; } }
第二只小青蛙的嘴巴是一个大嘴巴,脸颊上还有两个小红晕,眼睛是冒着爱心的,所以在dom结构上要加上红晕的div,嘴巴眼睛的样式也要做相应的修改。(主要是嘴巴、红晕和红色爱心的制作)
<div class="frog" id="frog-2"> <div class="body"> <!--存放蛙蛙的脸颊红晕--> <div class="blush"></div> <!--加上大嘴巴的class big-month--> <div class="mouth big-mouth"></div> </div> <div class="eyes"> <div class="eye eye-left"> <div class="eye-inner"> <div class="pupil"> <div class="light"></div> </div> </div> </div> <div class="eye eye-right"> <div class="eye-inner"> <div class="pupil"> <div class="light"></div> </div> </div> </div> </div> </div>/*第二只青蛙脸颊两边的红晕样式*/.icon .frog .body .blush {width: 75px;height: 9px;position: absolute;top: 20px;left: 0;right: 0;margin: auto; }.icon .frog .body .blush:before, .icon .frog .body .blush:after {content: "";display: block;width: 12px;height: 100%;background-color: #F7D2C9;border-radius: 50%; }.icon .frog .body .blush:before {position: absolute;top: 0;left: 0;}.icon .frog .body .blush:after {position: absolute;top: 0;right: 0;}/*第二只青蛙的嘴巴样式,用圆角和阴影的方式制作而成*/.icon .frog .body .big-mouth {width: 30px;height: 20px;border-radius: 0 0 50% 50%;box-shadow: 2px 2px 0px 0px rgba(63, 106, 52, 0.3); } .frog#frog-2 .mouth {background-color: #fff;position: absolute;top: 30px;left: 0;right: 0; }/*第二只青蛙的眼睛样式,将眼圈的背景设置为透明色,圆圈里面的亮光隐藏*/ .frog#frog-2 .eye-inner {top: 17%;background-color: transparent !important; -webkit-animation: hearts 0.6s linear 0s infinite alternate;animation: hearts 0.6s linear 0s infinite alternate; } @-webkit-keyframes hearts {0% { -webkit-transform: scale(0.7); transform: scale(0.7); }100% { -webkit-transform: scale(1); transform: scale(1); } } @keyframes hearts {0% { -webkit-transform: scale(0.7); transform: scale(0.7); }100% { -webkit-transform: scale(1); transform: scale(1); } }/*第二只青蛙的眼睛的爱心样式,左上角和右上角设置交圆角50%,然后左右对应的旋转45度合并成一个爱心的形状*/ .frog#frog-2 .eye-inner:before, .frog#frog-2 .eye-inner:after {content: "";display: block; height: 70%;width: 40%;background-color: #C71F1C;border-radius: 50% 50% 0 0; } .frog#frog-2 .eye-inner:before {position: absolute;top: 0;left: 5px; -webkit-transform: rotate(-45deg);transform: rotate(-45deg); } .frog#frog-2 .eye-inner:after {position: absolute;top: 0;right: 5px; -webkit-transform: rotate(45deg);transform: rotate(45deg); } .frog#frog-2 .eye-inner .pupil {display: none;}
第三只小青蛙相对于公共样式的变化是眼睛和嘴巴的变化,所以最主要的是画出左眼样式和嘴巴样式。
舌头的制作一个椭圆旋转对应的角度额按后被嘴巴遮挡住一部分制作而成,
<div class="frog" id="frog-3"> <div class="body"> <div class="mouth"> <!--存放舌头样式的容器--> <div class="toungue"></div> </div> </div> <div class="eyes"> <!--左眼添加wink的样式,作为左眼眯眼样式--> <div class="eye eye-left wink"> <div class="eye-inner"> <div class="pupil"> <div class="light"></div> </div> </div> </div> <div class="eye eye-right"> <div class="eye-inner"> <div class="pupil"> <div class="light"></div> </div> </div> </div> </div> </div>/*第三只小青蛙的左眼眯眼样式*/.icon .frog .eyes .eye.wink .eye-inner { background-color: transparent; width: 17px; height: 3px; background-color: #3F6A34; border-radius: 0; position: absolute; top: 15px; left: 0; right: 0; margin: auto; -webkit-transform: rotate(21deg); transform: rotate(21deg); }.icon .frog .eyes .eye.wink .eye-inner:before, .icon .frog .eyes .eye.wink .eye-inner:after { content: ''; display: block; width: 17px; height: 3px; background-color: #3F6A34; }.icon .frog .eyes .eye.wink .eye-inner:before { -webkit-transform: rotate(25deg); transform: rotate(25deg); position: absolute; top: -4px; left: 0; }.icon .frog .eyes .eye.wink .eye-inner:after { -webkit-transform: rotate(-25deg); transform: rotate(-25deg); position: absolute; top: 4px; left: 0; }.icon .frog .eyes .eye.wink .pupil { display: none; }/*第三只小青蛙的右眼亮光位置*/ .frog#frog-3 .eye-right .light { position: absolute; top: 10%; left: auto; right: 10%; }/*第三只小青蛙的嘴巴吐舌头样式*/ .frog#frog-3 .mouth { width: 25px; height: 25px; position: absolute; top: 5px; left: 0; right: 0; -webkit-transform: rotate(23deg); transform: rotate(23deg); } .frog#frog-3 .mouth:before { content: ""; display: block; border-bottom: 3px solid #3F6A34; width: 100%; height: 100%; border-radius: 50%; background-color: #A3D768; z-index: 3; position: absolute; top: 0px; left: 0; } .frog#frog-3 .toungue { width: 16px; height: 20px; background-color: #C71F1C; border-radius: 30px; z-index: 2; position: absolute; top: 17px; left: 4px; -webkit-transform-origin: center top; transform-origin: center top; -webkit-animation: toungue 2.0s linear 0s infinite; animation: toungue 2.0s linear 0s infinite; } @-webkit-keyframes toungue { 0% { -webkit-transform: scale(1, 1);transform: scale(1, 1); } 40% { -webkit-transform: scale(1, 1);transform: scale(1, 1); } 75% { -webkit-transform: scale(1, 0);transform: scale(1, 0); } } @keyframes toungue { 0% { -webkit-transform: scale(1, 1);transform: scale(1, 1); } 40% { -webkit-transform: scale(1, 1);transform: scale(1, 1); } 75% { -webkit-transform: scale(1, 0);transform: scale(1, 0); } } .frog#frog-3 .toungue:before { content: ""; display: block; width: 2px; height: 4px; background-color: #410a09; position: absolute; left: 0px; right: 0px; bottom: 5px; margin: auto;
热心网友 时间:2022-04-20 15:09
幼年小悲伤蛙的表情包叫一只单纯不做作的小呱呱,它的走红就是因为常常又丧又悲伤的表情。 因为它总是丧着一张脸所以大家亲切的称它悲伤蛙,但是没想到很多人还和悲伤蛙撞脸了。
就是这样一个有点重口同时有点鬼畜的漫画,2009年1月22日被网友放到4chan这个网站上,然后就火了。网友在这只好爽蛙的基础上,进行了二次创作,把它的嘴巴调了一个方向,然后就诞生了后来火遍全球的悲伤蛙。
2020年11月28日,在草莓音乐节三亚站现场,悲伤蛙等知名二次元形象纷纷破壁空降音乐节现场。悲伤蛙作为近些年受到年轻人追捧的二次元形象,其萌贱,悲伤中又不失乐观的属性。
不仅与年轻群体的日常有着微妙的共鸣,也与民谣,电音等音乐爱好者群体有着重合,因此在今年的草莓音乐节筹备期,摩登天空便与悲伤蛙大中华区代理商爱闪达成了合作意向,在草莓音乐节现场搭建专属区域,让粉丝有机会近距离接触这只雅痞蛙蛙。
2021年5月,中国绿化基金会幸福家园项目携手悲伤蛙pepe开展栽在你手里,种出绿色笑脸系列环保主题倡导活动。此次活动邀请到龚俊,欧阳娜娜,陈意涵,许凯,马天宇等多位公益明星大使参与传播倡导,并在微博平台开展话题互动,吸引粉丝及公众关注并身体力行保护生物多样性。
这张集颓废,悲伤和loser为一体的表情,常常被用来表达失望,悲伤,受挫等心情,正好符合当时4chan论坛多数用户的心理状态。随着围绕青蛙Pepe的表情包创作一发不可收拾,青蛙Pepe很快走出4chan,侵占整个社交网络。从2014年开始,青蛙Pepe成为一个流行梗,粉丝包括水果姐Kate Perry等等。
更经过网友们的不断恶搞后,逐渐出现了不同的表情,还有漫画。不过,在网友们的各种创作下,这个表情包的走向渐渐难以控制。2015年9月,有一个马来西亚的创作者把Pepe和川普联系了起来,创作出了下面的表情包。
随着和川普的联系越来越多,Pepe的形象也逐渐黑化和扭曲,网民自创的pepe表情包里开始含有一些极端标志比如希特勒小胡子,三K党兜帽,各种白人至上符号等,这只蛙也变成了代表仇恨的表情包。
到9月27日,美国的反诽谤联盟正式把这只青蛙形象加入种族仇视数据库。一旦有人使用这个表情包,网站就会告诉人们使用者可能有种族歧视,白人至上倾向。