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在全球任意地方访问这些资源。这些资源…

[Nginx]简介

Nginx 简介 Nginx 概述 Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好&#xff0c;中国大陆使用 nginx网站用户有&#xff1a;百度、京东、新浪…

简述tcp协议三报文握手过程_TCP协议中的三次握手和四次挥手(图解)

建立TCP需要三次握手才能建立&#xff0c;而断开连接则需要四次握手。整个过程如下图所示&#xff1a;先来看看如何建立连接的。首先Client端发送连接请求报文&#xff0c;Server段接受连接后回复ACK报文&#xff0c;并为这次连接分配资源。Client端接收到ACK报文后也向Server段…

台湾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…

一文看懂async和“await”关键词是如何简化了C#中多线程的开发过程

一文看懂"async"和“await”关键词是如何简化了C#中多线程的开发过程当我们使用需要长时间运行的方法&#xff08;即&#xff0c;用于读取大文件或从网络下载大量资源&#xff09;时&#xff0c;在同步的应用程序中&#xff0c;应用程序本身将停止运行&#xff0c;直…

[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;、允许生成…

pe下找不到ssd硬盘_【进入pe系统后认不到硬盘解决方法】进入pe系统看不到硬盘_pe系统不认硬盘...

2014-01-07 11:11:42有个别朋友在使用一键U盘装系统工具安装系统&#xff0c;在进入pe装系统时发现找不到电脑硬盘了&#xff0c;接下来看看小编为大家带来的解决方法&#xff01;2017-03-01 17:01:06pe是装系统最常用到的预安装环境&#xff0c;只需通过启动盘制作工具就可以将…

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 包含正则…

卡尔曼_卡尔曼估计两步法

在上一篇文章中手把手推导了一遍卡尔曼增益&#xff0c;不熟悉的小伙伴可以看养生的控制人&#xff1a;卡尔曼增益推导​zhuanlan.zhihu.com这里再回顾一下重点。问题重述假设真实系统为其中 。我们对系统状态的估计&#xff08;数据融合&#xff09;为其中卡曼尔增益为我们可以…

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

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

C++中有关queue常用函数的用法及其注意要项

11&#xff1a;C中有关queue常用函数的用法及其注意要项 #include<bits/stdc.h> using namespace std; int main(){queue <int> q;q.push() //在队尾插入一个元素q.pop() //删除队列第一个元素q.size() //返回队列中元素个数q.empty() //如果队列空则返回true…

[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-…

C++与C语言中有关数组中元素排序

C与C语言中有关数组中元素排序 C语言中 ​ #include<stdio.h> #define n 4 int main(){ int a[n]; int i,j,temp; for(i0;i<n;i) scanf("%d",&a[i]); for(i0;i<n-1;i){ for(j0;j<n-1-i;j) if(a[j]>a[j1]){ tempa[j]; a[j]a[j1]; a[j1]temp; }…