純粋な CSS を使用してコーヒーマシンの効果を実現する方法

不言
リリース: 2018-07-10 17:24:07
オリジナル
2126 人が閲覧しました

この記事では主に、コーヒーマシンの効果を実現するための純粋な CSS の使用方法を紹介します。必要な友人に参考にしていただけるようにしました。

純粋な CSS を使用してコーヒーマシンの効果を実現する方法

。毎日 フロントエンド実践シリーズのすべてのソース コードを github からダウンロードしてください:

https://github.com/comehop​​e/front-end-daily-challenges

コード解釈

dom を定義します。コンテナには本体が含まれます、水の出口、コーヒーカップ、ボタンとコーヒー:

<p>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</p>
ログイン後にコピー

中央表示:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right bottom, sandybrown, darkred);
}
ログイン後にコピー

コンテナのサイズを定義:

.coffee-machine {
    width: 15em;
    height: 15em;
    background-color: white;
    font-size: 20px;
    border-radius: 50%;
    border: 2em solid white;
}
ログイン後にコピー

体の外枠を描画:

.coffee-machine {
    position: relative;
    display: flex;
    justify-content: center;
}

.body {
    position: absolute;
    width: 8em;
    height: 12em;
    background-color: sandybrown;
    border-radius: 1.2em;
    top: 1.5em;
    border-right: 0.6em solid peru;
}
ログイン後にコピー

疑似要素を使用して体の中央部分を描画:

.body::after {
    content: '';
    position: absolute;
    width: 8em;
    height: 8em;
    background-color: darkslategray;
    top: 2em;
    border-right: 0.6em solid black;
}
ログイン後にコピー

水の出口を描く:

.spout {
    position: absolute;
    width: 3em;
    height: 1em;
    background-color: white;
    top: 3.5em;
    border-radius: 0.5em;
    border-right: 0.5em solid silver;
}
ログイン後にコピー

コーヒーカップの本体を描く:

.cup {
    position: absolute;
    width: 3em;
    height: 2em;
    background-color: white;
    bottom: 3.5em;
    border-radius: 0 0 1.4em 1.4em;
    border-right: 0.5em solid silver;
}
ログイン後にコピー

疑似要素を使ってコーヒーカップのハンドルを描く:

.cup::after {
    content: '';
    position: absolute;
    width: 0.6em;
    height: 0.6em;
    border: 0.3em solid silver;
    border-radius: 50%;
    right: -1.2em;
    top: 0.2em;
}
ログイン後にコピー

ボタンを描く:

.button {
    position: absolute;
    width: 1.2em;
    height: 1.2em;
    background-color: tomato;
    border-radius: 50%;
    bottom: 2em;
    right: 4.5em;
}
ログイン後にコピー

コーヒーを描く:

.coffee::before,
.coffee::after {
    content: '';
    position: absolute;
    width: 0.7em;
    height: 5em;
    background-color: chocolate;
    top: 4.5em;
    left: calc((15em - 0.7em) / 2);
}
ログイン後にコピー

次に磨きます。

コーヒー マシンに光と影を追加します:

.coffee-machine {
    z-index: 1;
}

.coffee-machine::before,
.coffee-machine::after {
    content: '';
    position: absolute;
    width: 2em;
    height: 2em;
    border: 0.3em solid transparent;
    z-index: 2;
    border-radius: 50%;
    border-left-color: white;
    left: 3.8em;
}

.coffee-machine::before {
    top: 1.8em;
    transform: rotate(40deg);
}

.coffee-machine::after {
    bottom: 1.8em;
    transform: rotate(-40deg);
}
ログイン後にコピー

コーヒーの流れのアニメーションの前半、つまりコーヒーが水の出口からカップに流れるアニメーションを定義します:

.coffee::before {
    animation: 2s linear infinite;
    animation-name: pouring-before;
    transform-origin: top;
}

@keyframes pouring-before {
    0%, 20% {
        transform: scaleY(0);
    }

    30%, 100% {
        transform: scaleY(1);
    }

    70%, 100% {
        visibility: hidden;
    }
}
ログイン後にコピー

コーヒーの流れのアニメーションの後半を定義しますつまり、水の出口からコーヒーが流れ出なくなり、残ったコーヒーがカップに流れ込みます:

.coffee::after {
    animation: 2s linear infinite;
    animation-name: pouring-after;
    transform-origin: bottom;
}

@keyframes pouring-after {
    0%, 70% {
        visibility: hidden;
        transform: scaleY(1);
    }

    80%, 100% {
        transform: scaleY(0);
    }
}
ログイン後にコピー

完了!

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

純粋な CSS を使用してカラーカードの効果を実現する方法

CSS を使用して単一要素のラティスローダーの効果を実現する方法

以上が純粋な CSS を使用してコーヒーマシンの効果を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!