純粋な CSS3 で波の効果を実現するにはどうすればよいですか?この記事ではSVGとCSSアニメーションを使って波のエフェクトを作成する方法をご紹介しますので、お役に立てれば幸いです。
## フロントエンド テクノロジの継続的な開発と進歩に伴い、インターフェイス インタラクションのスタイル要件と美しさはますます高くなっており、多くの Web ページ インタラクションに CSS3 アニメーションが追加されています。ここでは、フロントエンド開発でマスターする必要がある CSS3 ウェーブ効果を著者が共有します。すぐに学び、開発する Web ページの下部に追加して、ページに生き生きとした雰囲気を加えます ~ [推奨学習:css ビデオ チュートリアル]
#CSS3 ウェーブ エフェクト
# これは波ですSVG と CSS アニメーションを使用して作成された効果、上部は青 (他の色に変更可能) のグラデーション背景色、下部は波で、常に前後にうねる 4 つの波があり、非常にリアルです。この波の効果は、ほとんどのページの下部で使用して、ページに活気を加えることができます。 。
1.HTMLの構築
コードは次のとおりです(例):青で塗りつぶす (他の色に変更可能) グラデーション背景色
<div class="header"> <div class="inner-header flex"> <h1>简单的 CSS3 波浪效果</h1> </div> <div> <svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"> <defs> <path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z" /> </defs> <g class="parallax"> <use xlink:href="#gentle-wave" x="48" y="0" fill="rgba(255,255,255,0.7" /> <use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(255,255,255,0.5)" /> <use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(255,255,255,0.3)" /> <use xlink:href="#gentle-wave" x="48" y="7" fill="#fff" /> </g> </svg> </div> </div>
## コードは次のとおりです (例): ここでは、CSS3
のanimation
アニメーション プロパティを使用して、4 つの行を制御します。前後に変動し、波の効果を形成します.header { position: relative; text-align: center; background: linear-gradient(60deg, rgba(84, 58, 183, 1) 0%, rgba(0, 172, 193, 1) 100%); /* background: #FFAFBD; background: -webkit-linear-gradient(to right, #ffc3a0, #FFAFBD); background: linear-gradient(to right, #ffc3a0, #FFAFBD); */ color: white; } .inner-header { height: 65vh; width: 100%; margin: 0; padding: 0; } .waves { position: relative; width: 100%; height: 15vh; margin-bottom: -7px; /*Fix for safari gap*/ min-height: 100px; max-height: 150px; } .content { position: relative; height: 20vh; text-align: center; background-color: white; } .content a { margin: 0 5px; font-size: 12px; color: #333; } .content a:hover { color: #000; } /* Animation */ .parallax > use { animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite; } .parallax > use:nth-child(1) { animation-delay: -2s; animation-duration: 7s; } .parallax > use:nth-child(2) { animation-delay: -3s; animation-duration: 10s; } .parallax > use:nth-child(3) { animation-delay: -4s; animation-duration: 13s; } .parallax > use:nth-child(4) { animation-delay: -5s; animation-duration: 20s; } @keyframes move-forever { 0% { transform: translate3d(-90px, 0, 0); } 100% { transform: translate3d(85px, 0, 0); } } /*Shrinking for mobile*/ @media (max-width: 768px) { .waves { height: 40px; min-height: 40px; } .content { height: 30vh; } h1 { font-size: 24px; } }
index.html ファイル
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>简单的CSS3波浪效果演示_dowebok</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div> <div class="inner-header flex"> <h1>简单的 CSS3 波浪效果</h1> </div> <div> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"> <defs> <path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z" /> </defs> <g> <use xlink:href="#gentle-wave" x="48" y="0" fill="rgba(255,255,255,0.7" /> <use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(255,255,255,0.5)" /> <use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(255,255,255,0.3)" /> <use xlink:href="#gentle-wave" x="48" y="7" fill="#fff" /> </g> </svg> </div> </div> </body> </html>
body { margin: 0; } h1 { font-family: 'Lato', sans-serif; font-weight: 300; letter-spacing: 2px; font-size: 48px; } p { font-family: 'Lato', sans-serif; letter-spacing: 1px; font-size: 14px; color: #333333; } .header { position: relative; text-align: center; background: linear-gradient(60deg, rgba(84, 58, 183, 1) 0%, rgba(0, 172, 193, 1) 100%); /* background: #FFAFBD; background: -webkit-linear-gradient(to right, #ffc3a0, #FFAFBD); background: linear-gradient(to right, #ffc3a0, #FFAFBD); */ color: white; } .logo { width: 50px; fill: white; padding-right: 15px; display: inline-block; vertical-align: middle; } .inner-header { height: 65vh; width: 100%; margin: 0; padding: 0; } .flex { /*Flexbox for containers*/ display: flex; justify-content: center; align-items: center; text-align: center; } .waves { position: relative; width: 100%; height: 15vh; margin-bottom: -7px; /*Fix for safari gap*/ min-height: 100px; max-height: 150px; } .content { position: relative; height: 20vh; text-align: center; background-color: white; } .content a { margin: 0 5px; font-size: 12px; color: #333; } .content a:hover { color: #000; } /* Animation */ .parallax > use { animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite; } .parallax > use:nth-child(1) { animation-delay: -2s; animation-duration: 7s; } .parallax > use:nth-child(2) { animation-delay: -3s; animation-duration: 10s; } .parallax > use:nth-child(3) { animation-delay: -4s; animation-duration: 13s; } .parallax > use:nth-child(4) { animation-delay: -5s; animation-duration: 20s; } @keyframes move-forever { 0% { transform: translate3d(-90px, 0, 0); } 100% { transform: translate3d(85px, 0, 0); } } /*Shrinking for mobile*/ @media (max-width: 768px) { .waves { height: 40px; min-height: 40px; } .content { height: 30vh; } h1 { font-size: 24px; } }
以上が純粋な CSS3 で波の効果を実現するにはどうすればよいですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。