【端午节】用html和css写一个可爱的粽子

端午佳节已过,思考再三,决定把发在公众号上的文章搬过来!正文如下:

吃着香喷喷的粽子,灵感一来,突然决定用纯前端写一个可爱的粽子出来。

说干就干,开整!


第一步,写一个粽子的身体

首先,我们先创建一个 div 元素:

<div class="zongzi"></div>

我在这里特意有道查了一下粽子的英语,原来国外把粽子叫做“传统的中国米饭布丁”,英文是 Traditional Chinese rice-pudding。这也太复杂了,于是问了曾经教英语的外教老师,他说现在也是直接说中文拼音 zongzi ,于是就用 zongzi 作为粽子身体的 class 值。

 给这个元素设置宽度和高度,以及背景图:

.zongzi {
  width: 650px;
  height: 600px;
  background: #ffedc8;
}

为了显示方便,使用定位将其放到屏幕中间:

.zongzi {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 650px;
  height: 600px;
  background: #ffedc8;
  margin: auto;
}

这样,我们在页面正中间写了一个糯米色的盒子:

粽子是三角形的,而且还是圆角三角形的。需要使用 clip-path 属性将其裁剪为一个圆角三角形: 

clip-path: path("M100.1,586.4c-36,0-68.2-18.6-86.2-49.8c-18-31.2-18-68.3,0-99.5L237.3,50.2c18-31.2,50.2-49.8,86.2-49.8c36,0,68.2,18.6,86.2,49.8l223.4,386.9c18,31.2,18,68.3,0,99.5c-18,31.2-50.2,49.8-86.2,49.8H100.1z");

 path 的值拿走不谢,想知道如何写出来的,爱米我会在未来陆续推出 SVG 教程,届时大家就知道了。

clip-path 属性添加到 zongzi 的 CSS 中后,得到一个圆角三角形: 

 至此,咱们已经写出一个粽子的身体了。

再接再厉中......


第二步,写出粽子的粽叶

由于粽叶也是沿着粽子的轮廓而成,我们将其放到 zongzi 的 div 中,这样就不需要写更多的 clip-path 了。

<div class="zongzi">
  <div class="leaf-right"></div>
  <div class="leaf-left"></div>
</div>

先控制粽叶的大小、颜色和边框:

.leaf-left,
.leaf-right {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  width: 650px;
  height: 300px;
  background: linear-gradient(
    #87d15d 19%,
    #49912c 20%,
    #87d15d 21%,
    #87d15d 39%,
    #49912c 40%,
    #87d15d 41%,
    #87d15d 59%,
    #49912c 60%,
    #87d15d 61%
  );
  margin: auto;
  border-top: 5px solid #49912c;
}

这里,粽叶的颜色,采用了线性渐变的方式,让其显示绿色粽叶上有深绿色线条,效果更甚。

我相信细心的你已经发现了,我写了 leaf-rightleaf-left 两片粽叶,现在却重叠在一起了。于是我们将其分开:

.leaf-left {
  transform: rotate(30deg) translate(0, 100px);
}
.leaf-right {
  transform: rotate(-30deg) translate(0, 100px);
}

通过两个对称角度的旋转,得到粽叶包裹的效果:

至此,一个粽子就写出来了。

就这?????和可爱完全不沾边好不?

别急,继续往下看...... 


第三步,两只眼睛

 咱们给粽子一个生命,就加上一张笑脸吧。

 先添加两只眼睛:

<div class="zongzi">
  <div class="eye-left"></div>
  <div class="eye-right"></div>
  <div class="leaf-right"></div>
  <div class="leaf-left"></div>
</div>

控制眼睛的位置、大小:

.eye-left,
.eye-right {
  position: absolute;
  top: 100px;
  width: 50px;
  height: 100px;
  background: #333;
}
.eye-left {
  left: 250px;
}
.eye-right {
  right: 250px;
}

通过分别控制左眼和右眼的位置之后,得到一双眼睛:

妈呀,这是啥呀,吓死我了( ̄▽ ̄)"................

首先,让眼睛变成圆形,添加 border-radius 属性:

.eye-left,
.eye-right {
  position: absolute;
  top: 100px;
  width: 50px;
  height: 100px;
  background: #333;
  border-radius: 50%;
}
.eye-left {
  left: 250px;
}
.eye-right {
  right: 250px;
}

 得到如下结果:

 然后,我们再如法炮制,使用每一只眼睛的伪元素给眼睛添加眼珠子:

.eye-left::before,
.eye-right::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  display: block;
  width: 15px;
  height: 30px;
  background: #fff;
  margin: auto;
  border-radius: 50%;
  content: "";
}

 使用伪元素可以减少HTML的结构:

至此,两只眼睛都写出来了。

你这也没笑啊?

别急嘛,一张笑脸怎么可以少了嘴巴呢?


第四步,弯弯小嘴

咱们再写一个 div 来做嘴巴: 

<div class="zongzi">
  <div class="eye-left"></div>
  <div class="eye-right"></div>
  <div class="mouth"></div>
  <div class="leaf-right"></div>
  <div class="leaf-left"></div>
</div>

 和眼睛一样,通过CSS控制嘴巴的位置、大小、边框、形状等:

.mouth {
  position: absolute;
  top: 200px;
  right: 0;
  left: 0;
  width: 100px;
  height: 100px;
  margin: auto;
  border-bottom: 5px solid #333;
  border-radius: 50%;
}

这样,就得到了一个可爱的粽子:

至此,咱们的可爱的粽子就写出来了。O(∩_∩)O 


完整代码 

这里,附上完整的源代码,拿走不用谢:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>可爱的粽子</title>
<style type="text/css">
  .zongzi {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 650px;
    height: 600px;
    background: #ffedc8;
    margin: auto;
    clip-path: path(
      "M100.1,586.4c-36,0-68.2-18.6-86.2-49.8c-18-31.2-18-68.3,0-99.5L237.3,50.2c18-31.2,50.2-49.8,86.2-49.8c36,0,68.2,18.6,86.2,49.8l223.4,386.9c18,31.2,18,68.3,0,99.5c-18,31.2-50.2,49.8-86.2,49.8H100.1z"
    );
  }
  .eye-left,
  .eye-right {
    position: absolute;
    top: 100px;
    width: 50px;
    height: 100px;
    background: #333;
    border-radius: 50%;
  }
  .eye-left {
    left: 250px;
  }
  .eye-right {
    right: 250px;
  }
  .eye-left::before,
  .eye-right::before {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    display: block;
    width: 15px;
    height: 30px;
    background: #fff;
    margin: auto;
    border-radius: 50%;
    content: "";
  }
  .mouth {
    position: absolute;
    top: 200px;
    right: 0;
    left: 0;
    width: 100px;
    height: 100px;
    margin: auto;
    border-bottom: 5px solid #333;
    border-radius: 50%;
  }
  .leaf-left,
  .leaf-right {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    width: 650px;
    height: 300px;
    background: linear-gradient(
      #87d15d 19%,
      #49912c 20%,
      #87d15d 21%,
      #87d15d 39%,
      #49912c 40%,
      #87d15d 41%,
      #87d15d 59%,
      #49912c 60%,
      #87d15d 61%
    );
    margin: auto;
    border-top: 5px solid #49912c;
  }
  .leaf-left {
    transform: rotate(30deg) translate(0, 100px);
  }
  .leaf-right {
    transform: rotate(-30deg) translate(0, 100px);
  }
</style>
</head>

<body>
  <div class="zongzi">
    <div class="eye-left"></div>
    <div class="eye-right"></div>
    <div class="mouth"></div>
    <div class="leaf-right"></div>
    <div class="leaf-left"></div>
  </div>
</body>
</html>

 那么,聪明的你是否可以在此基础上添加小手和脚丫子呢?并做成动画呢?我拭目以待........

 

 关注我,给您更多精彩内容!

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的端午节静态网页的 HTMLCSS 和 JavaScript 代码: HTML 代码: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>端午节快乐</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h1>端午节快乐</h1> </header> <main> <section class="dragon-boat"> <h2>龙舟竞渡</h2> <img src="dragon-boat.jpg" alt="龙舟竞渡"> <p>端午节一个重要活动是龙舟竞渡,人们会划着装饰着龙头和龙尾的船在水上比赛。</p> </section> <section class="zongzi"> <h2>粽子</h2> <img src="zongzi.jpg" alt="粽子"> <p>端午节还有一个传统食品就是粽子,用糯米和各种馅料包裹在竹叶里蒸制而成。</p> </section> </main> <footer> <p>版权所有 © 2021</p> </footer> </body> </html> ``` CSS 代码: ```css body { font-family: Arial, sans-serif; margin: 0; padding: 0; } header { background-color: #F44336; color: white; text-align: center; padding: 20px; } main { margin: 20px; } section { border: 1px solid #ddd; border-radius: 5px; padding: 20px; margin-bottom: 20px; } section h2 { margin-top: 0; } section img { display: block; margin: 0 auto; max-width: 100%; height: auto; } footer { background-color: #333; color: white; text-align: center; padding: 10px; } ``` JavaScript 代码: ```javascript // 无需 JavaScript 代码 ``` 以上代码会创建一个简单的端午节静态网页,包括一个头部、两个部分、一个页脚,每个部分都包括一个标题、一张图片和一段文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值