CSS3_过渡_2D 变换_瓶体旋转_动态时钟
1. 过渡 transition
允许 CSS 的属性值在一定时间内平滑的过渡,
在鼠标点击,鼠标滑过或对属性改变中触发,并圆滑的改变 CSS 的属性值
简写属性:
- #box {
 width: 300px;
 height: 200px;
 background-color: red;
 transition: property timing-function duration delay;
 }
 /*
 没有顺序限制
 但是必须先写 过渡,再写 延迟
 即 先写 duration , 再写 delay
 transition: 1s; 等同于 trasition: 1s all ease 0;
 */ #box:hover {
 width: 200px;
 height: 300px;
 background-color: blue;
 }
- transition-property
- 定义: 设置对象的参与过渡的属性,或者说要监测的属性
- transition-property: width; 
 
- 可选值: 
- all 默认值,所有属性都改变
- none 没有属性改变
- property 元素的属性名
 
 
- 定义: 设置对象的参与过渡的属性,或者说要监测的属性
- transition-duration
- 定义: 设置过渡效果需要花费的事件,以 秒/毫秒 计算
- transition-duration: 1s; 
 transition-duration: 1000ms;
 
- 默认值: 0
 
- 定义: 设置过渡效果需要花费的事件,以 秒/毫秒 计算
- transition-timing-function
- 定义: 设置过渡的动画类型(只能使用一种类型)
- ease 默认值,平滑过渡(慢-快-慢)cubic-bezier(0.25, 0.1, 0.25, 1)
- linear                 线性过渡(匀速)      cubic-bezier(0, 0, 1, 1)
- transition-timing-function: 贝塞尔曲线;
- transition-timing-function: cubic-bezier(.17,.67,.82,.35); 
 
- ease-in 慢-快 cubic-bezier(0.42, 0, 1, 1)
- ease-out 快-慢 cubic-bezier(0, 0, 0.58, 1)
- ease-in-out 慢-快-慢 cubic-bezier(0.42, 0, 0.58, 1) 相较于ease 的幅度更大
 
 
- 定义: 设置过渡的动画类型(只能使用一种类型)
- transition-delay
- 定义: 设置延迟的过渡时间,指定等待 1s/1000ms 再开始过渡动画。
- 默认值: 0
 
- 过渡 样式的位置
- 放在 原来样式 中
- 鼠标悬浮 于 鼠标离开,都有过渡效果
 
- 放在 新的样式 中
- 只有鼠标悬浮时有效果,鼠标离开时无效果
 
 
- 放在 原来样式 中
- 多属性过渡,需求: 3s 延迟后 width 变成 300px,再延迟 1s 后 background-color 变成 red
- 使用逗号隔开 两个过渡参数
- #box {
 width: 300px;
 height: 200px;
 background-color: red;
 transition: 2s 3s width linear, background 2s linear;
 }
 /* (面试题)
 transition: width 3s linear 2s, 2s;
 // 不会有延迟 2s,立刻执行 3s 匀速过渡动画
 (1)过渡的覆盖问题,相当于:
 transition: all 2s ease 0s;
 */
 
- js 实现页面加载时过渡
- (2)DOM 页面没有渲染完,过渡是不生效的,即 js 代码执行了,才开始监控属性
- 元素渲染完,过渡才生效
- 解决方案:
- 1. 使用 window.setTimeout() 来保证元素渲染完。
- 2. window.onload(); 保证外部所有资源加载完。
 
 
 
- (2)DOM 页面没有渲染完,过渡是不生效的,即 js 代码执行了,才开始监控属性
- (3)并不是所有的属性都能加过渡
- 就看元素的变化,有没有中间的过程
- 元素有无到有的过渡,使用 opacity: 0→1; ,而不能使用 display: none→block;
 
- 幽灵边框
- /************** 幽灵边框 ***************/ 
 .ghost_border {
 position: relative;
 top: 0px;
 left: 0px;
 } .ghost_border::before,
 .ghost_border::after {
 content:""; position: absolute;
 display: block;
 width:;
 height: 20%;
 background-color: olive;
 transition: 1s all ease 0s;
 } .ghost_border::before {
 top:;
 left:;
 } .ghost_border::after {
 bottom:;
 right:;
 } body .ghost_border:hover::before,
 body .ghost_border:hover::after {
 width: 100%;
 }
 
2. 2D 变换
(面试题)display: inline 元素不支持 transform:即不支持 2D 变换,也不支持 3D变换
尽管元素外形发生变化 ,其在文档流的位置不变。 即不影响周围元素布局
- 旋转 rotate(0deg)
- 定义: 通过制定一个角度,对元素指定一个 2D 的旋转
- 使用:
- transform: rotate(0deg);
- deg 增大,元素顺时针旋转
- deg 减小,元素逆时针旋转
- 0deg 和 360deg 的效果是一样的
 
 
- 平移 translate(0px, 0px)
- 定义:
- 使用:
- transform: translateX(0px);
- 水平方向平移
- 数值增大,向右移
- 数值减小,向左移
 
- transform: translateY(0px);
- 垂直方向平移
- 数值增大,向下
- 数值增大,向上
 
- transform: translate(0px, 0px);
- 同时控制 水平,垂直 平移
- transform: translate(0px); 等同于 transform: translateX(0px);
- 即只写一个参数,第二个参数默认为 0px。即只控制水平平移
 
 
- transform: translateX(0px);
 
- 缩放 scale(1)
- 定义:
- 使用
- transform: scale(1);
- 默认值 1
- 可以为负值,-1 时为翻转,再小就是翻转放大
 
- transform: scaleX(1);  
- 设置水平方向的缩放
 
- transform: scaleY(1);
- transform: scale(1, 1);  
- 如果只写一个参数,元素的 水平,垂直方向 同时进行缩放
 
 
- transform: scale(1);
 
- 扭曲 skew(0deg)
- 定义: 改变用户视觉角度,
- 使用:
- transform: skewX(0deg);
- 水平方向扭曲
- 扭曲度增加,视觉上 向左
- 扭曲度减小,视觉上 向右
 
- transform: skewY(0deg);
- 垂直方向扭曲
- 扭曲度增加,视觉上 向下
- 扭曲度减小,视觉上 向上
 
- transform: skew(0deg, 0deg);
- skew(0deg);
- 只写一个数值,是等同于 transform: skewX(0deg); 控制水平方向扭曲的
 
 
- transform: skewX(0deg);
- 当扭曲度 skew(90deg) 时,元素将垂直于屏幕,元素将在视觉上看不见
- 当扭曲度 skew(180deg) 时,与 skew(0deg) 效果一致
 
- 变换基点 transform-origin: center;    (为元素的左上角)
- 定义: 元素变换的基准点。
- 使用:
- transform-origin: 水平方向 垂直方向;
 
- 默认基准点:
- rotate 几何元素中心点
- scale 几何元素中心点
- skew 几何元素中心点
- translate 元素自身位置
 
 
- #box {
 width: 200px;
 height: 200px; transform: rotate(0deg); /* 设置基准点为元素左上角 */
 transform-origin: 0px 0px; /* 默认值 */
 transform-origin: center;
 transform-origin: 100% center;
 transform-origin: 100%;
 transform-origin: 100% 100%;
 transform-origin: 100px center;
 transform-origin: 100px;
 transform-origin: 100px 100px; /* 关键字 */
 transform-origin: top left;
 transform-origin: top;
 transform-origin: right;
 transform-origin: bottom;
 transform-origin: left;
 }
- /*百分比参照于自身 
 border-radius:
 background-size:
 background-origin:
 transform: translate(-50%, -50%);
 */
- 当前元素水平,垂直居中
/* 所有场景可用 */ 
 #box {
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%, -50%);
 } /* 前提条件: width 和 height 必须已知 */
 #box {
 width: 200px;
 height: 200px; position: absolute;
 top: 50%;
 left: 50%;
 margin: -100px 0 0 -100px;
 } #box {
 width: 200px;
 height: 200px; position: absolute;
 top: 50%;
 left: 50%;
 margin: -50% 0 0 -50%;
 }
- 综合变换(经常两两组合)
- #box {
 width: 200px;
 height: 200px;
 background-color: olive; // 效果1 移动 200px 再缩小 0.5
 transform: translate(200px) scale(0.5); // 效果2 缩小 0.5,移动 100px
 transform: scale(0.5) translate(200px);
 /* x相当于 transform: translate(100px) scale(0.5); */
 } /*
 scale 发生缩放时,
 会将后面的 translate 的数值也会进行缩放
 对于后面的 rotate,skew 无影响 rotate 发生旋转时,
 会将后面的 translate 的 xy 坐标轴也旋转
 会将后面的 skew 的扭曲轴进行旋转 skew 发生扭曲时,
 会将后面的 translate 的 xy 坐标轴也扭曲
 */
 
3. 瓶体旋转: 
- 先写瓶纸,再写瓶体,保证瓶体在上
- 包裹(瓶纸-瓶体)
- 使用定位,使之重合
- 使用 js 设置包裹的宽高
- img 转成块儿,处理底部留白
- overflow 隐藏瓶纸
- 使用 js 定时器 更新 transform: translateX(colaX+"px");
- 在纸后加一张纸,解决极值问题
 
 - ... ... 
 <style type="text/css">
 body {
 width: 100%;
 color: #000;
 background: #fff;
 font: 14px Helvetica, Arial, sans-serif;
 } /**** Cola Can Scroll ****/
 #can_box img {
 display: block; /* 解决图片留白 */
 } #can_bg img {
 float: left; /* 两张图片在一行 */
 } #can_box {
 position: relative;
 margin: 150px auto;
 overflow: hidden;
 } #can_bg {
 position: absolute;
 top: 10px;
 left: 0px;
 } #can_body {
 position: absolute;
 top: 0px;
 left: 0px;
 }
 </style>
 </head> <body> <div id="can_box"> <div id="can_bg">
 <img id="cola_bg" src="./img/cola_bg.jpg"/>
 <img src="./img/cola_bg.jpg"/>
 </div> <div id="can_body">
 <img id="cola_can" src="./img/cola_can.png"/>
 </div> </div> <!-- javascript 代码 -->
 <script type="text/javascript">
 window.onload = function(){
 var canBox = document.getElementById("can_box");
 var canBg = document.getElementById("can_bg");
 var colaBg = document.getElementById("cola_bg");
 var colaCan = document.getElementById("cola_can"); canBox.style.width = colaCan.offsetWidth+"px";
 canBox.style.height = colaCan.offsetHeight+"px"; canBg.style.width = colaBg.offsetWidth* 2+"px";
 canBg.style.height = colaCan.offsetHeight+"px"; var canLeft = 0;
 window.setInterval(function(){
 canLeft -= 1;
 if(canLeft <= -colaBg.offsetWidth){
 canLeft = 0;
 } canBg.style.transform = "translate("+canLeft+"px)";
 },20);
 };
 </script>
 ... ...
4. 动态时钟
- HTML 元素 刻度、时、分、秒、表芯
- 定位使各元素归位。
- 用 js 给各个刻度设置变换基点,再设置旋转角度
- 注意细节: 整点刻度的 变换基点 与普通刻度的 变换基点 不一样
- 注意细节: 时针,分针移动方式。。。
- 例如 11:30:30,
- sec = date.getSconds();
- min = date.getMinutes()+sec/60;
- hour = date.getHours()+min/60;
 
 
- 例如 11:30:30,
 
- <!DOCTYPE html> 
 <html>
 <head>
 <meta charset="UTF-8" />
 <title>Timing Clock</title> <link rel="stylesheet" type="text/css" href="./css/index.css" /> <script type="text/javascript" src="./js/kjfFunctions.js"></script>
 <script type="text/javascript" src="./js/index.js"></script> <style type="text/css">
 body {
 width: 100%;
 color: #000;
 background: #96b377;
 font: 14px Helvetica, Arial, sans-serif;
 } /**** Timing clock ****/
 #clock_dial {
 position: relative; width: 300px;
 height: 300px;
 margin: 300px auto 0;
 border-radius: 50%;
 background: olive;
 } #clock_second {
 position: absolute;
 top: 30px;
 left: 149px;
 transform-origin: 1px 120px; width: 2px;
 height: 120px;
 background-color: red;
 } #clock_minute {
 position: absolute;
 top: 70px;
 left: 148px;
 transform-origin: 2px 80px; width: 4px;
 height: 80px;
 background-color: green;
 } #clock_hour {
 position: absolute;
 top: 100px;
 left: 147px;
 transform-origin: 3px 50px; width: 6px;
 height: 50px;
 background-color: blue;
 } #clock_core {
 position: absolute;
 top: 145px;
 left: 145px; width: 10px;
 height: 10px;
 border-radius: 50%;
 background-color: pink;
 } .clock_scale {
 position: absolute;
 top: 0px;
 left: 149px;
 transform-origin: 1px 150px; width: 2px;
 height: 5px;
 background-color: #68ea94;
 } .clock_scale:nth-child(5n) {
 transform-origin: 2px 150px; width: 4px;
 height: 10px;
 background-color: #68ea94;
 }
 </style>
 </head> <body> <div id="clock_dial">
 <div id="clock_second">
 </div> <div id="clock_minute">
 </div> <div id="clock_hour">
 </div> <div id="clock_core">
 </div> </div> <!-- javascript 代码 -->
 <script type="text/javascript">
 /**** 画刻度 ****/
 var clockDial = document.getElementById("clock_dial"); var i = 0;
 for(i=0; i<=59; i++){
 var firstDiv = document.createElement("div");
 firstDiv.className = "clock_scale";
 clockDial.appendChild(firstDiv);
 firstDiv.style.transform = "rotate("+ 6*i +"deg)";
 } /**** 动起来 ****/
 var clockSecond = document.getElementById("clock_second");
 var clockMinute = document.getElementById("clock_minute");
 var clockHour = document.getElementById("clock_hour");
 window.setInterval(function(){
 var nowTime = new Date();
 s = nowTime.getSeconds();
 m = nowTime.getMinutes()+s/60;
 h = nowTime.getHours()+m/60;
 clockSecond.style.transform = "rotate("+s*6+"deg)";
 clockMinute.style.transform = "rotate("+m*6+"deg)";
 clockHour.style.transform = "rotate("+h*30+"deg)"; },1000);
 </script>
 </body>
 </html>
CSS3_过渡_2D 变换_瓶体旋转_动态时钟的更多相关文章
- OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图
		读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ... 
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
		一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ... 
- CCS3的过渡、变换、动画以及响应式布局、弹性布局
		CSS3 过渡 .变换.动画 在没有CSS3之前,如果页面上需要一些动画效果,要么你自己编写 JavaScript,要么使用 JavaScript 框架(如 jQuery)来提高效率. 但是CSS3出 ... 
- Spring_MVC_教程_快速入门_深入分析
		Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ... 
- 基于samba实现win7与linux之间共享文件_阳仔_新浪博客
		基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置. 
- 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异
		Underscore.js是一个很精干的库,压缩后只有5.2KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程. 本文仅探讨Underscore.js的两个 ... 
- CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站
		CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站 CLOSE-UP FORMA ... 
- 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线【图】_品牌资讯_服饰_太平洋时尚网
		聚焦设计交易与商业落地 DANG·DHUB设计师平台上线[图]_品牌资讯_服饰_太平洋时尚网 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线 
- 联系我们_你我想法_【有男度】UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站
		联系我们_你我想法_[有男度]UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站 联系我们 2012-02-17 国内北京公司总部 邮编 ... 
随机推荐
- C语言网 蓝桥杯 1117K-进制数
			这是一道较难的题目,我刚开始用排列组合的方式来做,并没有做出来,故运用了的深搜算法. 深搜算法的概念: 选其中一条路,遍历完成后,逐步返回直至全部遍历,最后返回起点. 解题思路 : 题目中对零的个数没 ... 
- ActiveMQ依赖JDK版本关系
			1.如何查看官方发布的activeMQ依赖的JDK版本1)以ActiveMQ 5.15.2 Release为例:在下载页面的Change Log处, 2)打开下载号的jar包,以activemq-al ... 
- 【原创】大数据基础之Mesos(1)简介、安装、使用
			Mesos 1.7.1 官方:http://mesos.apache.org/ 一 简介 Program against your datacenter like it’s a single pool ... 
- avalonjs学习笔记之实现一个简单的查询页
			官网地址:http://avalonjs.coding.me/ 因为是为了学习js,所以对样式没什么要求,先放效果图: 步骤为:初始页面-------条件查询-------编辑员工1-------保存 ... 
- java控台输入
			import java.util.Scanner;//访问util包的Scanner(控台输入) public class HelloWorld {public static void main(St ... 
- 资本寒冬下的android面经
			在2018年10月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真是战 ... 
- Flask开发微电影网站(八)
			1.后台管理之电影预告管理 1.1 定义电影预告表单 在app的admin目录的forms.py文件中,定义电影预告表单 # 预告表单 class PreviewForm(FlaskForm): ti ... 
- 重写 console.log()
			/*重写console.log*/ console.log = (function(mFun){ return function(str){ mFun.call(console,'hello! ' + ... 
- 关于 win10 系统中 Anaconda3 中修改 Jupyter Notebook 默认启动目录
			目标: 修改Anaconda3中自带的Jupyter Notebook默认启动目录. 步骤: 1.提前创建好你想要启动位置文件夹. 2.寻找配置文件,"jupyter_not ... 
- jfinal中,render的时候如何取到view根目录
			https://www.oschina.net/question/138209_63023 
