.loader {
    box-sizing: border-box;
    display: inline-block;
    width: 50px;
    height: 80px;
    border-top: 5px solid #fff;
    border-bottom: 5px solid #fff;
    position: relative;
    background: linear-gradient(#01beff 30px, transparent 0) no-repeat;
    background-size: 2px 40px;
    background-position: 50% 0px;
    animation: spinx 2s linear infinite;
}
.loader:before,
.loader:after {
    content: '';
    width: 40px;
    left: 50%;
    height: 35px;
    position: absolute;
    top: 0;
    transform: translatex(-50%);
    background: rgba(255, 255, 255, 0.4);
    border-radius: 0 0 20px 20px;
    background-size: 100% auto;
    background-repeat: no-repeat;
    background-position: 0 0px;
    animation: lqt 2s linear infinite;
}
.loader:after {
    top: auto;
    bottom: 0;
    border-radius: 20px 20px 0 0;
    animation: lqb 2s linear infinite;
}
@keyframes lqt {
    0%,
    100% {
        background-image: linear-gradient(#01beff 40px, transparent 0);
        background-position: 0% 0px;
    }
    50% {
        background-image: linear-gradient(#01beff 40px, transparent 0);
        background-position: 0% 40px;
    }
    50.1% {
        background-image: linear-gradient(#01beff 40px, transparent 0);
        background-position: 0% -40px;
    }
}
@keyframes lqb {
    0% {
        background-image: linear-gradient(#01beff 40px, transparent 0);
        background-position: 0 40px;
    }
    100% {
        background-image: linear-gradient(#01beff 40px, transparent 0);
        background-position: 0 -40px;
    }
}
@keyframes spinx {
    0%,
    45% {
        transform: rotate(0deg);
        background-position: 50% 36px;
    }
    51%,
    95% {
        transform: rotate(180deg);
        background-position: 50% 4px;
    }
    100% {
        transform: rotate(360deg);
        background-position: 50% 36px;
    }
}
