众所周知,在css3中可以用animation实现动画效果,在这里用一个transform:translateX举例。

  1. <div class="div1"></div>
  1. .div1{
  2. margin:0 auto;
  3. width: 100px;
  4. height: 100px;
  5. border:1px solid blue;
  6. -webkit-animation-name: move;
  7. -o-animation-name: move;
  8. animation-name: move;
  9. -webkit-animation-duration: 1s;
  10. -o-animation-duration: 1s;
  11. animation-duration: 1s;
  12. -webkit-animation-iteration-count:;
  13. -o-animation-iteration-count:;
  14. animation-iteration-count:;
  15. -webkit-animation-fill-mode: forwards;
  16. -o-animation-fill-mode: forwards;
  17. animation-fill-mode: forwards;
  18. }
  19. @keyframes move{
  20. 0%{}
  21. 50%{
  22. transform:translateX(-100px);
  23. }
  24. 100%{
  25. transform:translateX(100px);
  26. }
  27. }

这段代码运行的结果将会是向左移动100px,然后再从初始状态的基础上向右移动100px。注意这里设置了animation-fill-mode: forwards,所以并不会再回到初始状态。

这段代码可以说明,其transform变形操作,是在基本属性的基础上进行变形操作,并不会改变其初始状态属性的设置。这也给我们一个启示,假如我们设置一个按钮点击之后,让某个div向右平移100px,并设置animation-fill-mode: forwards定格其最后状态。当我们再次点击按钮的时候需要设置div的位置,以left为例的话,就需要先设置left:100px,然后再设置向左平移100px,这时才能达到我们想要的效果。

但是div中的包一个div的情况又有所不同,例如:

  1. <div class="div1">
  2. <div class="div2"></div>
  3. </div>
  1. .div1{
  2. margin:0 auto;
  3. width: 100px;
  4. height: 100px;
  5. border:1px solid blue;
  6. -webkit-animation-name: move;
  7. -o-animation-name: move;
  8. animation-name: move;
  9. -webkit-animation-duration: 1s;
  10. -o-animation-duration: 1s;
  11. animation-duration: 1s;
  12. -webkit-animation-iteration-count:;
  13. -o-animation-iteration-count:;
  14. animation-iteration-count:;
  15. -webkit-animation-fill-mode: forwards;
  16. -o-animation-fill-mode: forwards;
  17. animation-fill-mode: forwards;
  18. }
  19. .div2{
  20. width: 50px;
  21. height: 50px;
  22. border:1px solid yellow;
  23. -webkit-animation-name: move1;
  24. -o-animation-name: move1;
  25. animation-name: move1;
  26. -webkit-animation-duration: 1s;
  27. -o-animation-duration: 1s;
  28. animation-duration: 1s;
  29. -webkit-animation-iteration-count:;
  30. -o-animation-iteration-count:;
  31. animation-iteration-count:;
  32. -webkit-animation-fill-mode: forwards;
  33. -o-animation-fill-mode: forwards;
  34. animation-fill-mode: forwards;
  35. }
  36. @keyframes move{
  37. form{}
  38. to{
  39. transform:translateX(-100px);
  40. }
  41. }
  42. @keyframes move1{
  43. 0%{}
  44. 100%{
  45. transform:translateX(100px);
  46. }
  47. }

这时,我们将会发现,子元素div2会停留在原来的位置不会发生任何改变,这时因为子元素div2本身也是div1的一部分,如果去除掉div2的动画效果,div1和div2将同时向右移动100px,注意这里不要考虑不改变属性值,div2将会在原来属性的基础上,向左移动100px。因为两者都有动画且都是在进行中的,div2是既有div1的动画又有div2的动画,所以最终呈现的效果就是在原来的为位置不发生改变。这时要想达到我们想要得效果的话,就需要吧div2的translateX设置为-200px。

关于css3中transform的理解(只是改变状态未改变其真正的属性)的更多相关文章

  1. 第98天:CSS3中transform变换详解

    transform变换详解 本文主要介绍变形transform. Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放sc ...

  2. 关于CSS3中transform变换的小坑

    2017年6月30日15:05:46 今天在写一个demo的时候,发现CSS3中transform变换的一个特性. 首先,我先描述一下我发现的情况(问题再现): <div class=" ...

  3. CSS3中transform几个属性值的注意点

    transform(变形)是CSS3中的元素的属性,transform的属性值主要包括旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix 基本用法可以参考文 ...

  4. CSS3中transform属性的用法

    有时候网站也要愚弄一下访客,比如愚人节.下面我给大家推荐个效果,就是整个页面左右颠倒了.css3 很强大,简单的几行代码就可以帮我们实现这个效果. view source   print? 01 &l ...

  5. 自己总结的CSS3中transform变换、transition过渡、animation动画的基本用法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. css3中transform的用法

    transform:rotate旋转deg #box1{ -moz-transform:rotate(10deg); -webkit-transform:rotate(10deg); }transfo ...

  7. CSS3中transform,transition和animation的简单介绍和使用方法演示样例

    transform是一个属性,本质跟width,height是一样的,加上transform也就是为类添加一个变换属性. transition是一个属性.它是用来控制过渡效果的,由于用transfor ...

  8. CSS3中box-sizing的理解

    box-sizing属性可以为三个值之一:content-box(默认),border-box,padding-box,inherit(继承父级box-sizing 属性的值.) content-bo ...

  9. ectouch 微信支付成功后订单状态未改变的解决办法 (转载)

    原文地址: 微信支付支付成功后,返回到mobile/wx_native_callback.php 之前代码 define('IN_ECS', true); require(dirname(__FILE ...

随机推荐

  1. 关于ECSHOP模板架设的服务器php版本过高报错的解决方法(二)

    ECShop安装之后,在后台发现一个错误,这个错误提示的意思:mktime()方法不带参数被调用时,会被抛出一个报错提示. ECShop安装之后,在后台发现一个错误提示: Strict Standar ...

  2. python虚拟环境的使用

    一. 安装 sudo apt-get install python-virtualenv 二. 创建环境 sudo virtualenv Myenv 创建完全隔离的Python环境,实质是创建了一个文 ...

  3. [UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)

    前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Enti ...

  4. 第11章 使用PHP从Web访问MySQL数据库

    1.过滤用户可能值其搜索条件的起始或结束位置不小心输入的空白字符: 应用trim(): 2.转义数据(第4章)函数:addslashes(),stripslashes(),get_magic_quot ...

  5. C# CookieHelper

    using System; using System.Web; using System.Collections.Specialized; namespace Utils { /// <summ ...

  6. Codeforces Round #390 (Div. 2)

    时隔一个月重返coding…… 期末复习了一个月也不亏 倒是都过了…… 就是计组61有点亏 复变68也太低了 其他都还好…… 假期做的第一场cf 三道题 还可以…… 最后room第三 standing ...

  7. Java: MissingResourceException, "Can't find bundle for base name myMessage, locale zh_CN"

    在java中,在多语言国际化时可以用 *.java 类来作为资源文件使用. 1. 首先定义类, 类必须继承ListResourceBundle 类所在路径为: src/I18N public clas ...

  8. scip习题(1) scheme和c实现的对比

    习题1.3 定义一个过程,它以三个数为参数,返回其中较大的两个数的平方和. (Define a procedure thats three numbers as argument and return ...

  9. 深入理解Solaris内核中互斥锁(mutex)与条件变量(condvar)之协同工作原理

    在Solaris上写内核模块总是会用到互斥锁(mutex)与条件变量(condvar), 光阴荏苒日月如梭弹指一挥间,Solaris的大船说沉就要沉了,此刻心情不是太好(Orz).每次被年轻的有才华的 ...

  10. java静态方法之线程安全问题

    静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用 每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自己的程序计数器PC,在任何时刻 ...