VisualStudio安装加载等待CSS特效

最近需要一个加载等待效果的CSS动画样式,想弄一个VS2012-2015版本安装时候的5个小圆点向右奔跑的特效,但在网上搜寻了一圈没有找到(主要是不知道这种加载特效有没有名字),就研究了一下CSS3的动画使用,自己实现了一个。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>奔跑的小球</title>
    <style type='text/css'>
        .spinner {
            margin: auto;
            width: 200px;
            height: 10px;
            text-align: center;
            font-size: 10px;
            position:relative;
            overflow:hidden;
            background-color:gray;
        }

        .spinner > div {
            background-color: white;
            height: 6px;
            width: 6px;
            display: inline-block;
            position: relative;
            top: -30%;
            border-radius: 3px;
        }
        .spinner .rect1{
            left: -62%;
            animation: dot1 5s infinite ease-in-out;
        }
        .spinner .rect2 {
            left: -64%;
            animation: dot2 5s infinite ease-in-out;
            animation-delay: 0.2s;
        }

        .spinner .rect3 {
            left: -68%;
            animation: dot3 5s infinite ease-in-out;
            animation-delay: 0.3s;
        }

        .spinner .rect4 {
            left: -72%;
            animation: dot4 5s infinite ease-in-out;
            animation-delay: 0.4s;
        }

        .spinner .rect5 {
            left: -76%;
            animation: dot5 5s infinite ease-in-out;
            animation-delay: 0.5s;
        }
        @keyframes dot1{0%{transform:translateX(10px);}40%{transform:translateX(160.330002px);}41%{transform:translateX(160.660004px);}42%{transform:translateX(160.990005px);}43%{transform:translateX(161.320007px);}44%{transform:translateX(161.650009px);}45%{transform:translateX(161.980011px);}46%{transform:translateX(162.310013px);}47%{transform:translateX(162.640015px);}48%{transform:translateX(162.970016px);}49%{transform:translateX(163.300018px);}100%{transform:translateX(330px);}}@keyframes dot2{0%{transform:translateX(8px);}40%{transform:translateX(146.630020px);}41%{transform:translateX(146.960022px);}42%{transform:translateX(147.290024px);}43%{transform:translateX(147.620026px);}44%{transform:translateX(147.950027px);}45%{transform:translateX(148.280029px);}46%{transform:translateX(148.610031px);}47%{transform:translateX(148.940033px);}48%{transform:translateX(149.270035px);}49%{transform:translateX(149.600037px);}100%{transform:translateX(316px);}}@keyframes dot3{0%{transform:translateX(6px);}40%{transform:translateX(132.930038px);}41%{transform:translateX(133.260040px);}42%{transform:translateX(133.590042px);}43%{transform:translateX(133.920044px);}44%{transform:translateX(134.250046px);}45%{transform:translateX(134.580048px);}46%{transform:translateX(134.910049px);}47%{transform:translateX(135.240051px);}48%{transform:translateX(135.570053px);}49%{transform:translateX(135.900055px);}100%{transform:translateX(302px);}}@keyframes dot4{0%{transform:translateX(4px);}40%{transform:translateX(119.230057px);}41%{transform:translateX(119.560059px);}42%{transform:translateX(119.890060px);}43%{transform:translateX(120.220062px);}44%{transform:translateX(120.550064px);}45%{transform:translateX(120.880066px);}46%{transform:translateX(121.210068px);}47%{transform:translateX(121.540070px);}48%{transform:translateX(121.870071px);}49%{transform:translateX(122.200073px);}100%{transform:translateX(288px);}}@keyframes dot5{0%{transform:translateX(2px);}40%{transform:translateX(105.530075px);}41%{transform:translateX(105.860077px);}42%{transform:translateX(106.190079px);}43%{transform:translateX(106.520081px);}44%{transform:translateX(106.850082px);}45%{transform:translateX(107.180084px);}46%{transform:translateX(107.510086px);}47%{transform:translateX(107.840088px);}48%{transform:translateX(108.170090px);}49%{transform:translateX(108.500092px);}100%{transform:translateX(274px);}}

    </style>
</head>
<body>
<div class="spinner">
    <div class="rect1"></div>
    <div class="rect2"></div>
    <div class="rect3"></div>
    <div class="rect4"></div>
    <div class="rect5"></div>
</div>
</body>
</html>

由于小圆点到中间有一个缓慢的过渡效果,因此动画定义的CSS有点多,本人也是通过Java编码输出,来弄这段样式的(实在太多,伤不起啊)。其次,我尝试了使用百分比来确认小圆点的位置,但是失败了,只能使用像素,所以对修改也是很麻烦,但是有了Java来输出CSS代码就好多了。

public class OutCss {

    public static void main(String[] args) {

        int end = 330;//小圆点向右走的最终点像素位置
        int begin = 10;//小圆点动画开始的像素位置
        float center = 160f;//在中间缓慢移动的像素位置
        for(int i = 1; i <= 5; i++){
            System.out.println(format("@keyframes dot%d {", i));
            System.out.println("\t0%{");
            System.out.println(
                    String.format("\t\ttransform: translateX(%dpx);", (begin--)));
            begin--;
            System.out.println("\t}");
            for(int j = 0; j < 10; j++){
                System.out.println(format("\t5%d%%{", j));
                center = center + 0.33f;//缓慢移动每次移动的像素
                System.out.println(
                        String.format("\t\ttransform: translateX(%fpx);", center));
                System.out.println("\t}");
            }
            center -= 15f;//小圆点依次列队到中间的像素点位置
            System.out.println("\t100%{");
            System.out.println(
                    String.format("\t\ttransform: translateX(%dpx);", (end)));
            end -= 14;//小圆点列队走向终点的像素点位置
            System.out.println("\t}");
            System.out.println("}");
        }
    }
    private static String format(String str, Object...objects){
        return String.format(str, objects);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值