css 旋转45_CSS教程——第14期

警告!本期内容建议CSS基础良好的人看,本期为实战篇,难度有点大

哈喽大家好我是wawjf

灰常抱歉我们咕咕了快两周,主要原因是我们的几位作者(加上我其实就两个)去夏令营学习了某重要东西,所以没时间更新,在这里对催更的各位朋友们说声对不起哈25df50c5f0acfdcf07badca7d25a4434.png

8d1cbb63bca5a8631758eca17e563b27.png

(放个照片各位自己感受)

如果我猜得没错,这期应该是正式期的最后一期了,接下来有时间可能会出番外篇,但是是不定时哦

这期我们就来讲一个很重要的内容——3D变形(动画)的实战

1题干

我们要用3D变形(动画)制作一个正方体,然后设计它在光标经过时沿Y轴旋转,像下面这样:

245d4ff55f2c5129d694622c5b360393.gif

2思路

首先我们要来梳理一下我们做这个动画的流程,这里我已经帮大家梳理好了:

第1步,我们要先对盒子进行一个设计

第2步,我们要对盒子做一些样式调整以及变形(动画)的安排

第3步,我们要定义关键帧

第4步,定义动画的触发方式

注意:在过程中,各位可能会看到一些没遇到过的属性,不必担心,因为这些属性比较冷门,所以我们不会当作重点来教学,大家只要知道即可

3实践

我们先写好基本代码:

3.1盒子的设计

class="stage"> <div class="container"> <div class="side front">前面div> <div class="side back">背面div> <div class="side left">左面div> <div class="side right">右面div> <div class="side top">顶面div> <div class="side bottom">底面div> div></div>

这个比较好理解,首先我们先用一个大容器stage来定义立方体,然后再定义每一面,并取名

3.2样式安排

这个比较复杂,我们区分讲

3.2.1定义画布

.stage {    width: 300px;    height: 300px;    margin: 15px auto;    position: relative;    perspective: 300px;}

这里表示创建一个高300px(height),宽300px(width)的一个画布,其中有一个属性我们可能没讲过,那就是perspective,这个属性用来设置视图的距离(其实一点用处都没有)

3.2.2定义盒子的亿些样式

.container {    top: 50%;    left: 50%;    margin: -100px 0 0 -100px;    position: absolute;    transform: translateZ(-100px);    transform-style: preserve-3d;}

这个用来定义盒子包含框的样式,transform-style表示元素的呈现形式,默认就是preserve-3d,表示在3D中呈现(没用*2)

.side {    background: rgba(255,0,0,0.3);    border: 1px solid red;    font-size: 60px;    font-weight: bold;    color: #fff;    height: 196px;    line-height: 196px;    position: absolute;    text-align: center;    text-shadow: 0 -1px 0 rgba(0,0,0,0.2);    text-transform: uppercase;    width: 196px;}

这个用来定义盒子六面的基本样式,应该没有我们没讲过的,不知道rgba的请自行网上搜索2a179a9036a3ad1d2d5633eacebddf83.png

.front {    transform: translateZ(100px);}.back {    transform: rotateX(180deg) translateZ(100px);}.left {    transform: rotateY(-90deg) translateZ(100px);}.right {    transform: rotateY(90deg) translateZ(100px);}.top {    transform: rotateX(90deg) translateZ(100px);}.bottom {    transform: rotateX(-90deg) translateZ(100px);}

3.3定义动画关键帧

@keyframes spin { 0% {transform:rotateY(0deg)} 100% {transform:rotateY(360deg)}}

这个也比较好理解,看过上期的就知道,这里我们定义了一个名叫spin的关键帧,在动画的开头以Y轴为准旋转0度,在结尾旋转360度,其实就是一个补间动画f082bcfe4642d124f982a04e6d2dc8a0.png

3.4定义动画触发方式

.container:hover {    animation: spin 5s linear infinite;}

这里我们运用了hover选择器,表示当鼠标的位置在元素上的时候,触发的动作

animation的函数我们也讲过了,就是引用我们上面定义的spin函数,然后对时间,动画运动等参数进行设定,不懂的看前面

------------

没错,我们的代码写完了

完整代码如下————

<html><head> <meta charset="utf-8"><style type="text/css"> @keyframes spin { 0% {transform:rotateY(0deg)} 100% {transform:rotateY(360deg)}}.stage {    width: 300px;    height: 300px;    margin: 15px auto;    position: relative;    perspective: 300px;}.container {    top: 50%;    left: 50%;    margin: -100px 0 0 -100px;    position: absolute;    transform: translateZ(-100px);    transform-style: preserve-3d;}.container:hover {    animation: spin 5s linear infinite;}.side {    background: rgba(255,0,0,0.3);    border: 1px solid red;    font-size: 60px;    font-weight: bold;    color: #fff;    height: 196px;    line-height: 196px;    position: absolute;    text-align: center;    text-shadow: 0 -1px 0 rgba(0,0,0,0.2);    text-transform: uppercase;    width: 196px;}.front {    transform: translateZ(100px);}.back {    transform: rotateX(180deg) translateZ(100px);}.left {    transform: rotateY(-90deg) translateZ(100px);}.right {    transform: rotateY(90deg) translateZ(100px);}.top {    transform: rotateX(90deg) translateZ(100px);}.bottom {    transform: rotateX(-90deg) translateZ(100px);}style><title>title>head><body><div class="stage">    <div class="container">        <div class="side front">前面div>        <div class="side back">背面div>        <div class="side left">左面div>        <div class="side right">右面div>        <div class="side top">顶面div>        <div class="side bottom">底面div>    div>div>body>html> 

没错,那么这样我们的动画就可以实现啦~

如果你没听懂或者出了问题,可以私信公众号哦,我们看到就会尽快回复的bcbcba3b62b20be38162f15578d19ea8.png

好啦,那么我们的CSS教程差不多就要告一段落了,接下来我可能会开始教JQuery或者帮阿列克谢写JS,或者写C++……反正我能写的我都会尽量安排啦,各位尽情期待哦

作者:

78b4d0f9792f3d98fd5eed1ce6fe65f1.png

wawjf

(我爱微积分)

四五工作室副室长(嗯,我也是082bfe2b0f38f6e1d7e8d27db87ab368.png)

四五议会 45-2(没想到我是45-2吧cfdb3b37c2f787bcc17274e5284446e8.png)

  喜欢研究理科类东西 

08年出生,福建福州人,未来的█████

     自学微积分,低调低调227f6b92c6223f76047bc9ea7d5975c6.png

                      本来想研究算法,结果在这边写稿屯图片

(PS:名字读作:瓦韦杰夫)

关注四五工作室,从零开始学WEB35b59207b5659a8c7740ab97c9f8a995.pngfa56c738dc05447ee23788abc9d218d3.png

f4725917e34c7f1ca6aa5b6341151adf.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Azure Blob Storage实现一个静态文件服务器

什么是Azure Blob StorageAzure Blob Storage是微软Azure的对象存储服务。国内的云一般叫OSS&#xff0c;是一种用来存储非结构化数据的服务&#xff0c;比如音频&#xff0c;视频&#xff0c;图片&#xff0c;文本等等。用户可以通过http在全球任意地方访问这些资源。这些资源…

台湾RD技术谈|嘉宾郭家齊董大偉黃保翕

欢迎来到Azure Show!Azure Show欢迎来到Azure Show第四期&#xff0c;本期特辑是首次推出RD技术谈栏目&#xff0c;我们邀请了宝岛台湾的三位重量级嘉宾&#xff0c;保哥、Edward和董大伟三位老师&#xff0c;他们既是微软的最有价值专家&#xff0c;也是微软技术社区区域总监&…

ajax option请求后无post请求_ThingJS:一种浏览器、服务器和技术的新组合方法——Ajax...

Web应用是一种极大方便用户的操作界面&#xff0c;数据维护技术Ajax也从中脱颖而出&#xff0c;ThingJS采用了Ajax的数据维护能够形成轻量化的开发流程。为什么Ajax通过XHR 实现Ajax 通信的一个主要限制&#xff0c;来源于跨域安全策略。默认情况下&#xff0c;XHR 对象只能访问…

[Nginx]负载均衡和动静分离

负载均衡 客户端发送多个请求到服务器&#xff0c;服务器处理请求&#xff0c;有一些可能要与数据库进行交互&#xff0c;服务器处理完毕后&#xff0c;再将结果返回给客户端。 这种架构模式对于早期的系统相对单一&#xff0c;并发请求相对较少的情况下是比较适合的&#xff…

[Nginx]nginx常用的命令

nginx常用的命令 使用nginx操作命令前提条件:必须进入nginx的目录 cd /www/local/webserver/nginx/sbin查看nginx的版本号 ./nginx -v启动nginx ./nginx关闭nginx ./nginx -s stop重新加载nginx ./nginx -s reload

pc 图片预览放大 端vue_安利一款简单好用的Vue图片预览插件

在项目中因为要经常用到图片预览效果&#xff0c;自己写的话麻烦死啦(懒)vue-photo-preview一个基于 photoswipe 的 vue 图片预览插件&#xff0c;支持移动端和PC端&#xff0c;支持各种手势操作&#xff0c;放大缩小&#xff0c;体验流畅。gitHub: https://github.com/8263277…

[Nginx]nginx的配置文件

nginx配置文件 nginx配置文件位置 nginx配置文件由三部分组成 第一部分 全局块 从配置文件开始到 events 块之间的内容&#xff0c;主要会设置一些影响 nginx 服务器整体运行的配置指令&#xff0c;主要包括配置运行 Nginx 服务器的用户&#xff08;组&#xff09;、允许生成…

Abp vNext 二进制大对象系统(BLOB)

一、简介ABP vNext 在 v 2.9.x 版本当中添加了 BLOB 系统&#xff0c;主要用于存储大型二进制文件。ABP 抽象了一套通用的 BLOB 体系&#xff0c;开发人员在存储或读取二进制文件时&#xff0c;可以忽略具体实现&#xff0c;直接使用IBlobContainer 或 IBlobContainer<T>…

[Nginx]location 指令说明

location 指令说明 该指令用于匹配 URL。 语法如下&#xff1a; 1、 &#xff1a;用于不含正则表达式的 uri 前&#xff0c;要求请求字符串与 uri 严格匹配&#xff0c;如果匹配 成功&#xff0c;就停止继续向下搜索并立即处理该请求。 2、~&#xff1a;用于表示 uri 包含正则…

基于GitBook框架搭建技术文档平台

源宝导读&#xff1a;为了向用户更好的传递ERP开放平台的价值与技术知识&#xff0c;我们基于GitBook框架搭建了一个文档中心站点&#xff0c;本文将介绍此站点的设计与实现过程。一、项目架构图因为文档会涉及到很多的产品线&#xff0c;所以目前主要是通过拉取各个产品线的文…

[Nginx]nginx 配置实例-负载均衡

nginx 配置实例-负载均衡 1、实现效果 &#xff08;1&#xff09;浏览器地址栏输入地址 http://192.168.111.134/edu/a.html&#xff0c;负载均衡效果&#xff0c;平均分担到 8080和 8081 端口中 2、准备工作 &#xff08;1&#xff09;准备两台 tomcat 服务器&#xff0c;…

css3边框交替动画_用css3实现惊艳面试官的背景即背景动画(高级附源码)

我们传统的前端更多的是用javascript实现各种复杂动画&#xff0c;自从有了Css3 transition和animation以来,前端开发在动画这一块有了更高的自由度和格局,对动画的开发也越来越容易。这篇文章就让我们汇总一下使用Css3实现的各种特效。这篇文章参考《css揭秘》这本书&#xff…

用Blazor技术封装G2Plot实现Charts组件

Blazor是一个使用 .NET 生成交互式客户端 Web UI 的框架。目前社区刚起步&#xff0c;相关的组件并不多&#xff0c;有幸有一群爱好者正在努力建设社区&#xff0c;我作为社区一员也来贡献一些内容。这里我就分享分享我封装G2Plot后的Blazor组件ant-design-charts-blazor。ant-…

[Nginx]nginx配置实例_反向代理

nginx 配置实例-反向代理1 1、实现效果 &#xff08;1&#xff09;打开浏览器&#xff0c;在浏览器地址栏输入地址 www.123.com&#xff0c;跳转到 liunx 系统 tomcat 主页面中 2、准备工作 &#xff08;1&#xff09;在 liunx 系统安装 tomcat&#xff0c;使用默认端口 80…

lts安装 rust ubuntu_一起学Rust编程「1」:开发环境

引言Rust是近几年获得广泛关注和认可的一门系统级编程语言。它严苛的静态类型检查和独特的所有权系统&#xff0c;使得编译器能够尽可能的帮开发者在编译时就排除一些符合常见模式的bug。这也让很多人认为rust是一门更加“安全”的语言。专注数据安全技术的红小豆同学也非常看好…

使用 iPerf 测试 Azure VM 之间的网速

点击上方关注“汪宇杰博客” ^_^导语以往提到测网速&#xff0c;大家可能想到的都是用著名的 speedtest 等工具测试互联网连接速度。但实际上仅仅测试互联网连接速度并不可靠&#xff0c;在部分应用场景里网速还受到服务器之间的连接速度影响&#xff0c;因此清楚你的网络性能瓶…

[Nginx]nginx 配置实例-动静分离

nginx 配置实例-动静分离 1、什么是动静分离 Nginx 动静分离简单来说就是把动态跟静态请求分开&#xff0c;不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开&#xff0c;可以理解成使用 Nginx 处理静态页面&#xff0c;Tomcat 处…

收购最大K8s服务商,重回独立的SUSE又要和Red Hat拼混合云

7月8日&#xff0c;SUSE 宣布收购 Kubernetes 管理平台公司 Rancher Labs&#xff0c;交易预计在2020年10月底之前完成。有外媒称&#xff0c;收购价预估在6亿至7亿美元之间。 宣布要收购之后&#xff0c;SUSE 的介绍前缀中又多了个关键词——Kubernetes&#xff0c;变成企业级…

post获取重定向的链接 python_【转载】python面试基础知识(四) 网络部分

最近&#xff0c;小编在整理python面试基础知识&#xff0c;看了很多博客、文章和咨询了一些大厂公司大牛。了解到&#xff0c;在python面试的时候&#xff0c;不仅要求你有项目经验&#xff0c;还要考试代码呢&#xff01;今天&#xff0c;小编和大家分享一下python面试基础知…

[MyBatisPlus]MyBatisPlus简介特性

简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 愿景 我们的愿景是成为 MyBatis 最好的搭档&#xff0c;就像魂斗罗中的 1P、2P&#xff0c;基友搭配&…