> 웹 프론트엔드 > CSS 튜토리얼 > 순수 CSS를 사용하여 경주용 자동차의 로더 애니메이션 효과를 구현하는 방법(코드 포함)

순수 CSS를 사용하여 경주용 자동차의 로더 애니메이션 효과를 구현하는 방법(코드 포함)

不言
풀어 주다: 2018-08-22 14:50:23
원래의
1994명이 탐색했습니다.


효과 미리보기

순수 CSS를 사용하여 경주용 자동차의 로더 애니메이션 효과를 구현하는 방법(코드 포함)

소스 코드 다운로드

https://github.com/comehope/front-end-daily-challenges

코드 해석

dom을 정의하고, 컨테이너에 1 .car 요소, 그 2개의 하위 요소는 각각 차체와 바퀴를 나타냅니다. .car 元素,它的 2 个子元素分别代表车身和车轮:

<figure>
    <div>
        <span></span>
        <span></span>
    </div>
</figure>
로그인 후 복사

居中显示:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #333;
}
로그인 후 복사

定义容器尺寸和车的颜色:

.loader {
    width: 11.7em;
    height: 4.2em;
    color: lightcyan;
    position: relative;
}
로그인 후 복사

画出底盘:

.car {
    position: absolute;
    width: inherit;
    height: 2em;
    background-color: currentColor;
    top: 1.5em;
    border-radius: 0 5em 1em 0 / 0 4em 1em 0;
}
로그인 후 복사

画出尾冀:

.car::before {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    border: 0.6em solid transparent;
    border-left-width: 0;
    border-right-color: currentColor;
    transform-origin: left;
    transform: rotate(-45deg);
    top: -0.5em;
}
로그인 후 복사

(这时看起来有点儿像飞机,哈哈~~)

画出车身:

.body {
    position: absolute;
    width: 7.5em;
    height: 3.5em;
    box-sizing: border-box;
    border: 0.4em solid;
    border-radius: 3em 4.5em 0 0 / 3em 4em 0 0;
    top: -1.5em;
    left: 1.2em;
}
로그인 후 복사

用伪元素画出车窗:

.body::before {
    content: '';
    position: absolute;
    width: 3.5em;
    height: inherit;
    background-color: currentColor;
    border-top-left-radius: inherit;
    left: -0.4em;
    top: -0.4em;
}
로그인 후 복사

画出车轮的轮廓:

.wheels::before,
.wheels::after {
    content: '';
    position: absolute;
    box-sizing: border-box;
    width: 2.6em;
    height: 2.6em;
    background-color: #333;
    border-radius: 50%;
    bottom: -1em;
}
로그인 후 복사

画出轮毂:

.wheels::before,
.wheels::after {
    border: 0.3em solid #333;
    background-image: 
        linear-gradient(
            135deg,
            transparent 45%,
            currentColor 46%, currentColor 54%,
            transparent 55%
        ),
        linear-gradient(
            90deg,
            transparent 45%,
            currentColor 46%, currentColor 54%,
            transparent 55%
        ),
        linear-gradient(
            45deg,
            transparent 45%,
            currentColor 46%, currentColor 54%,
            transparent 55%
        ),
        linear-gradient(
            0deg,
            transparent 45%,
            currentColor 46%, currentColor 54%,
            transparent 55%
        ),
        radial-gradient(
            currentColor 29%,
            transparent 30%, transparent 50%,
            currentColor 51%
        );
}
로그인 후 복사

把车轮定位到左右两侧:

.wheels::before {
    left: 1.2em;
}

.wheels::after {
    right: 0.8em;
}
로그인 후 복사

接下来制作动画效果。

增加表示风影的 dom 元素 .strikes

<figure>
    <p>
        <span></span>
        <span></span>
    </p>
    <p>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </p>
</figure>
로그인 후 복사
중앙 디스플레이:

.strikes {
    position: absolute;
    width: 1em;
    height: inherit;
    border: 1px dashed white;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.strikes span {
    height: 0.1em;
    background-color: lightcyan;
}
로그인 후 복사
자동차의 컨테이너 크기 및 색상 정의:

.strikes span {
    animation: drift 0.2s linear infinite;
    animation-delay: calc((var(--n) - 1) * 0.05s);
}

@keyframes drift {
    from {
        transform: translate(3.5em);
    }

    to {
        transform: translate(-8em);
        filter: opacity(0);
    }
}

.strikes span:nth-child(1) {
    --n: 1;
}

.strikes span:nth-child(2) {
    --n: 2;
}

.strikes span:nth-child(3) {
    --n: 3;
}

.strikes span:nth-child(4) {
    --n: 4;
}

.strikes span:nth-child(5) {
    --n: 5;
}
로그인 후 복사
섀시 그리기:

.wheels::before,
.wheels::after {
    animation: rotating 0.5s linear infinite;
}

@keyframes rotating {
    to {
        transform: rotate(1turn);
    }
}
로그인 후 복사
그리기 끝:

.car {
    animation: run 0.25s linear infinite;
}

@keyframes run {
    0% {
        transform: translate(0.2em, 0.1em) rotate(0deg);
    }

    20% {
        transform: translate(0.1em, 0.2em) rotate(1deg);
    }

    40% {
        transform: translate(0.1em, -0.1em) rotate(-1deg);
    }

    60% {
        transform: translate(-0.1em, 0.2em) rotate(0deg);
    }

    80% {
        transform: translate(-0.1em, 0.1em) rotate(1deg);
    }

    100% {
        transform: translate(0.2em, 0.1em) rotate(-1deg);
    }
}
로그인 후 복사
(이때 좀 비행기 같군요 하하~~)

차체 그리기:

rrreee

의사 요소로 창문 그리기:

rrreee바퀴 윤곽 그리기: rrreee

Draw 바퀴 허브 꺼내기: rrreee 바퀴를 왼쪽과 오른쪽으로 배치:

rrreee

다음으로 애니메이션 효과를 만듭니다. 🎜🎜5개의 하위 요소가 포함된 바람 그림자를 나타내는 dom 요소 .strikes를 추가합니다. 🎜rrreee🎜5개의 짧고 가는 선 그리기: 🎜rrreee🎜바람 그림자가 떠다니는 애니메이션 효과를 추가합니다. CSS 변수를 정의하고 애니메이션 지연을 설정하세요: 🎜rrreee🎜 바퀴 회전 애니메이션 효과 추가: 🎜rrreee🎜 신체 범프 애니메이션 효과 추가: 🎜rrreee🎜 끝났습니다! 🎜🎜관련 권장 사항: 🎜🎜🎜순수한 CSS를 사용하여 무지개 줄무늬 텍스트 효과를 얻는 방법(코드 포함) 🎜🎜🎜CSS 및 색상 혼합 모드를 사용하여 로더 애니메이션 효과를 얻는 방법(코드 포함) 🎜🎜🎜

위 내용은 순수 CSS를 사용하여 경주용 자동차의 로더 애니메이션 효과를 구현하는 방법(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿