📜  membuat 格式印尼盾 dengan javascript (1)

📅  最后修改于: 2023-12-03 15:17:36.667000             🧑  作者: Mango

使用JavaScript来制作印尼盾

在这篇文章中,我们将介绍如何使用JavaScript来制作印尼盾,让你的网站或应用程序更有趣和实用性。以下是我们将做的事情:

  • 了解印尼盾的组成和设计
  • 使用HTML和CSS创建印尼盾的基本形状
  • 使用SVG和JavaScript来添加更多的细节和效果
  • 添加交互功能以使用户可以对印尼盾进行操作
理解印尼盾的设计

在制作印尼盾之前,先了解印尼盾的设计是非常重要的。印尼盾是由一个圆形和一个正方形组成,圆形表示天空和大海,正方形表示土地。另外,印尼盾上还有一个表示国家的星形和一些纹路和字母。

现在我们已经了解了印尼盾的设计,接下来让我们通过HTML和CSS来创建它。

使用HTML和CSS创建印尼盾的基本形状

我们可以使用HTML和CSS来创建印尼盾的基本形状。首先,我们可以使用<div>元素来创建一个矩形,然后使用CSS来让它看起来像一个正方形。

<div class="shield"></div>
.shield {
  width: 200px;
  height: 200px;
  background-color: #D4AF37;
  border-radius: 5%;
}

这样,我们就创建了一个黄色的正方形代表土地。

接下来,我们可以使用<svg>元素来创建圆形,并将它放置在矩形中心。我们可以使用CSS来使其相对定位,并移动到正确的位置。

<div class="shield">
  <svg class="circle" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <circle cx="25" cy="25" r="20" fill="#FFF"/>
  </svg>
</div>
.circle {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

现在,我们的印尼盾已经具有基本形状,接下来,我们将使用JavaScript和SVG来添加更多的细节和效果。

使用SVG和JavaScript来添加更多的细节和效果

使用SVG和JavaScript可以为印尼盾添加更多的细节和效果。我们可以使用SVG的rect元素来创建另一个小矩形,然后将其旋转45度并放置在正方形中间。我们还可以为它添加样式,让它看起来更像印尼盾中的星形。

<div class="shield">
  <svg class="circle" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <circle cx="25" cy="25" r="20" fill="#FFF"/>
  </svg>
  <svg class="star" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <rect x="20" y="15" width="10" height="20" transform="rotate(45, 25, 25)"/>
    <rect x="15" y="20" width="20" height="10" transform="rotate(45, 25, 25)"/>
  </svg>
</div>
.star {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.star rect {
  fill: #FFD700;
  stroke: #FFD700;
  stroke-width: 2px;
}

现在,我们已经为印尼盾添加了一个指示国家的星形,接下来,我们将为印尼盾添加一些装饰和字母。

<div class="shield">
  <svg class="circle" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <circle cx="25" cy="25" r="20" fill="#FFF"/>
  </svg>
  <svg class="star" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <rect x="20" y="15" width="10" height="20" transform="rotate(45, 25, 25)"/>
    <rect x="15" y="20" width="20" height="10" transform="rotate(45, 25, 25)"/>
  </svg>
  <svg class="decoration" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <path d="M 25,0 L 0,50 L 25,35 L 50,50 L 25,0 Z" fill="#FFF"/>
  </svg>
  <svg class="letter" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <text x="12" y="36" font-size="30px" font-weight="bold">G</text>
    <text x="22" y="37" font-size="18px" font-weight="bold">ARUDA</text>
    <text x="15" y="48" font-size="8px">MERDEKA</text>
  </svg>
</div>
.decoration {
  position: absolute;
  top: 60px;
  left: 50%;
  transform: translateX(-50%);
}

.decoration path {
  stroke: #D4AF37;
  stroke-width: 2px;
}

.letter {
  position: absolute;
  top: 150px;
  left: 50%;
  transform: translateX(-50%);
}

.letter text {
  fill: #D4AF37;
  font-family: Arial, Helvetica, sans-serif;
  user-select: none;
  -webkit-user-select: none;
}

现在,我们的印尼盾已经准备好使用了,但让我们再添加一些交互功能,使用户可以对它进行操作。

添加交互功能以使用户可以对印尼盾进行操作

我们可以使用JavaScript为印尼盾添加交互功能,使用户可以单击它来切换印尼盾上显示的字母和装饰。我们可以使用事件监听器来监听单击事件,并在每次单击时更改SVG元素的内容。

<div class="shield" onclick="changeLetter()">
  <svg class="circle" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <circle cx="25" cy="25" r="20" fill="#FFF"/>
  </svg>
  <svg class="star" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <rect x="20" y="15" width="10" height="20" transform="rotate(45, 25, 25)"/>
    <rect x="15" y="20" width="20" height="10" transform="rotate(45, 25, 25)"/>
  </svg>
  <svg class="decoration" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <path d="M 25,0 L 0,50 L 25,35 L 50,50 L 25,0 Z" fill="#FFF"/>
  </svg>
  <svg class="letter" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <text x="12" y="36" font-size="30px" font-weight="bold">G</text>
    <text x="22" y="37" font-size="18px" font-weight="bold">ARUDA</text>
    <text x="15" y="48" font-size="8px">MERDEKA</text>
  </svg>
</div>
let currentLetter = "G";

function changeLetter() {
  const letterEl = document.querySelector('.letter text:first-child');
  const secondaryLetterEl = document.querySelector('.letter text:nth-child(2)');
  
  if (currentLetter === "G") {
    letterEl.textContent = "P";
    secondaryLetterEl.textContent = "ANCAK";
    currentLetter = "P";
  } else {
    letterEl.textContent = "G";
    secondaryLetterEl.textContent = "ARUDA";
    currentLetter = "G";
  }
}

现在,我们已经为印尼盾添加了交互功能,用户可以单击它来切换显示的字母和装饰图案。

结论

使用HTML、CSS和JavaScript来制作印尼盾确实需要一些技巧和知识,但它可以为你的网站或应用程序增加更多的实用性和趣味性。在这篇文章中,我们学习了如何使用这些技术来创建一个基本的印尼盾,并向其中添加了更多的细节和交互功能。希望在将来的项目中,这些技巧能对你有所帮助!