使用 HTML 和 CSS 创建印度国旗
要使用 HTML 和 CSS 创建印度国旗,我们需要对 CSS 有很好的理解。印度国旗有三种颜色:橙色、白色和绿色,以及中间的阿育王法轮。
在这篇文章中,我们将逐步创建印度国旗。首先制作旗杆,然后是三色旗,最后是旋转的阿育王法轮,所有这些都只使用 HTML 和 CSS。稍后我们将使用波浪动画和旗帜移动来为我们的国旗制作动画。以下是我们将遵循的步骤
使用 HTML 和 CSS 创建印度国旗的步骤
我们将使用以下五个步骤来创建印度国旗,如下所示
创建国旗的基本结构
我们使用了以下步骤来创建国旗的结构
- 我们使用了带有 container 类的 div 元素,它将旗杆和国旗组合在一起。
- 我们使用了 div 元素来创建旗杆和国旗。
- 我们使用了带有 wave 类的 div 元素,它负责添加动画。
- 我们使用了带有 div 的 wheel 类来创建法轮的圆圈,并使用了十二个 span 元素来创建法轮的二十四根辐条。
以下是上述步骤的 HTML 实现
<!DOCTYPE html> <html lang="en"> <head> <title> Create the Indian Flag using HTML and CSS </title> </head> <body> <div class="container"> <div class="pole"></div> <div class="flag tricolor"> <div class="wave"></div> <div class="wheel"> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> </div> </div> </div> </body> </html>
设计三色旗和旗杆
在此步骤中,我们将向国旗添加三色旗,并创建连接到国旗的旗杆。
- 要设计旗杆,我们使用 CSS 的 height 和 width 属性设置其尺寸,对于弯曲的末端,我们使用了 CSS 的 border-top-left-radius、border-bottom-left-radius 和 border-bottom-right-radius 属性,并使用 background 属性将其颜色设置为黑色。
- 要设计国旗,我们使用了 flag 类来设置尺寸、position 和 box-shadow。
- 要向国旗添加颜色,我们使用了 tricolor 类,它使用 linear-gradient 向国旗添加橙色、白色和绿色。它使用 网格布局 将其子元素(即轮子)保持在中心,使用 place-items 属性。
以下是上述步骤的 CSS 实现
.pole { height: 450px; width: 10px; background: black; border-top-left-radius: 10px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; } .flag { position: relative; width: 300px; height: 200px; box-shadow: 0 0 1px rgba(0, 0, 0, 0.5); overflow: hidden; transform-origin: left center; } .tricolor { background: linear-gradient(#ff9933 33%, #fff 33%, #fff 66%, green 0); display: grid; place-items: center; }
添加轮子和辐条
在此步骤中,我们使用了 wheel 和 line 类来设计阿育王法轮。
- 我们使用了 wheel 类使用 border 创建轮子,然后使用 border-radius 将矩形 div 转换为圆形。
- 我们使用了 line 类来创建辐条并设置辐条的尺寸。
- 我们对 line 类使用了 nth-child() 伪选择器,它选择参数中指定的子元素并使用 transform 属性应用 15 度旋转。
- 我们使用了 nth-child() 来选择并应用 rotation 到十二个 span 元素,从而创建二十四根辐条。
以下是上述步骤的 CSS 实现
.wheel { height: 50px; width: 50px; border: 1px solid darkblue; border-radius: 50%; position: relative; margin: 0 auto; } .wheel .line { height: 100%; width: 1px; display: inline-block; position: absolute; left: 50%; background: darkblue; } .line:nth-child(1) { transform: rotate(15deg) } .line:nth-child(2) { transform: rotate(30deg) } .line:nth-child(3) { transform: rotate(45deg) } .line:nth-child(4) { transform: rotate(60deg) } .line:nth-child(5) { transform: rotate(75deg) } .line:nth-child(6) { transform: rotate(90deg) } .line:nth-child(7) { transform: rotate(105deg) } .line:nth-child(8) { transform: rotate(120deg) } .line:nth-child(9) { transform: rotate(135deg) } .line:nth-child(10) { transform: rotate(150deg) } .line:nth-child(11) { transform: rotate(165deg) } .line:nth-child(12) { transform: rotate(180deg) }
为法轮添加动画
在此步骤中,我们将向阿育王法轮添加 animation,这将向法轮添加旋转动画。
- 我们在 wheel 类上使用了动画属性,它定义了 animation-name、animation-timing-function、animation-duration 和 animation-iteration-count。
- CSS animation-name 定义动画名称,使用 animation-duration 控制动画速度,animation-iteration-count 确保动画无限运行。
- 我们使用了 @keyframes chakra,它将法轮从动画开始时的 0 度旋转到动画结束时的 360 度。
以下是上述步骤的 CSS 实现
.wheel{ animation-name: chakra; animation-timing-function: linear; animation-duration: 2s; animation-iteration-count: infinite; } @keyframes chakra { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
为国旗添加动画
在此步骤中,我们已将动画应用于国旗。
- 我们在 flag 类中使用了动画属性来定义动画名称 wave。
- 我们使用了 @keyframes wave,它负责国旗的移动,其中 perspective() 属性提供 3D 深度,而 rotateY() 负责通过在 y 方向上旋转国旗使其移动。
- 我们使用了 wave 类使用线性渐变 gradient 设置波浪的角度和动画属性来设置动画,从而定义国旗的波浪动画。
- 我们使用了 @keyframes waves,它通过将渐变条纹从 -400px 移动到 800px 来设置移动波浪。
以下是上述步骤的 CSS 实现
.flag{ animation-name: wave; animation-timing-function: ease-in-out; animation-duration: 4s; animation-iteration-count: infinite; } @keyframes wave { 0% { transform: perspective(600px) rotateY(0deg); } 25% { transform: perspective(600px) rotateY(10deg); } 50% { transform: perspective(600px) rotateY(-10deg); } 75% { transform: perspective(600px) rotateY(10deg); } 100% { transform: perspective(600px) rotateY(0deg); } } .wave { position: absolute; height: 100%; width: 100%; background-image: linear-gradient(45deg, rgba(89, 72, 21, 0) 39%, rgba(250, 245, 245, 0.8474025974025974) 46%, rgba(89, 72, 21, 0) 53%); animation-name: waves; animation-duration: 6s; animation-iteration-count: infinite; animation-timing-function: linear; } @keyframes waves { 0% { background-position: -400px 0px,-400px 0px, -400px 0px, -400px 0px; } 100% { background-position: 800px 0px,800px 0px, 800px 0px, 800px 0px; } }
完整示例代码
以下是使用 HTML 和 CSS 创建印度国旗的完整示例代码。
<!DOCTYPE html> <html lang="en"> <head> <title> Create the Indian Flag using HTML and CSS </title> <style> * { box-sizing: border-box; margin: 0; } body { width: 100%; height: 100vh; display: grid; place-items: center; } .container { display: flex; } .pole { height: 450px; width: 10px; background: black; border-top-left-radius: 10px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; } .flag { position: relative; width: 300px; height: 200px; box-shadow: 0 0 1px rgba(0, 0, 0, 0.5); overflow: hidden; transform-origin: left center; animation-name: wave; animation-timing-function: ease-in-out; animation-duration: 4s; animation-iteration-count: infinite; } .tricolor { background: linear-gradient(#ff9933 33%, #fff 33%, #fff 66%, green 0); display: grid; place-items: center; } .wheel { height: 50px; width: 50px; border: 1px solid darkblue; border-radius: 50%; position: relative; margin: 0 auto; animation-name: chakra; animation-timing-function: linear; animation-duration: 2s; animation-iteration-count: infinite; } .wheel .line { height: 100%; width: 1px; display: inline-block; position: absolute; left: 50%; background: darkblue; } @keyframes chakra { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes wave { 0% { transform: perspective(600px) rotateY(0deg); } 25% { transform: perspective(600px) rotateY(10deg); } 50% { transform: perspective(600px) rotateY(-10deg); } 75% { transform: perspective(600px) rotateY(10deg); } 100% { transform: perspective(600px) rotateY(0deg); } } .wave { position: absolute; height: 100%; width: 100%; background-image: linear-gradient(45deg, rgba(89, 72, 21, 0) 39%, rgba(250, 245, 245, 0.8474025974025974) 46%, rgba(89, 72, 21, 0) 53%); animation-name: waves; animation-duration: 6s; animation-iteration-count: infinite; animation-timing-function: linear; } @keyframes waves { 0% { background-position: -400px 0px,-400px 0px, -400px 0px, -400px 0px; } 100% { background-position: 800px 0px,800px 0px, 800px 0px, 800px 0px; } } .line:nth-child(1) { transform: rotate(15deg) } .line:nth-child(2) { transform: rotate(30deg) } .line:nth-child(3) { transform: rotate(45deg) } .line:nth-child(4) { transform: rotate(60deg) } .line:nth-child(5) { transform: rotate(75deg) } .line:nth-child(6) { transform: rotate(90deg) } .line:nth-child(7) { transform: rotate(105deg) } .line:nth-child(8) { transform: rotate(120deg) } .line:nth-child(9) { transform: rotate(135deg) } .line:nth-child(10) { transform: rotate(150deg) } .line:nth-child(11) { transform: rotate(165deg) } .line:nth-child(12) { transform: rotate(180deg) } </style> </head> <body> <div class="container"> <div class="pole"></div> <div class="flag tricolor"> <div class="wave"></div> <div class="wheel"> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> <span class="line"></span> </div> </div> </div> </body> </html>
结论
我们学习并理解了如何使用 HTML 和 CSS 创建印度国旗。我们使用了五个步骤,即 创建国旗的基本结构、设计三色旗和旗杆、添加轮子和辐条、为法轮添加动画和 为国旗添加动画。使用这五个步骤,我们创建了带有波浪动画的印度国旗。
广告