2012-04-28 41 views
17

我注意到一个简单的事情,同时看着Windows 8加载屏幕的屏幕,有一个preloader(或加载图标),这是相当有趣的,它有一点重力/摆动效应。我想用javascript和css复制相同的内容,但我对javascript动画没有太多的了解,因此想知道是否可以给我一个方向,我可以找到类似的例子。您也可以通过提供具有类似动画类型的代码片段来提供帮助。Windows 8 preloader(加载图标)使用HTML5和JavaScript没有图像

任何帮助,将不胜感激。

+3

你有没有检查过这个http://james.padolsey.com/javascript/sonic-looping-loaders/ – coder 2012-04-28 16:03:33

+0

谢谢@coder,我会通过这个尝试去实现重力效应...... – manishekhawat 2012-04-28 16:10:03

+0

朋友,如果你可以拿出问题的确切解决方案(创建Windows 8 metro样式preloader),请分享... :) – manishekhawat 2012-04-28 16:10:11

回答

31

查询网站CSSload。在这里,您可以在几秒钟内制作CSS加载器。我制作了Windows 8加载程序,因此您可以看到它here

@keyframes orbit { 
    0% { 
     opacity: 1; 
     z-index:99; 
     transform: rotate(180deg); 
     animation-timing-function: ease-out; 
    } 

    7% { 
     opacity: 1; 
     transform: rotate(300deg); 
     animation-timing-function: linear; 
     origin:0%; 
    } 

    30% { 
     opacity: 1; 
     transform:rotate(410deg); 
     animation-timing-function: ease-in-out; 
     origin:7%; 
    } 

    39% { 
     opacity: 1; 
     transform: rotate(645deg); 
     animation-timing-function: linear; 
     origin:30%; 
    } 

    70% { 
     opacity: 1; 
     transform: rotate(770deg); 
     animation-timing-function: ease-out; 
     origin:39%; 
    } 

    75% { 
     opacity: 1; 
     transform: rotate(900deg); 
     animation-timing-function: ease-out; 
     origin:70%; 
    } 

    76% { 
     opacity: 0; 
     transform:rotate(900deg); 
    } 

    100% { 
     opacity: 0; 
     transform: rotate(900deg); 
    } 
} 

或者,尝试this code example ...

+0

这真的很酷的人,正是我所期待的! thx :) – RynoRn 2012-11-09 12:54:52

+0

@RynoRn不客气! – 2012-11-10 11:40:13

+1

在涉及DOM操作的脚本执行期间,动画GIF可能在单线程JavaScript环境中停顿,因此硬件启用的CSS3动画在我看来表现得更好。我更新了JSFiddle以消除无关的cssload.net生成的标记,方法是删除子wInnerBall类div,然后将它们渲染为:在伪元素CSS之后,删除wBall ID并通过第n个子选择器设计la Jan Rubio的代码示例。 [链接](http://jsfiddle.net/nPQNH/48/) – TaeKwonJoe 2013-05-24 00:23:38

7

下载,我不知道,但也许这就是你想要的东西:

<progress style="color: white;" class="win-medium win-ring"></progress> 
1

我发现,你可以找到关于C:\Windows\WinStore\WinStore.cssWinStore.htm一个类似的脚本,只需打开Winstore.htm,你会发现一个类似环加载动画,由IE10提供,如果只有人可能会抛售从Windows Shell中的动画信息...如果你用记事本看WinStore.css,你会看到这样的事情:

splashProgress::-ms-fill 
{ 
    animation-name: **-ms-ring**; 
} 

这个变量是一个动画信息存储在Windows Shell的某处吗?

我测试了在Chrome和Firefox中加载HTML页面,没有什么,只是一个正常的加载栏。

对不起,我的英语不好。我来自阿根廷。

+0

Metro上的某些样式过程如'-ms-ring'和'html:-ms-lang(ar,dv,fa,he,ku-Arab,pa-Arab,prs,ps,sd-Arab,syr ,ug,ur,qps-plocm)'。他们只是为了窗户和窗户来处理它们! – 2013-01-19 17:58:28

9

这里是我的纯CSS3实现与没有使用Javascript中,我结合CSSloadJan Rubio's codepen技术最小标记和没有ID选择:

HTML:

<div class="loader"> 
    <div class="circle"></div> 
    <div class="circle"></div> 
    <div class="circle"></div> 
    <div class="circle"></div> 
    <div class="circle"></div> 
</div> 

CSS:

.loader { position: relative; width: 64px; height: 64px; } 
.loader .circle { position: absolute; width: 61px; height: 61px; opacity: 0; -moz-transform: rotate(225deg); -moz-animation: orbit 7.15s infinite; -webkit-transform: rotate(225deg); -webkit-animation: orbit 7.15s infinite; -ms-transform: rotate(225deg); -ms-animation: orbit 7.15s infinite; -o-transform: rotate(225deg); -o-animation: orbit 7.15s infinite; transform: rotate(225deg); animation: orbit 7.15s infinite; } 
.loader .circle:after { content:''; position: absolute; width: 8px; height: 8px; background: #04C5DE; left: 0px; top: 0px; -moz-border-radius: 8px; -webkit-border-radius: 8px; -ms-border-radius: 8px; -o-border-radius: 8px; border-radius: 8px; } 
.loader .circle:nth-child(1) { -moz-animation-delay: 1.56s; -webkit-animation-delay: 1.56s; -ms-animation-delay: 1.56s; -o-animation-delay: 1.56s; animation-delay: 1.56s; } 
.loader .circle:nth-child(2) { -moz-animation-delay: 0.31s; -webkit-animation-delay: 0.31s; -ms-animation-delay: 0.31s; -o-animation-delay: 0.31s; animation-delay: 0.31s; } 
.loader .circle:nth-child(3) { -moz-animation-delay: 0.62s; -webkit-animation-delay: 0.62s; -ms-animation-delay: 0.62s; -o-animation-delay: 0.62s; animation-delay: 0.62s; } 
.loader .circle:nth-child(4) { -moz-animation-delay: 0.94s; -webkit-animation-delay: 0.94s; -ms-animation-delay: 0.94s; -o-animation-delay: 0.94s; animation-delay: 0.94s; } 
.loader .circle:nth-child(5) { -moz-animation-delay: 1.25s; -webkit-animation-delay: 1.25s; -ms-animation-delay: 1.25s; -o-animation-delay: 1.25s; animation-delay: 1.25s; } 

@-moz-keyframes orbit { 
    0% { opacity: 1; z-index: 99; -moz-transform: rotate(180deg); -moz-animation-timing-function: ease-out; } 
    7% { opacity: 1; -moz-transform: rotate(300deg); -moz-animation-timing-function: linear; -moz-origin: 0%; } 
    30% { opacity: 1; -moz-transform: rotate(410deg); -moz-animation-timing-function: ease-in-out; -moz-origin: 7%; } 
    39% { opacity: 1; -moz-transform: rotate(645deg); -moz-animation-timing-function: linear; -moz-origin: 30%; } 
    70% { opacity: 1; -moz-transform: rotate(770deg); -moz-animation-timing-function: ease-out; -moz-origin: 39%; } 
    75% { opacity: 1; -moz-transform: rotate(900deg); -moz-animation-timing-function: ease-out; -moz-origin: 70%; } 
    76% { opacity: 0; -moz-transform: rotate(900deg); } 
    100% { opacity: 0; -moz-transform: rotate(900deg); } 
} 

@-webkit-keyframes orbit { 
    0% { opacity: 1; z-index: 99; -webkit-transform: rotate(180deg); -webkit-animation-timing-function: ease-out; } 
    7% { opacity: 1; -webkit-transform: rotate(300deg); -webkit-animation-timing-function: linear; -webkit-origin: 0%; } 
    30% { opacity: 1; -webkit-transform: rotate(410deg); -webkit-animation-timing-function: ease-in-out; -webkit-origin: 7%; } 
    39% { opacity: 1; -webkit-transform: rotate(645deg); -webkit-animation-timing-function: linear; -webkit-origin: 30%; } 
    70% { opacity: 1; -webkit-transform: rotate(770deg); -webkit-animation-timing-function: ease-out; -webkit-origin: 39%; } 
    75% { opacity: 1; -webkit-transform: rotate(900deg); -webkit-animation-timing-function: ease-out; -webkit-origin: 70%; } 
    76% { opacity: 0; -webkit-transform: rotate(900deg); } 
    100% { opacity: 0; -webkit-transform: rotate(900deg); } 
} 

@-ms-keyframes orbit { 
    0% { opacity: 1; z-index: 99; -ms-transform: rotate(180deg); -ms-animation-timing-function: ease-out; } 
    7% { opacity: 1; -ms-transform: rotate(300deg); -ms-animation-timing-function: linear; -ms-origin: 0%; } 
    30% { opacity: 1; -ms-transform: rotate(410deg); -ms-animation-timing-function: ease-in-out; -ms-origin: 7%; } 
    39% { opacity: 1; -ms-transform: rotate(645deg); -ms-animation-timing-function: linear; -ms-origin: 30%; } 
    70% { opacity: 1; -ms-transform: rotate(770deg); -ms-animation-timing-function: ease-out; -ms-origin: 39%; } 
    75% { opacity: 1; -ms-transform: rotate(900deg); -ms-animation-timing-function: ease-out; -ms-origin: 70%; } 
    76% { opacity: 0; -ms-transform: rotate(900deg); } 
    100% { opacity: 0; -ms-transform: rotate(900deg); } 
} 

@-o-keyframes orbit { 
    0% { opacity: 1; z-index: 99; -o-transform: rotate(180deg); -o-animation-timing-function: ease-out; } 
    7% { opacity: 1; -o-transform: rotate(300deg); -o-animation-timing-function: linear; -o-origin: 0%; } 
    30% { opacity: 1; -o-transform: rotate(410deg); -o-animation-timing-function: ease-in-out; -o-origin: 7%; } 
    39% { opacity: 1; -o-transform: rotate(645deg); -o-animation-timing-function: linear; -o-origin: 30%; } 
    70% { opacity: 1; -o-transform: rotate(770deg); -o-animation-timing-function: ease-out; -o-origin: 39%; } 
    75% { opacity: 1; -o-transform: rotate(900deg); -o-animation-timing-function: ease-out; -o-origin: 70%; } 
    76% { opacity: 0; -o-transform: rotate(900deg); } 
    100% { opacity: 0; -o-transform: rotate(900deg); } 
} 

@keyframes orbit { 
    0% { opacity: 1; z-index: 99; transform: rotate(180deg); animation-timing-function: ease-out; } 
    7% { opacity: 1; transform: rotate(300deg); animation-timing-function: linear; origin: 0%; } 
    30% { opacity: 1; transform: rotate(410deg); animation-timing-function: ease-in-out; origin: 7%; } 
    39% { opacity: 1; transform: rotate(645deg); animation-timing-function: linear; origin: 30%; } 
    70% { opacity: 1; transform: rotate(770deg); animation-timing-function: ease-out; origin: 39%; } 
    75% { opacity: 1; transform: rotate(900deg); animation-timing-function: ease-out; origin: 70%; } 
    76% { opacity: 0; transform: rotate(900deg); } 
    100% { opacity: 0; transform: rotate(900deg); } 
} 
6

这是CSS3中另一个关于Modern UI ProgressRing动画的内容。它基于已经提到的Jan Rubio的solution,并进行了一些调整(尽管如此,仍然需要调整)。

关注the live example或者使用下面的代码,如果codepen不可用:

HTML

<div class='progress-ring'> 
    <div class='progress-ring__wrap'> 
    <div class='progress-ring__circle'></div> 
    </div> 
    <div class='progress-ring__wrap'> 
    <div class='progress-ring__circle'></div> 
    </div> 
    <div class='progress-ring__wrap'> 
    <div class='progress-ring__circle'></div> 
    </div> 
    <div class='progress-ring__wrap'> 
    <div class='progress-ring__circle'></div> 
    </div> 
    <div class='progress-ring__wrap'> 
    <div class='progress-ring__circle'></div> 
    </div> 
</div> 

CSS(LESS,无前缀)

body {background:#111} 
@t:4000ms; 
@d:40px; 
@color:#ffffff; 
.progress-ring { 
    position: relative; 
    padding-top: @d/5; 
    width: @d; 
    height: @d; 
    margin: auto; 

    .progress-ring__wrap { 
    position: absolute; 
     width: @d - 2; 
     height: @d - 2; 

    .progress-ring__circle { 
     transform: rotate(225deg); 
     animation-iteration-count: infinite; 
     animation-name: orbit; 
     animation-duration: @t; 
     width: @d - 2; 
     height: @d - 2; 

     opacity: 0; 

     &:after { 
     content: ''; 
     position: absolute; 
     width: @d/8; 
     height: @d/8; 
     border-radius: @d/8; 
     box-shadow: 0px 0px 5% @color; 
     background: @color; /* Pick a color */ 
     } 
    } 


    @r:-14deg; 
    @m:30; 
    &:nth-child(2) { 
     transform:rotate(@r); 
     .progress-ring__circle { animation-delay: @t/@m; } 
    } 
    &:nth-child(3) { 
     transform:rotate(@r*2); 
     .progress-ring__circle { animation-delay: @t/@m*2; } 
    } 
    &:nth-child(4) { 
     transform:rotate(@r*3); 
     .progress-ring__circle { animation-delay: @t/@m*3; } 
    } 
    &:nth-child(5) { 
     transform:rotate(@r*4); 
     .progress-ring__circle { animation-delay: @t/@m*4; } 
    } 
    } 
} 

@keyframes orbit { 
    0% { transform:rotate(225deg); opacity: 1; 
     animation-timing-function: ease-out; } 

    7% { transform:rotate(345deg); 
     animation-timing-function: linear; } 

    35% { transform:rotate(495deg); 
      animation-timing-function: ease-in-out; } 

    42% { transform:rotate(690deg); 
      animation-timing-function: linear; } 

    70% { transform:rotate(835deg); opacity: 1; 
     animation-timing-function: linear; } 

    76% {opacity: 1;} 

    77% { transform:rotate(955deg); 
     animation-timing-function: ease-in; } 

    78% { transform:rotate(955deg); opacity: 0; } 
    100% { transform:rotate(955deg); opacity: 0; } 
}