转自:凹凸实验室(https://aotu.io/notes/2016/11/28/css3-animation-properties/

本文不会详细介绍每个 css3 animation 属性(需要了解的同学可先移步 MDN),而是结合实际的开发经验,介绍 css3 animation 属性的一些使用场景及技巧。

1. animation-delay

MDN 中的介绍:

  animation-delay CSS 属性定义动画于何时开始,即从动画应用在元素上到动画开始的这段时间的长度。

该属性值默认为 0s,可为正值,也可为负值。

动画时间轴

  由于 css3 动画没有时间轴,animation-delay 最常见的是用于将动画与其他动画的执行时机错开,将动画落到不同的时间点,形成动画时间轴。

  1. .ani--first {
  2. animation-name: aniFirst;
  3. animation-duration: 2s;
  4. animation-delay: 0s;
  5. }
  6. .ani--second {
  7. animation-name: aniSecond;
  8. animation-duration: 1s;
  9. animation-delay: 2s; /* aniSecond 延迟 2s 执行*/
  10. }

  形成的时间轴如下图所示:

轮播

  css3 animation 亦可实现一些 js 的效果,例如利用 animation-delay 可以实现一个简单的轮播。以下是一个三屏轮播的例子。

  1. .slider__item {
  2. animation: ani 6s infinite linear both;
  3. @for $i from to {
  4. &:nth-child(#{$i}) {
  5. animation-delay: (-+$i)*2s;
  6. }
  7. }
  8. }
  9. @keyframes ani {
  10. %, 33.33% {opacity: ; visibility: visible;}
  11. 33.34%, % {opacity: ; visibility: hidden;}
  12. }

完整代码:

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <link rel="stylesheet" type="text/css" href="css/style.css">
  7. </head>
  8. <body>
  9. <div class="slider">
  10. <img src="http://jdc.jd.com/img/500x300?color=6190e8&text=slider1&textColor=ffffff" class="slider__item" />
  11. <img src="http://jdc.jd.com/img/500x300?color=2ebaae&text=slider2&textColor=ffffff" class="slider__item" />
  12. <img src="http://jdc.jd.com/img/500x300?color=3d5a92&text=slider3&textColor=ffffff" class="slider__item" />
  13. </div>
  14. </body>
  15. </html>

css

  1. .slider {
  2. position: relative;
  3. width: 500px;
  4. height: 300px; }
  5. .slider:hover .slider__item {
  6. animation-play-state: paused; }
  7. .slider__item {
  8. position: absolute;
  9. width: %;
  10. height: %;
  11. left: ;
  12. top: ;
  13. opacity: ;
  14. animation: ani 6s infinite linear both; }
  15. .slider__item:nth-child() {
  16. animation-delay: 0s; }
  17. .slider__item:nth-child() {
  18. animation-delay: 2s; }
  19. .slider__item:nth-child() {
  20. animation-delay: 4s; }
  21.  
  22. @keyframes ani {
  23. %, 33.33% {
  24. opacity: ;
  25. visibility: visible; }
  26. 33.34%, % {
  27. opacity: ;
  28. visibility: hidden; } }

序列动画

  多个元素使用相同的动画效果时,将动画执行时机依次错开,可形成整齐有序的序列动画效果。

  1. @for $i from to {
  2. .list__item:nth-child(#{$i}) {
  3. animation-delay: (-+$i)*.1s; /*计算每个元素的 animation-delay */
  4. }
  5. }

完整代码

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <link rel="stylesheet" type="text/css" href="css/index1.css">
  7. </head>
  8. <body>
  9. <div class="list">
  10. <div class="list__item"></div>
  11. <div class="list__item"></div>
  12. <div class="list__item"></div>
  13. <div class="list__item"></div>
  14. <div class="list__item"></div>
  15. </div>
  16. </body>
  17. </html>

css

  1. .list__item {
  2. width: 50px;
  3. height: 50px;
  4. background: #6180e9;
  5. margin-right: 10px;
  6. float: left;
  7. animation: listAni 1s ease both; }
  8.  
  9. @keyframes listAni {
  10. % {
  11. transform: scale(); }
  12. % {
  13. transform: scale(); } }
  14. .list__item:nth-child() {
  15. animation-delay: 0s; }
  16.  
  17. .list__item:nth-child() {
  18. animation-delay: .2s; }
  19.  
  20. .list__item:nth-child() {
  21. animation-delay: .4s; }
  22.  
  23. .list__item:nth-child() {
  24. animation-delay: .6s; }
  25.  
  26. .list__item:nth-child() {
  27. animation-delay: .8s; }

  以笔者开发的京东2017海外招聘项目为例,第二屏的菜单和第三屏的时间轴的进退场动画都运用了序列动画。下图展示第三屏时间轴的进场效果,有兴趣的同学亦可扫码观看完整案例。

点击查看图片

无限循环的序列动画

  animation-delay 可为负值。负值会让动画从它的动画序列中某位置立即开始。 巧用这个负值,可以解决实际开发中的一些问题。

  如若上述的序列动画要进行无限循环,单纯将 animation-iteration-count 设置为 infinite,动画开始时会有延迟。此时,将 animation-delay 设置为负值,提前动画开始执行的时机,当用户看到动画时,动画便已经处于进行中的状态。

  1. @for $i from to {
  2. .list__item:nth-child(#{$i}) {
  3. animation-delay: -$i*.1s; /* animation-delay 为负值*/
  4. }
  5. }

完整代码

html同时

css

  1. @charset "UTF-8";
  2. .list__item {
  3. width: 50px;
  4. height: 50px;
  5. background: #6180e9;
  6. margin-right: 10px;
  7. float: left;
  8. animation: listAni .5s ease both alternate infinite; }
  9.  
  10. @keyframes listAni {
  11. % {
  12. transform: scale(); }
  13. % {
  14. transform: scale(); } }
  15. .list__item:nth-child() {
  16. animation-delay: -.1s;
  17. /* animation-delay 为负值*/ }
  18.  
  19. .list__item:nth-child() {
  20. animation-delay: -.2s;
  21. /* animation-delay 为负值*/ }
  22.  
  23. .list__item:nth-child() {
  24. animation-delay: -.3s;
  25. /* animation-delay 为负值*/ }
  26.  
  27. .list__item:nth-child() {
  28. animation-delay: -.4s;
  29. /* animation-delay 为负值*/ }
  30.  
  31. .list__item:nth-child() {
  32. animation-delay: -.5s;
  33. /* animation-delay 为负值*/ }

调试动画

  将 animation-play-state 设置为 paused,animation-delay 设置成不同的负值,可以查看动画在不同帧时的状态,便于进行动画调试。

  1. .list__item {
  2. animation: listAni .5s linear both alternate infinite;
  3. animation-play-state: paused;
  4. }
  5. @for $i from to {
  6. .list--first .list__item:nth-child(#{$i}) {
  7. animation-delay: -$i*.1s;
  8. }
  9. }
  10. @for $i from to {
  11. .list--second .list__item:nth-child(#{$i}) {
  12. animation-delay: (--$i)*.1s;
  13. }
  14. }
  15. @for $i from to {
  16. .list--third .list__item:nth-child(#{$i}) {
  17. animation-delay: (--$i)*.1s;
  18. }
  19. }

完整代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <link rel="stylesheet" type="text/css" href="css/index1.css">
  7. </head>
  8. <body>
  9. <div class="list list--first">
  10. <div class="list__item"></div>
  11. <div class="list__item"></div>
  12. <div class="list__item"></div>
  13. <div class="list__item"></div>
  14. <div class="list__item"></div>
  15. </div>
  16. <div class="list list--second">
  17. <div class="list__item"></div>
  18. <div class="list__item"></div>
  19. <div class="list__item"></div>
  20. <div class="list__item"></div>
  21. <div class="list__item"></div>
  22. </div>
  23. <div class="list list--third">
  24. <div class="list__item"></div>
  25. <div class="list__item"></div>
  26. <div class="list__item"></div>
  27. <div class="list__item"></div>
  28. <div class="list__item"></div>
  29. </div>
  30. </body>
  31. </html>

scss

  1. .list {
  2. overflow: hidden;
  3. margin-bottom: 10px;
  4. &__item {
  5. width: 50px;
  6. height: 50px;
  7. background: #6180e9;
  8. margin-right: 10px;
  9. float: left;
  10. animation: listAni .5s linear both alternate infinite;
  11. animation-play-state: paused;
  12. }
  13. }
  14.  
  15. @keyframes listAni {
  16. % {transform: scale(); }
  17. % {transform: scale(); }
  18. }
  19. @for $i from to {
  20. .list--first .list__item:nth-child(#{$i}) {
  21. animation-delay: -$i*.1s;
  22. }
  23. }
  24. @for $i from to {
  25. .list--second .list__item:nth-child(#{$i}) {
  26. animation-delay: (--$i)*.1s;
  27. }
  28. }
  29. @for $i from to {
  30. .list--third .list__item:nth-child(#{$i}) {
  31. animation-delay: (--$i)*.1s;
  32. }
  33. }

2. animation-fill-mode

MDN 中的介绍:

  animation-fill-mode 这个 CSS 属性用来指定在动画执行之前和之后如何给动画的目标应用样式。

  animation-fill-mode 应该算是 animation 属性里比较难上手的一个,但它的作用却很大。

保持结束状态

  “动画结束后,突然跳回第一帧!” 很多刚接触 css3 动画的同学,都是在这个场景下,接触了 animation-fill-mode 属性。将 animation-fill-mode 设置为 forwards,动画执行结束后保持最后一帧的样式。

  1. .ani-area__item--forwards {
  2. animation: ani 1s ease;
  3. animation-fill-mode: forwards;
  4. }

完整代码

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <link rel="stylesheet" type="text/css" href="css/index2.css">
  7. </head>
  8. <body>
  9. <div class="ani-area">
  10. <div class="ani-area__item ani-area__item--forwards"></div>
  11. <div class="ani-area__item ani-area__item--none"></div>
  12. </div>
  13. </body>
  14. </html>

scss

  1. .ani-area {
  2. &__item {
  3. width: 50px;
  4. height: 50px;
  5. background: #6180e9;
  6. margin-right: 10px;
  7. float: left;
  8. animation: ani 1s ease;
  9. &--forwards {
  10. animation-fill-mode: forwards;
  11. }
  12. &--none {
  13. animation-fill-mode: none;
  14. }
  15. }
  16. }
  17.  
  18. @keyframes ani {
  19. % { opacity: }
  20. % { opacity: 0.5 }
  21. }

开始前状态

  开发动画时,我们都是先根据视觉稿做好构建,再来给元素加动画的。如上文所述,可通过 animation-delay 来延迟的动画的执行。而在执行前,元素往往需要先隐藏(translate 定位到视窗外 / opacity 设置为 0 / scale 设置为 0 等)。若将隐藏元素的样式直接应用到元素上,一来不利于构建,二来对于不支持动画的浏览器来说,只会呈现一片空白。此时,animation-fill-mode 的 backwards 属性值便派上用场。

  对于 backwards 的解释,笔者见过不少文章的说法都有不妥之处,认为 backwards 与 forwards 相反,表示动画执行结束后保持第一帧的样式。实则不然,我们看下 w3c 的解释:

  backwards:在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。

  换句话说,backwards 作用的是 animation-delay 的时间段,应用第一个关键帧的样式。

  1. .ani-area__item--backwards {
  2. animation: ani 1s 1s ease;
  3. animation-fill-mode: backwards;
  4. }

完整代码

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <link rel="stylesheet" type="text/css" href="css/index2.css">
  7. </head>
  8. <body>
  9. <div class="ani-area">
  10. <div class="ani-area__item ani-area__item--backwards">1s后出现</div>
  11. <div class="ani-area__item ani-area__item--none">1s后出现</div>
  12. </div>
  13. </body>
  14. </html>

scss

  1. .ani-area {
  2. &__item {
  3. width: 100px;
  4. height: 50px;
  5. color: #fff;
  6. line-height: 50px;
  7. text-align: center;
  8. background: #6180e9;
  9. margin-right: 10px;
  10. float: left;
  11. animation: ani 1s 1s ease;
  12. &--backwards {
  13. animation-fill-mode: backwards;
  14. }
  15. &--none {
  16. animation-fill-mode: none;
  17. }
  18. }
  19. }
  20.  
  21. @keyframes ani {
  22. % { opacity: }
  23. % { opacity: }
  24. }

  当然,动画的第一帧和最后一帧的计算还受 animation-direction 和 animation-iteration-count 的影响,MDN 中有详细解释:

  forwarls:

  

  backwards:

  

3. animation-direction

  既然上表中涉及了 animation-direction 属性,那我们就顺着来研究一下它。
  MDN 中的介绍:

    animation-direction CSS 属性指示动画是否反向播放。

进/退场动画复用

  动画元素有进场动画,往往也会需要退场动画。比较常见的做法,退场时使用与进场动画反向的动画。animation-direction 的 reverse 属性值可简单实现反向动画。

  先看MDN 中的介绍:

    reverse:反向运行动画,每周期结束动画由尾到头运行。

  1. .on {
  2. .ani--translate {
  3. animation: aniTranslate 1s ease forwards;
  4. }
  5. }
  6. .off {
  7. .ani--translate {
  8. animation: aniTranslate 1s ease forwards reverse;
  9. }
  10. }
  11. @keyframes aniTranslate {
  12. % { transform: translateY(300px) }
  13. % { transform: translateY() }
  14. }
  1. $wrap.removeClass('on');
  2. $wrap.innerWidth($wrap.innerWidth); /* 使用 reflow 重新触发一下 animation */
  3. $wrap.addClass('off');

完整实例代码:

html:

  1. <div class="ani-wrap on J_wrap">
  2. <div class="ani ani--opacity"></div>
  3. <div class="ani ani--scale"></div>
  4. <div class="ani ani--translate"></div>
  5. </div>
  6. <a href="javascript:;" class="btn J_btn">退场</a>

scss

  1. .btn {
  2. display: block;
  3. width: 100px;
  4. height: 30px;
  5. line-height: 30px;
  6. text-align: center;
  7. color: #6180e9;
  8. border: 1px solid #6180e9;
  9. float: left;
  10. }
  11.  
  12. .ani {
  13. width: 50px;
  14. height: 50px;
  15. background: #6180e9;
  16. margin-right: 10px;
  17. float: left;
  18. }
  19.  
  20. .on {
  21. .ani {
  22. &--opacity {
  23. animation: aniOpacity 1s ease forwards;
  24. }
  25. &--scale {
  26. animation: aniScale 1s ease forwards;
  27. }
  28. &--translate {
  29. animation: aniTranslate 1s ease forwards;
  30. }
  31. }
  32. }
  33.  
  34. .off {
  35. .ani {
  36. &--opacity {
  37. animation: aniOpacity 1s ease forwards reverse;
  38. }
  39. &--scale {
  40. animation: aniScale 1s ease forwards reverse;
  41. }
  42. &--translate {
  43. animation: aniTranslate 1s ease forwards reverse;
  44. }
  45. }
  46. }
  47.  
  48. @keyframes aniOpacity {
  49. % {
  50. opacity:
  51. }
  52. % {
  53. opacity:
  54. }
  55. }
  56.  
  57. @keyframes aniScale {
  58. % {
  59. transform: scale()
  60. }
  61. % {
  62. transform: scale()
  63. }
  64. }
  65.  
  66. @keyframes aniTranslate {
  67. % {
  68. transform: translateY(300px)
  69. }
  70. % {
  71. transform: translateY()
  72. }
  73. }

js

  1. var $btn = $('.btn'),
  2. $wrap = $('.J_wrap');
  3. $btn.on('click', function(e) {
  4. $wrap.removeClass('on').innerWidth($wrap.innerWidth).addClass('off');
  5. })

  当然,上述例子为了演示方便,只是简单做了只有两帧的动画,这种效果用 transition 同样可以实现。

4. animation-play-state

MDN 中的介绍:

  animation-play-state CSS 属性定义一个动画是否运行或者暂停。

翻页动画控制

  在做翻页 h5 时,需要对动画的播放进行控制。只有当用户进入当前屏时,动画才开始播放。通常我们会给当前屏加上一个 acitve 类,用来给元素添加动画:

  1. .active .ele {
  2. animation: ani 1s ease;
  3. }

  或者如上文“进/退场动画复用”中的例子,分别用 on 和 off 控制进/退场动画。这都是常见的思路。
  如果是不需要重复触发的动画,用 animation-play-state 同样可以实现动画的控制。动画属性直接添加到元素上, animation-play-state 默认设置为 paused,当进入当前屏时,将 animation-play-state 设置为 running 即可。

  1. .ani {
  2. animation: ani1 1s ease;
  3. animation-play-state: paused; /* animation-play-state 默认设置为 paused */
  4. }
  5. .active .ani {
  6. animation-play-state: running; /* 进入当前屏,animation-play-state 设置为 running */
  7. }

完整实例代码:

html

  1. <div class="page-wrap J_wraper">
  2. <div class="page page--first active">
  3. <div class="ani ani--first">
  4. </div>
  5. </div>
  6. <div class="page page--second">
  7. <div class="ani ani--second">
  8. </div>
  9. </div>
  10. <div class="page page--third">
  11. <div class="ani ani--third"></div>
  12. </div>
  13. </div>

scss

  1. .page-wrap{
  2. position: relative;
  3. width: 320px;
  4. height: 504px;
  5. overflow: hidden;
  6. background: #eee;
  7. }
  8. .page {
  9. position: absolute;
  10. width: %;
  11. height: %;
  12. top: ;
  13. left: ;
  14. &--first {
  15. background: #ddd;
  16. }
  17. &--second {
  18. background: #2ebaae;
  19. }
  20. &--third {
  21. background: #3d5a92;
  22. }
  23. &.active {
  24. z-index: ;
  25. }
  26. }
  27. .ani {
  28. width: 100px;
  29. height: 50px;
  30. color: #fff;
  31. line-height: 50px;
  32. text-align: center;
  33. background: #6190e8;
  34. margin: 110px;
  35. float: left;
  36. &--first {
  37. animation: ani1 2s ease both;
  38. animation-play-state: paused;
  39. -webkit-animation: ani1 2s ease both;
  40. -webkit-animation-play-state: paused;
  41. }
  42. &--second {
  43. animation: ani2 2s ease both;
  44. animation-play-state: paused;
  45. -webkit-animation: ani2 2s ease both;
  46. -webkit-animation-play-state: paused;
  47. }
  48. &--third {
  49. animation: ani3 2s ease both;
  50. animation-play-state: paused;
  51. -webkit-animation: ani3 2s ease both;
  52. -webkit-animation-play-state: paused;
  53. }
  54. }
  55. @keyframes ani1 {
  56. % { opacity: }
  57. % { opacity: }
  58. }
  59. @-webkit-keyframes ani1 {
  60. % { opacity: }
  61. % { opacity: }
  62. }
  63. @keyframes ani2 {
  64. % { transform: scale() }
  65. % { transform: scale() }
  66. }
  67. @-webkit-keyframes ani2 {
  68. % { -webkit-transform: scale() }
  69. % { -webkit-transform: scale() }
  70. }
  71. @keyframes ani3 {
  72. % { transform: translateY(1000px) }
  73. % { transform: translateY() }
  74. }
  75. @-webkit-keyframes ani3 {
  76. % { -webkit-transform: translateY(1000px) }
  77. % { -webkit-transform: translateY() }
  78. }
  79. .active .ani {
  80. animation-play-state: running;
  81. -webkit-animation-play-state: running;
  82. }

js

  1. var $page = $('.J_wraper .page');
  2. $page.on('click',function(e) {
  3. $(this).next().addClass('active');
  4. })

轮播的交互

  在前文介绍 animation-delay 时,提到了一个轮播的例子,当用户 hover 时,轮播动画应该暂停,用 animation-play-state 属性便可轻松实现交互:

  1. .slider:hover .slider__item{
  2. animation-play-state: paused;
  3. }

5. animation-timing-function

MDN 中的介绍:

  CSS animation-timing-function 属性定义 CSS 动画在每一动画周期中执行的节奏。

关于 animation-timing-function,有一个特别需要注意的点,MDN 中有强调:

  对于关键帧动画来说,timing function 作用于一个关键帧周期而非整个动画周期,即从关键帧开始开始,到关键帧结束结束。

也就是说,animation-timing-function 是作用于 @keyframes 中设置的两个关键帧之间的,这一点在该属性值为 steps() 时可明显感知。

逐帧动画

  animation-timing-function 最让人感到惊(beng)艳(kui)的莫过于 steps() 属性值。利用 steps(),可以轻松实现逐帧动画(又称“精灵动画”),从而告别不可控的 gif 时代。
  关于逐帧动画,笔者之前在凹凸实验室平台已经发布过相关文章介绍,此处不再赘述,有兴趣的同学可前往围观:《CSS3逐帧动画》。

参考文章:

css3 animation 属性众妙的更多相关文章

  1. CSS3 animation属性中的steps实现GIF动图(逐帧动画)

    相信 animation 大家都用过很多,知道是 CSS3做动画用的.而我自己就只会在 X/Y轴 上做位移旋转,使用 animation-timing-function 规定动画的速度曲线,常用到的 ...

  2. CSS3 animation属性 实现转动效果

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  3. 关于CSS3 animation 属性在ie edge浏览器中不能工作

    我想要给div边框加一个闪烁,所以我将css中设置如下 给想要闪烁的div加上blink类  这样在firefox,chrome下是正常显示的,但是在ie下box-shadow属性不能被正常的展现 后 ...

  4. CSS3 border属性的妙用

    .ribbon { background: #45c9c8; position: absolute; width: 75px; height: 25px; line-height: 25px; top ...

  5. animation属性

    文章中转站,因为涉及到动画效果,还是看文笔比较好的博主吧~ CSS3(三)Animation 入门详解 css3中变形与动画(三) CSS3 Animation 是由三部分组成. 关键帧(keyfra ...

  6. 《众妙之门——精通CSS3》一书知识点剖析

    不得不佩服京东的速度,昨天刚下单的两本书今天上午就到了.其中一本是全彩页的<众妙之门 - 精通CSS3>,细看了前几十页,书上的叙述方式给我的印象其实不如“彩页”来的讨喜——接连说上几个例 ...

  7. CSS3动画属性animation的用法

    转载: 赞生博客 高端订制web开发工作组 » CSS3动画属性animation的用法 CSS3提供了一个令人心动的动画属性:animation,尽管利用animation做出来的动画没有flash ...

  8. 基于CSS3新属性Animation及transform实现类似翻书效果

    注:本实例JS部分均以原生JS编写,不善用原生JS的,可用jQuery等对三方框架改写 先上效果图:(样式有点丑,可以忽略一下下,效果出来了就好,后期加到其他项目中方便更改0.0) 类似翻书效果,原本 ...

  9. CSS3学习之 animation 属性

    发现animation这个新属性很有趣,在此学习,并整理下!  浏览器支持: Internet Explorer 10.Firefox 以及 Opera 支持 animation 属性: Safari ...

随机推荐

  1. Maven环境变量配置

    Maven 3.0.4版本下载地址: http://www.apache.org/dyn/closer.cgi?path=/maven/binaries/apache-maven-3.0.4-bin. ...

  2. SOCKADDR_IN

    在windows/linux下有下面结构: sockaddr结构 struct sockaddr { unsigned short sa_family;/*addressfamily,AF_xxx*/ ...

  3. Maven入门学习,安装及创建项目

    一.maven介绍: 1.maven是一个基于项目对象模型(POM Project Object Model),通过配置文件管理项目的工具(项目管理工具). 2.maven主要功能:发布项目(从编译到 ...

  4. Spring MVC学习笔记——Controller接口

  5. 2015年最全的移动WEB前端UI框架

    目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了.在移动WEB开发的过程中,使用合适的移动WEB UI框架可以大大提升我们的开发效率.下面P ...

  6. Codeforces 697A - Pineapple Incident

    题目链接:http://codeforces.com/problemset/problem/697/A 题目大意: 输入三个数 t,s,x; 判断x是否合适 合适的位置位 t , t+s, t+s+1 ...

  7. .NET Reflector Visual Studio Extension

    https://visualstudiogallery.msdn.microsoft.com/95789cdb-08f9-4dae-9b2f-fc45a452ad77/

  8. SimPholders Xcode快速访问沙盒

    SimPholders

  9. Django笔记-helloworld

    网上的Django资料太乱了,我想写一下自己的学习过程(只记大体过程,有时间就完善).(用eclipse+PyDev工具开发的) 1.项目结构 2.关键代码:(注意缩进,可能贴上来缩进格式等有变化,我 ...

  10. SmartUpLoad自动上传包

    一枚默默的开发学习者 用以下代码生成文件名即可 1 package info.haowei.util; 2 3 import java.text.SimpleDateFormat; 4 import ...