整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

0基础吉他萌新挑战:一星期入门—识谱、调音、姿势、A

0基础吉他萌新挑战:一星期入门—识谱、调音、姿势、APP推荐

文作者:HuangYiBall

  • 前言

这次为了避免过于硬核的文章引起萌新“不适”,决定将教程更加新手向!如果你是一个刚入门的吉他萌新或者有学吉他的想法而犹豫迟迟未入手的朋友,可以先参考我的第一篇文章,链接如下~

零基础吉他 篇一:萌新小白想学吉他?看完这个你就知道学吉他应该知道什么!

(请前往什么值得买站内搜索相关内容)

希望大家还是能点赞、评论、分享、打赏四连!毕竟大家的热爱才是我继续专注下去的动力~

好了,本期教程如题!我将分为以下几点(善用导航栏方便大家找到知识点

  1. 六线谱
  2. 简谱
  3. APP推荐
  4. 调音
  5. 姿势

六线谱

六线谱

如你所见,学吉他有更直观(在指型上)的谱子,也就是六线谱了!看不懂吗?没关系,接下来就来教你如何识谱!

吉他弦

首先将你手中的琴按这个样子摆放,上一章提到,常用的民谣吉他是有6根弦的。所以每根弦其实都有一个属于自己的名字,从最细的弦到最粗的弦名称分别就是1~6弦,顺序如图所示。现在再回到我们的六线谱!

六线谱弦顺序

没错,六线谱顺序和你琴这样摆放的顺序是一致的,也是说从上面的弦到下面的弦的顺序就是1~6弦~是不是很好理解很直观~接下来我们就要确定音在指板上的位置了!(第一篇文章中有提到“品”这个概念,还不了解的朋友快回去科普一下吧!)

六线谱实际上和坐标轴确定的原理是一样的!

六线谱弦和品确定位置

拿红圈圈中的3举例,3就是第三品的意思,而它所在的弦就是5弦,所以我们就可以确定这个音的位置在——5弦3品,以此类推,吉他指板上的任何一个音都可以用这个方法确定!

可能有朋友要问了,那后面谱子中0是什么意思呢?0代表的意思即是空弦的意思,即你左手不用按而直接拨动相应的琴弦即可了~到这里你是否能快速识六线谱了呢?

关于六线谱中更多的标记意思我会在以后曲目练习中逐一给大家讲解,或者自己有兴趣的可以去自学一下哦~


简谱

除了六线谱以外,我们还需要简谱辅助我们能辨认每一个音符的时值。(五线谱将在以后的文章中单独一提)

简谱

如↑所示,这个我们就可以称作是简谱了,而简单的儿歌谱中基本都会以这样的方式出来,所以简谱是我们作为萌新必须去学习的一个点~那么既然我说到简谱是辅助我们认识节奏把控节奏的,那么它上面的数字如何来告诉我们节奏的信息呢?

简谱

上面这张就是简谱的图示了~你需要先记的是四分音符,也就是单纯的一个数字!(如果你不懂四分音符、八分音符等等都没关系,在今后的课程中我会讲解)但你必须得以4分音符为基础向上、下这样记忆,会节约你许多时间!

简谱的含义

例如我们看到这边的祝你这两个音符,查表你就会发现,这就是2个8分音符,没错就是如此简单,你学会了吗?


APP推荐

在APP推荐部分的话我分为PC端和移动端推荐。

PC端:Guitar Pro、Transcribe!、chordpulse

移动端:吉他社、GuitarTuna、音乐备忘录


GuitarPro6

先介绍一下guitar pro这个软件,我用的6的破解版本,不过现在正版也不贵,大家也可以支持一下正版。这是一个基本是个吉他手都用过的打谱软件,支持多种格式的谱子查看,轨道等等都比较直观,音源的话当然没有cubase这些宿主软件来的更好,但普通的打谱,听效果很够用了~

http://www.guitarpro.cc/goumai.html

这是官网正版的购买链接!


Transcribe!

一款十分好用的扒带软件,可以放慢、加慢、换声道、变调等等,进阶的朋友们可以试试。当然我用的也是破解版。


chordpulse

一个伴奏软件,非常方便,也有许多的律动可以选择,可以导出midi文件,做即兴用还是很方便的~

当然我用的也是破解版:)

这是正版链接~


吉他社

个人比较喜欢在这边找点简单的谱子,比较快捷,而且可以直接用这个看谱子比较方便。但是该APP优化并不是很好,所以建议有PC的同学多用PC找谱子吧~

↑这是PC端的网址


音乐备忘录

可以录制你即时的灵感,并且能给你的音乐配上和弦和鼓,但是精准度不是很高,不过作为娱乐和记录乐句来看很方便,记得没错的话只在ios上有这款软件~


guitartuna

在上一篇文章中提到的一个APP,可以用作调音器、也能在工具中找到节拍器,对于练习来说真是十分方便了!还能通过玩游戏记和弦..虽然很不提倡这样的根据形状记,但是在初期对萌新来说也是蛮有效果的~


调音

关于调音,是十分基础但十分重要的一步,如果连音都不准又如何演奏呢?

调音表

TC Electronic PolyTune Clip 民谣木吉他电吉他贝司调音表校音器349元天猫精选

去购买

(TC是我用到现在非常好的一款调音表了~)

一般为了更好的灵敏度,会选择调音表调音的单块等等,但是手机上的APP其实够用,差距并没有大到离谱!

接下来就让我们回到文章1中的这张图片来讲讲如何调音吧~

调音器

首先每根弦都有自己一个常用的标准音高,如图所示,从6弦~1弦的音高分别是EADGBE,你也没有看错1弦和6弦都是E,只不过是差了一个8度的关系(如果你不懂什么是八度,那么以后会提到)。你要事首先就是记住这6个字母,因为你以后每一次的练琴都需要经历——调音,这个环节。

步骤:从6弦开始拨响6弦空弦(手机靠近音孔或调压器夹在琴头)→看表中指针在左(音低了)还是在右(音高了)→如果音低了就转旋钮(逆时针紧),高了反之(注意123弦和456方向相反)→小幅度调节,并用右手拨响弦→指针到中间绿色弦表示调准了!(+-1、2影响不会很大,不能太多!)

当然还有其他的调音方法,将在以后的教程中教给大家~


姿势

姿势方面是一个很重要的问题,不正确的姿势会产生很大的负面影响,所以初学者练琴的时候首先要关注自己的姿势问题。

首先我们先认识我们左右手的代号

右手代号

左手代号

记住这些代号将在以后的识谱中更加方便~

好了接下来我们先讲持琴姿势(针对惯用手是右手的同学)

持琴姿势

①用自己上肢的手臂靠住琴的面板

②琴的圆弧处靠在右腿上(如果感觉琴低了,可以加个脚垫)

③琴头应略微向上倾斜

完成以上三点应该是已经形成支点,你不需要用左手去扶琴都不好有晃动了~

接下来先谈右手姿势,给大家上一个我教的小孩子的姿势。

右手姿势

①五指基本成一个圆弧度(大拇指略微前于其余4指)

②除大拇指外四指自然弯曲,且关节都要保持“突出”

③通常4、5、6弦上的音由大拇指弹奏、而3、2、1弦上的音分别由食指、中指、无名指弹奏

④整体位置在音孔上面(比较舒服的地方)

⑤上臂和手腕应自然不突起,整只手靠住面板自然挂下,基本成一条直线

左手姿势

左手姿势其实分很多状态下的,并不是固定的,比如弹和弦的时候,比如solo的时候等等,这边要说的是偏古典一点的姿势(今后的爬格子练习应严格按照这个姿势)

①红色圈所示,第一个关节必须全部凸起,手指近似垂直按在指板上

②如蓝圈所示,手指应该按在这个品的靠后的品丝之前一点

③如绿圈所示,手腕适量向前,保持一个舒服的姿势(一开始当然难受啦!)

④中指和无名指别像图中分那么开,正常拉开就行!

⑤大拇指位置处于四指的中间部分,不能平躺着!(重点中的重点)

⑥大拇指应微侧着按,用第一关节用力顶住琴颈,并且在琴颈一半偏上的位置(意思就是:正面看过去就应该如上面那张右手姿势图一样,是看不见大拇指的!)

好了大概的姿势要点就是这些,例如和弦应该用怎么样的姿势我将在后面的和弦学习中提及等等~

希望大家在开始学习的时候一定要严格要求自己的姿势(重点)


最后

以上就是挑战一星期学会简单儿歌的第一天内容了,希望刚入门的朋友们都能按照较为正确的这个姿势严格要求自己的手型(对,没错我反复提这一点,因为它很重要),而右手左手如何弹奏的问题,我将在下一文章中给大家讲解,总之,学完这节课希望你对谱子、我们常用的软件、简谱、姿势有了初步基本的了解了~!

都看到这了!还不给个点赞、关注、分享、打赏四连???

如果你还有不懂的问题和疑惑,都可以在留言区评论哦,我都会即时回复大家的!最后,关注我!!一起挑战一星期学儿歌吧!(当然,还有有更进阶的干货啦~)

那么我们下期见!

信看过《哈利·波特》的小伙伴都曾幻想过自己能够进入霍格沃茨,拥有像哈利那样帅帅的疤痕,以及神秘的魔法力量。

图源:《哈利·波特与魔法石》官方剧照

然而实际情况是:熬夜火锅一时爽,痘痘留疤火葬场。

图源:https://kknews.cc/fashion/xvpa4e9.html

不过现实生活中,也会有人即使受伤也不容易留下疤痕,那么人的皮肤上为什么会留下痘印或者疤痕?为什么有的人就不怎么留疤呢?

Part. 1

为了修复伤口而出现的疤痕

疤痕通常是皮肤软组织受到伤害后自主修复所形成。不过既然都修复了咋还留点痕迹呢?这是因为修复后所形成的皮肤组织和正常的皮肤是有所不同的。

现在让我们在显微镜下一起来观察看看二者有什么不同。在显微镜下,能看到人的健康皮肤里有很多发挥不同功能的细胞。这些松散的细胞由胶原蛋白像绳子一样紧紧地绑在一起,并形成紧密的皮肤组织,这也让细胞间能够传输需要的营养物质和信息。当皮肤受伤时,这些连接细胞的绳子也就随之断开,从而形成伤口。

蓝色的线表示胶原蛋白,裂缝表示伤口图片来源:Ted

这时候,皮肤为了愈合,会在伤口也就是绳子断裂的地方由成纤维细胞形成很多新的绳子,即胶原蛋白,它们会尝试把断裂的地方连起来。

虽然通过这种方式伤口可以愈合,但是健康皮肤中胶原蛋白的排列往往规整又复杂,而修复后的胶原蛋白只能单向简单排列。这导致新形成的皮肤延展性和敏感度都不如从前。修复后皮肤的低延展性也导致其外表看着与正常皮肤不同,也就是我们看到的疤痕。

而更糟糕的是,伤口的修复可能会用力过猛,产生过量的胶原蛋白。这些过量的胶原蛋白会影响皮肤正常的功能,比如出汗生长毛发,甚至使得皮肤增生突起,让疤痕看起来更加明显。

伤口修复过程中过量胶原蛋白积累导致增生形成肥厚疤痕图源:Veer图库

Part. 2

为什么有人不容易留疤?

伤疤其实是生物进化的结果,无脊椎动物比如章鱼蜗牛等受伤后可以按照原样修复损伤,而脊椎动物为了能更快地修复伤口,进化出伤疤这种机制。在我们看来非常可恶的伤疤,对于在野外生活的动物们却有重要的意义,因为伤疤能让伤口快速的闭合,从而减少发炎率,进而提高存活能力。

这种进化同样也体现在人类胚胎发育中,人类的早期胚胎受伤后是可以完全按照原样修复的,在之后的发育过程中才逐渐出现伤疤这种修复方式。胚胎发育的过程重现了生物进化的历程,这也从侧面说明了伤疤修复是进化的产物。

涡虫在受伤后可以完全修复自己,甚至被切成几段就会成长为几个新的个体

图源:https://www.peekme.cc/post/1005627

由于每个人伤疤修复启动的强度不同,会出现有的人容易留疤,而有的人不容易留疤,这些性状也可以遗传给下一代。例如不同人种之间就存在明显的差异,黑种人、黄种人比白人更容易留下疤痕。

对于不同年龄的人来说,疤痕的形成也是有所不同的。研究显示,老年人比青壮年更容易长疤,这是由于老年人身体里引起伤疤修复的炎症和细胞因子与人类胚胎早期的表达水平很像。

即使在我们自己身体的不同部位,伤疤的形成也存在差异。在三角肌和胸骨区域的伤口更容易留下疤痕,而在口腔内的伤口最容易完全修复不留痕迹。科学家们也在研究这些伤疤产生的不同机制,帮助我们开发可以抑制伤疤产生的药物。

更易产生疤痕的三角肌和胸肌区域图片来源:https://kknews.cc/health/axvg2bv.html

Part. 3

不同的伤口留下的伤疤类型也会有所不同

根据形状的不同,伤疤可以分成很多类型。最常见的是青春痘造成的痘坑,这种伤疤被叫做萎缩性伤疤,成因主要是伤口很小,修复没有产生很多胶原蛋白导致产生凹陷。

而小手术造成的细小伤口容易产生细小发白的拉伸疤痕,妊娠纹和肥胖纹也属于拉伸疤痕。这种疤痕主要来自皮肤深层的伤口:最外面的皮肤很快修复没有受损,而深层的皮肤则由于肥胖怀孕等张力过大被拉出伤口。

由于怀孕皮肤张力过大受损产生的妊娠纹

图片来源:Veer图库

正常的伤疤都会在两到三年内逐渐变小,但是还有一种伤疤则会随着时间越变越大。这种伤疤从一个突起的小伤疤开始延展,最后长大到蟹足状的红肿,所以被叫做蟹足肿。之所以会出现这种情况,主要是由于在伤口修复后,成纤维细胞还在不断分泌胶原蛋白进行修复,导致增生越长越大。这种增生的组织由于是由成纤维细胞分泌胶原蛋白产生,因此也被称作纤维化。

纤维化这个词大家肯定都有所耳闻,比如肺纤维化、心脏纤维化等疾病,而这些疾病产生的原因和疤痕相似,即为了修复器官中出现的伤口,器官会分泌胶原蛋白,产生的纤维化伤疤让器官像皮肤一样延展性等特征变差,最终导致器官出现系列问题。所以不要小瞧小小的伤疤,它们可能造成很大的问题哦。

三角肌区域的蟹足肿图片来源:https://health.businessweekly.com.tw/AArticle.aspx?id=ARTL000117611

Part. 4

市面上的各种治疗药物是否有效?

对于追求美观的人来说,各种治疗疤痕的药物成了他们的福音。常见的治疗疤痕的药物或是包含洋葱提取物、维生素E、硅胶等成分、或是通过疤痕按摩、弹力胶布等消除疤痕。目前有研究对各种药物的疗效进行了研究,研究中在疤痕上涂不同的药物,并与涂凡士林软膏或者不处理的对照组进行对比,观察各药物的疗效。

市面上常见的祛疤产品图片来源:产品官网

洋葱提取物最开始被用于疤痕治疗主要由于科学家们发现它们体外可以抑制成纤维细胞产生胶原蛋白,从而推测可以减小由于胶原蛋白产生的疤痕。但是在实际的实验过程中,研究者发现洋葱提取物软膏和凡士林对照组患者伤疤没有明显区别,甚至部分患者伤口由于洋葱的刺激产生过敏反应。

和洋葱提取物类似,维生素E被认为有美容效果,并且可以抑制发炎进而抑制疤痕产生。然而实际实验中,不论是外观上,还是多普勒成像实验中,都显示它没有明显效果。

硅胶被用作治疗伤疤,主要是因为它质地柔软且富含水分,被认为可以软化周围皮肤,给伤口提供一个很好的环境去长出更多细胞而不是胶原蛋白。实际的实验中,在4-6个月的随访后,确实发现使用硅胶药物的患者在色素沉积和大小上与对照组相比有轻微缓解。不过使用过程中出现了几例皮疹副作用的患者,停药后皮疹也随之消失。

疤痕胶带被用作治疗的原因是它能够通过胶带的连接让伤口感觉处在正常的张力,从而不做出很多疤痕修复反应。实际实验中疤痕胶带的效果也很好,大部分使用者的恢复都好于对照组。

而疤痕按摩则是基于按摩可以使得新长出来的胶原蛋白断裂,从而增加皮肤柔韧度,帮助恢复。实际跟踪测试中,建议患者手术拆线后10-14天后,如果皮肤完全愈合,可以每天对伤口进行10分钟的按摩,最终的效果也是明显好于对照组。

总之,疤痕对于我们来说其实是一种保护机制,但如果嫌它丑的话,可以听从医生安排进行治疗,切忌自作主张使用药物。最后祝愿大家都能没有伤口,远离疤痕。

参考文献:

1.Bayat, A. (2003). Skin scarring. BMJ, 326(7380), 88–92.https://doi.org/10.1136/bmj.326.7380.88

2.Grigoryan, K. V., & Kampp, J. T. (2020). Summary and evidence grading of over‐the‐counter scar treatments. International Journal of Dermatology, 59(9), 1136–1143.https://doi.org/10.1111/ijd.15060

3.Sinha, S. (2015). How do scars form? TED-Ed. https://ed.ted.com/lessons/how-do-scars-form-sarthak-sinha

声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。

来源: 中科院高能所

于Transform变形属性大家都不陌生吧,可以通过此属性实现元素的位移translate(x,y),缩放scale(x,y),2d旋转rotate(angle),3d旋转rotate3d(angle),倾斜变换skew(x-angle,y-angle)等,你也许已经很熟悉了这些属性,或许你也会有这样的困惑,这些属性在实际项目中如何应用呢?

今天的文章,笔者不会详细一一介绍相关属性,默许大家已经很熟悉了,今天只做例子,聊聊这些属性在实际项目中的应用。

本篇文章笔者将带着大家完成以下几个例子:

  • 内容垂直居中
  • 对话框气泡
  • 弹跳的小球
  • 转动的线圈(SVG)
  • 翻转的卡片

本篇文章预计15分钟

内容垂直居中

在前端开发过程中,内容居中是常见的需求。其中,居中又可以分为水平居中和垂直居中。水平居中是比较容易的,直接设置元素的margin:0 auto 就可以实现。但是垂直居中相对来说是比较复杂一些的。实现的方法也比较多,比如flex布局,display:table等方法,今天笔者将通过使用Transform属性进行实现。

基本的页面布局和样式

为了方便大家理解,我们先布局两个基本的文本框内容,html代码如下:

<div class="parent">
 <div class="child">
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
 </div>
</div>
<div class="parent">
 <div class="child">
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam
 </div>
</div>

上述代码并不复杂,我们定义了两段内容长度不同的文本。接下来让我们为文本内容定义宽度,高度和边框,让我们更加直观展示文本内容在展示区域的位置,其css部分代码如下:

.parent {
 height: 300px;
 width: 600px;
 padding: 0 1em;
 margin: 1em;
 border: 1px solid red;
}
.child {
 font-size: 1.2rem;
}

加上CSS代码后,我们完成了基本的页面布局和样式,页面的效果如下图:

使其垂直居中

接下来我们来实现文本垂直居中,有的同学可能想到了使用top属性,实现文本的垂直居中,代码可能是这样的:

.child {
 font-size: 1.2rem;
 position: relative;
 top: 50%;
}

运行后,页面的实际效果和我们预想不一致,如下图所示:

从上面的图中可以看出,文本框的实际效果,文本内容的内容并不是在中间而是在下半部分,并不是我们预想的垂直居中,你也许在想,如果我们把文本内容在往上提一半,正好能满足垂直居中的需求,Transform属性中正好有个平移的属性translate(x,y),我们可以使用Transform让元素在y轴方向移动,样式代码修改如下:

.child {
 font-size: 1.2rem;
 position: relative;
 top: 50%;
 transform: translateY(-50%);
}

正如我们所想,我们实现了内容的垂直居中,完成的效果如下:

细心的同学会注意到,元素的中心位置是在“半像素”这条线上,有可能显得模糊,我们可以添加perspective(视域)属性,让其更清楚,如下代码所示:

.child {
 // ...
 transform: perspective(1px) translateY(-50%);
}

最终的代码

经过上面的步骤,我们最终完成了内容的垂直居中,最终的效果如下:

以下是最终的css代码,是不是很简单:

.parent {
 height: 300px;
 width: 600px;
 padding: 0 1em;
 margin: 1em;
 border: 1px solid red;
}
.child {
 font-size: 1.2rem;
 position: relative;
 top: 50%;
 transform: perspective(1px) translateY(-50%);
}

对话框气泡

微信想必大家天天用,我们是否注意到聊天界面里文本对话框气泡,右边或左边会凸出个小箭头指向聊天人的头像,这个例子就要实现类似微信对话框的气泡。

创建基本的页面布局

首先我们先创建一个基本的布局,代码如下:

html部分

<div class="box">
 <div class="box-content">
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam
 </div>
</div>

css部分

html {
 font-size: 16px;
}
.box {
 width: 10rem;
 background-color: #e0e0e0;
 padding: 1rem;
 margin: 1rem;
 border-radius: 1rem;
}

完成以后,我们的页面效果如下:

添加气泡箭头

接下来我们来实现右箭头的气泡效果,贴着文本框我们在右边放置个空文本框,我们使用css的为元素属性 ::before 来实现,样式代码如下:

.box::before {
 content: '';
 width: 1rem;
 height: 1rem;
 background-color: #e0e0e0;
 overflow: hidden;
}

注:上述宽和高的属性,如果值越大,气泡的箭头就越大。

这个宽高1rem的正方形无内容的文本还在文本框内,我们还无法看到,我们需要将这个文本框右对齐,使其的一半内容露在外边,修改后的css代码如下:

.box {
 // ...
 position: relative;
}
.box::before {
 // ...
 position: absolute;
 right: -0.5rem;
}

完后的效果,我们的页面效果是这样的:

气泡箭头应该在内容中间区域的位置,接下来,移动这个小方块的位置,正好可以利用我们刚才学到垂直居中知识,css样式代码如下:

.box::before {
 // ...
 top: 50%;
 transform: translateY(-50%);
}

完成后的,这个小方块真的居中了,页面实际效果如下图所示:

从上图我们可以看出,为了实现向右小箭头三角的效果,我们只需要将方块旋转45度即可,修改后的css代码如下:

.box::before {
 // ...
 top: 50%;
 transform: translateY(-50%) rotate(45deg);
}

最终完成的代码

好了,我们的气泡效果完成了,效果如下:

最终完成的css代码如下:

html {
 font-size: 20px;
}
.box {
 width: 10rem;
 background-color: #e0e0e0;
 padding: 1rem;
 margin: 1rem;
 border-radius: 1rem;
 position: relative;
}
.box::before {
 content: '';
 width: 1rem;
 height: 1rem;
 background-color: #e0e0e0;
 overflow: hidden;
 position: absolute;
 right: -0.5rem;
 top: 50%;
 transform: translateY(-50%) rotate(45deg);
}
.box-content {
 position: relative;
 z-index: 2;
}

弹跳的小球

接下来我们要完成一个常见的需求,比如我们通过API请求后台数据,上传图片等不能立返回结果,我们需要让用户在页面停留片刻,为了给用户良好的用户体验,我们一般都会有个正在加载中的动画进行提示,这个例子笔者将带着大家完成下面一个弹跳的小球,效果如下,是不是很酷:

首先我们先进行基本的静态布局

html部分:

<div class="loader"></div>

css部分:

.loader {
 border-radius: 50%;
 width: 50px;
 height: 50px;
 background: linear-gradient(to bottom, #cb60b3 0%,#c146a1 50%,#a80077 51%,#db36a4 100%);
}

这样我们就完成了一个具有颜色渐变的静态的紫色小球,效果如下:

接下来声明动画名

如何让这个静态的小球动起来呢,我们需要借助css的动画属性,我们来定义一个名为jump的无限循环动画,先快后慢,然后反方向执行一遍动画,1.5s循环一次,代码如下:

.loader {
 // ...
 animation: jump 1.5s ease-out infinite alternate;
}

然后完成动画的实现

怎么定义名为jump的动画?我们让小球在垂直方向移动,我们可以使用translateY进行移动小球:

@keyframes jump {
 from {
 transform: translateY(0px)
 }
 to {
 transform: translateY(-50px)
 }
}

为了让小球有弹跳的空间,我们需要将小球距离顶部50px,css代码修改如下:

.loader {
 margin-top: 50px;
}

继续完善动画效果

为了让动画效果更加有趣,我们可以让小球边旋转边上升,动画部分修改如下:

@keyframes jump {
 from {
 transform: translateY(0px) rotate(0deg)
 }
 to {
 transform: translateY(-50px) rotate(360deg)
 }
}

我们动画可以继续完善,让其更加自然,小球上升过程中,相对地面的观察者,弹的越高,就会感觉小球越小,接下来修改小球动画部分,使用scale属性来缩小球,代码如下:

@keyframes jump {
 from {
 transform: translateY(0px) rotate(0deg) scale(1,1);
 opacity: 1;
 }
 to {
 transform: translateY(-50px) rotate(360deg) scale(0.8,0.8);
 opacity: 0.8;
 }
}

最终完成的css代码

好了,这个效果我们就这样完成了,其完成后的css代码如下,是不是很简单?

.loader {
 margin-top: 50px;
 border-radius: 50%;
 width: 50px;
 height: 50px;
 animation: jump 1.5s ease-out infinite alternate;
background: linear-gradient(to bottom, #cb60b3 0%,#c146a1 50%,#a80077 51%,#db36a4 100%);
}
@keyframes jump {
 from {
 transform: translateY(0px) rotate(0deg) scale(1,1);
 opacity: 1;
 }
 to {
 transform: translateY(-50px) rotate(360deg) scale(0.8,0.8);
 opacity: 0.8;
 }
}

转动的线圈(SVG)

这个例子,我们要实现一个更炫的加载提示器,这次我们要做的是基于SVG的动画效果,要理解这部分内容,你需要会svg相关的基础知识,具体的效果如下,感觉就像”头部“的那个东西在牵动线条转圈圈,是不是很酷:

首先进行基本的绘制

我们先用svg绘制一个基本的圈,示例的代码如下:

<svg class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg"> <!-- 1 -->
 <circle class="path spinner-border" cx="33" cy="33" r="31" stroke="url(#gradient)"></circle> <!-- 2 -->
 <linearGradient id="gradient"> <!-- 3 -->
 <stop offset="50%" stop-color="#000" stop-opacity="1"></stop>
 <stop offset="65%" stop-color="#000" stop-opacity=".5"></stop>
 <stop offset="100%" stop-color="#000" stop-opacity="0"></stop>
 </linearGradient>
 <circle class="path spinner-dot" cx="37" cy="3" r="2"></circle> <!-- 4 -->
</svg>

上述代码我们完成了以下内容:

  • 我们定义了一个66×66的视口。
  • 我们定义了一个半径为31px的圆圈。
  • 对圆圈的填充我们使用了线性填充,分成了三段,实现了比较酷的渐变填充的线条效果。
  • 接下来我们在圆圈上添加了一个小圆,让用户感觉这个线圈是这个小圆点牵着转动。

接下来我们来定义css部分,将画布定义成180*180,示例代码如下:

.spinner {
 margin: 10px;
 width: 180px;
 height: 180px;
}

然后我们来定义线圈和实心的小圆的css属性:

.spinner-dot {
 stroke: #000;
 stroke-width: 1;
 fill: #000;
}
.spinner-border {
 fill: transparent;
 stroke-width: 2;
 width: 100%;
 height: 100%;
}
.path {
 stroke-dasharray: 170;
 stroke-dashoffset: 20;
}

上述代码有几个属性需要解释下:

  • fill: transparent 的效果就是让大圈圈的填充颜色为透明色,只是个圈圈的线条而已。
  • stroke-dasharray: 170 的意思就是绘制点线和虚线,其实我们显示的不是一个完整的圆圈,给人一种转成圆圈的线条感觉,其值代表线条的长度
  • stroke-dashoffset: 表示偏移绘制起点的距离,其值越大,我们的线条越短。
  • 通过stroke-dasharray,stroke-dashoffset这两个属性,让我们绘制了一个不完整的圆圈。

关于stroke-dasharray,stroke-dashoffset的介绍建议大家看张鑫旭老师的这篇博文《纯CSS实现帅气的SVG路径描边动画效果》 www.zhangxinxu.com/wordpress/2…

通过上述代码,我们静态的线圈绘制好了,效果如下所示:

定义动画,让线圈转动起来

让线圈动起来,其实就是让其一直选择360度而已,我们让其2秒转一圈,示例代码如下:

.spinner {
 // ...
 animation: rotate 2s linear infinite;
}
@keyframes rotate {
 to {
 transform: rotate(360deg);
 }
}

让牵动线圈运动的小实心圆更有趣,感觉就像一个牵动发动机的“头”,让其倾斜摆动,示例代码如下:

.spinner-dot {
 // ...
 animation: skew 2s linear infinite alternate;
}
@keyframes skew {
 from {
 transform: skewX(10deg)
 }
 to {
 transform: skewX(40deg)
 }
}

最终完成的代码

就这样我们实行了一个个酷酷的的,转动线圈的效果,完整的css代码如下:

.spinner {
 margin: 10px;
 animation: rotate 2s linear infinite;
 width: 180px;
 height: 180px;
}
.spinner-dot {
 stroke: #000;
 stroke-width: 1;
 fill: #000;
 animation: skew 2s linear infinite alternate;
}
.spinner-border {
 fill: transparent;
 stroke-width: 2;
 width: 100%;
 height: 100%;
}
.path {
 stroke-dasharray: 170;
 stroke-dashoffset: 20;
}
@keyframes rotate {
 to {
 transform: rotate(360deg);
 }
}
@keyframes skew {
 from {
 transform: skewX(10deg)
 }
 to {
 transform: skewX(40deg)
 }
}

翻转的卡片

这个动画效果也是我们常见的,类似一些网站的图片,我们鼠标悬停在上面,图片进行了翻转,就好像一个卡片,翻转到其背面,显示了背面的内容,实现后的效果如下所示:

静态页面布局

首先我们先完成图片卡片的基本布局,示例代码如下:

<section class="container">
 <figure class="photo">
 <img src="http://www.hmttv.cn/uploadfile/2024/1012/20241012124735684.jpg" class="front side">
 <figcaption class="back side">
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 </figcaption>
 </figure>
 <figure class="photo">
 <img src="http://www.hmttv.cn/uploadfile/2024/1012/20241012124736257.jpg" class="front side">
 <figcaption class="back side">
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 </figcaption>
 </figure>
 <figure class="photo">
 <img src="http://www.hmttv.cn/uploadfile/2024/1012/20241012124737829.jpg" class="front side">
 <figcaption class="back side">
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 </figcaption>
 </figure>
</section>

上述代码我们有三张图片,并且我们定义了图片背面的文字内容。

接下来我们来定义容器的样式,让三张图片在页面居中:

.container {
 margin: 10px auto;
}

然后我们定义每张图片在容器中左浮动,排成一行,并定义图片的宽与高:

.photo {
 width: 22vw;
 height: 20vw;
 min-width: 130px;
 min-height: 100px;
 float: left;
 margin: 0 20px;
}

接着我们定义图片的填充方式为cover:

.photo img {
 object-fit: cover;
}

最后我们定义图片文字介绍的样式:

.side {
 width: 100%;
 height: 100%;
}

完成后的效果如下:

接着我们继续将文字介绍内容移到图片的顶部:

.photo {
 // ...
 position: relative;
}
.side {
 // ...
 position: absolute;
}

完成后的效果如下所示:

让文字到背面去

现在开始使用css的魔法属性,将图片放置到3D空间去,将其3d变换,给人一种透视的感觉,我们使用transform-style这个属性,示例代码如下:

.photo {
 // ...
 transform-style: preserve-3d;
}

然后修改side样式,定义文字内容为背面,且背面属性不可见,这里使用了css的backface-visibility属性:

.side {
 // ...
 backface-visibility: hidden;
}

然后定义back相关的样式,先让背面翻转过去,在y轴上旋转180度。

.back {
 transform: rotateY(180deg);
 text-align: center;
 background-color: #e0e0e0;
}

这样我们的文字描述部分在背面被隐藏了。

定义悬停动画

接下来,我们定义鼠标悬停翻转卡片的功能,示例代码如下:

.photo:hover {
 transform: rotateY(180deg);
}

为了让动画效果不这么生硬,我们需要增加过渡的动画属性,代码完善如下:

.photo {
 // ...
 transition: transform 1s ease-in-out;
}

最终完成后的代码

好了,最后一个例子我们也完成了,是不是很有趣,最终完整的css代码如下:

.container {
 margin: 10px auto;
}
.photo {
 width: 22vw;
 height: 20vw;
 min-width: 130px;
 min-height: 100px;
 float: left;
 margin: 0 20px;
 position: relative;
 transform-style: preserve-3d;
 transition: transform 1s ease-in-out;
}
.photo:hover {
 transform: rotateY(180deg);
}
.photo img {
 object-fit: cover;
}
.side {
 width: 100%;
 height: 100%;
 position: absolute;
 backface-visibility: hidden;
}
.back {
 transform: rotateY(180deg);
 text-align: center;
 background-color: #e0e0e0;
}

友情提醒

毫无疑问,CSS3为我们提供了强大的动画功能,甚至不需要任何JS我们就可以于创建有趣和美丽的动画效果。但是,重要的是要合理使用它们而不是滥用它们。请记住,您的网站是为用户而不是为自己服务的(在大多数情况下,无论如何)。因此,应该利用CSS动画为用户提供更好的用户体验,而不是耍酷。

小节

在本文中,我们已经了解了如何将CSS的Transforms变换属性运用到真实的项目中。通过本文,我们已经了解了如何在页面上垂直对齐元素,对话框气泡,弹跳和旋转的加载动画,以及如何实现翻转动画。当然,也许你学会了其中的技巧,但是创造炫酷的动画,唯一的瓶颈限制就是你的想象力。

更多精彩内容,请微信关注“前端达人”公众号