diy1818

Good children, Constantly learning, Constantly growing.

使用 PNG 图片制作动态 Loading

曾经遇到过在一个 GIF 图片里面制作一个半透明的 Loading,无论怎么折腾,总有锯齿,非常不好处理。最后无奈地使用了非半透明的“菊花”,视觉有所降级。

其实如果不兼容 IE 的话,还是可以使用 CSS3 + PNG 图片完成这个动态的 GIF Loading 的。具体效果见 DEMO

实现的方法和代码如下:

#loading {
     width: 36px;
     height: 36px;
     position: absolute;
     top: 50%;
     left: 50%;
     margin: -18px 0 0 -18px;
     text-indent: -9999em;
     overflow: hidden;
     /** loading 图片地址 **/
     background: url(loading.png) no-repeat 0 0;
     /** webkit **/
     -webkit-animation-name: loadRotate;
     -webkit-animation-duration: 1s;
     -webkit-animation-iteration-count: infinite;
     -webkit-animation-timing-function: linear;
     /** firefox **/ 
     -moz-animation-name: loadRotate;
     -moz-animation-duration: 1s;
     -moz-animation-iteration-count: infinite;
     -moz-animation-timing-function: linear;
     /** w3c **/
     animation-name: loadRotate;
     animation-duration: 1s;
     animation-iteration-count: infinite;
     animation-timing-function: linear;
 }
 /** webkit **/
 @-webkit-keyframes loadRotate {
     from {
         -webkit-transform:rotate(0deg);
     }
     25% {

     }
     to {
         -webkit-transform:rotate(360deg);
     }
 }
 /** firefox **/
 @-moz-keyframes loadRotate {
     from {
         -moz-transform:rotate(0deg);
     }
     to {
         -moz-transform:rotate(360deg);
     }

 }
 /** w3c **/
 @keyframes loadRotate {
     form {
         transform: rotate(0deg);
     }
     to {
         transform: rotate(360deg);
     }
 }

HTML 代码如下:

<p id="loading">Loading</p>

恩,这样就 OK 了。

后话:Loading 的“菊花”样式,有一个 JS 可以实现,就是 spin.js,也能兼容 IE 。但其兼容 IE 的方式是使用滤镜,对性能有所影响。