试图在css中重新创建加载gif

时间:2013-07-30 11:26:02

标签: html css css3 css-animations

我正在尝试在纯css中重新创建以下gif -

loading image

这里的Css - http://codepen.io/anon/pen/FmCaL - (仅在mo的webkit / chrome)

我试图通过使用之前和之后重新创建圆圈的缺失块。在psuedo选择器之后,但我无法获得正确的角度。

甚至可以吗?有更好的方法吗?


感谢您提供任何帮助。我应该指明我需要箭头是透明的。我不能使用纯色作为圆圈的缺失部分。

2 个答案:

答案 0 :(得分:7)

如何简单地这样做?

Demo

div {
    border: 10px solid #000;
    height: 50px;
    width: 50px;
    border-radius: 50%;
    position: relative;    
}

div:after {
    height: 0;
    width: 0;
    display: block;
    position: absolute;
    right: -12px; 
    content: " ";
    border-bottom: 12px solid #fff;
    border-right: 12px solid transparent;
    transform: rotate(10deg);
}

说明:我们在这里做的是使用:after伪将元素绝对定位到圆并使用transform属性来旋转三角形。


Demo 2(动画制作)

div {
    border: 10px solid #000;
    height: 50px;
    width: 50px;
    border-radius: 50%;
    position: relative;    
    animation: spin 1s infinite linear;
}

div:after {
    height: 0;
    width: 0;
    display: block;
    position: absolute;
    right: -12px; 
    content: " ";
    border-bottom: 12px solid #fff;
    border-right: 12px solid transparent;
    transform: rotate(10deg);
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

我的建议:当你更新你的qustion时,你说你想要一个透明的装订线,我建议你使用.png图像并旋转它,而不是编写100行CSS并担心跨浏览器的兼容性。或者,因为我在评论中共享了一个链接,您可以使用CSS屏蔽。

答案 1 :(得分:0)

如果您不关心三角形是否透明,我可以建议这样的事情:

DEMO(适用于chrome和firefox)

.loading {
    display: inline-block;
    margin: 5em;
    border: 10px solid grey;
    border-radius: 50%;
    width: 20px;
    height: 20px;
    -webkit-animation: spin 1s linear infinite;
    -moz-animation: spin 1s linear infinite;
    animation: spin 1s linear infinite;     
}
.loading:before {
    content: '';
    display: block;
    border: 13px solid transparent;
    border-right-color: white;
    width: 20px;
    height: 0;
    border-radius: 50%;
    margin: -3px 0 0 -13px;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    transform: rotate(-90deg);
}
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(359deg); }}
@-moz-keyframes spin { 100% { -moz-transform: rotate(359deg); }}
@keyframes spin { 100% { transform: rotate(359deg); }}