html+css设计两个摆动的大灯笼

以下是关于“HTML+CSS设计两个摆动的大灯笼”的完整攻略:

1.理解需求

首先,我们要理解需求意味着我们知道如何开始设计我们的大灯笼。根据所给出的需求,我们需要设计两个大灯笼,使它们可以摆动。因此,设计的页面应该包括两个大灯笼的模型,以及它们摆动的动作。在完成这个任务之后,这个网站应该呈现一个稳定的页面,并且大灯笼应该能够正确地摆动。

2.HTML布局

接下来,我们需要完成HTML布局。我们可以这样做:

<!-- index.html 文件 -->
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>HTML+CSS设计两个摆动的大灯笼</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <!-- 设计两个大灯笼 -->
  <div class="lantern left">
    <!-- 灯笼的顶部 -->
    <div class="top"></div>

    <!-- 灯笼的身体 -->
    <div class="body"></div>

    <!-- 灯笼的底部 -->
    <div class="bottom"></div>

    <!-- 灯笼下面的绳子 -->
    <div class="rope"></div>
  </div>

  <div class="lantern right">
    <!-- 灯笼的顶部 -->
    <div class="top"></div>

    <!-- 灯笼的身体 -->
    <div class="body"></div>

    <!-- 灯笼的底部 -->
    <div class="bottom"></div>

    <!-- 灯笼下面的绳子 -->
    <div class="rope"></div>
  </div>

  <script src="move.js"></script>
</body>
</html>

在上面代码中,我们创建了一个具有两个灯笼的div容器。具体来说,我们为左侧灯笼设立一个lantern left类,为右侧灯笼设置一个lantern right类。在设计灯笼时,我们需要为顶部、身体和底部,以及绳子,分别创建新的div元素。

3.CSS样式

CSS样式设计可以这样做:

/* style.css 文件 */
.lantern{
  float:left;
  width:50%;
  height:600px;
  position:relative;
}

.lantern .top {
  background:#0a0a0a;
  border-radius:50% 50% 0 0;
  width: 200px;
  height: 200px;
  position: absolute;
  top: 0;
  left: 50%;
  margin-left: -100px;
}

.lantern .body {
  background: #cc3a3a;
  width: 203px;
  height: 300px;
  position: absolute;
  top: 200px;
  left: 50%;
  margin-left: -101.5px;
}

.lantern .bottom {
  background: #0a0a0a;
  border-radius: 0 0 50% 50%;
  width: 200px;
  height:200px;
  position: absolute;
  top: 500px;
  left: 50%;
  margin-left: -100px;
}

.lantern .rope {
  background: #a8a8a8;
  width: 5px;
  height: 150px;
  position: absolute;
  top: 650px;
  left: 50%;
  margin-left: -2.5px;
}

.left .rope{
  transform: rotate(-20deg);
  transform-origin: center bottom;
}

.right .rope{
  transform: rotate(20deg);
  transform-origin: center bottom;
}

上述样式代码中,我们使用了常规样式和过渡动画的方法让大灯笼摆动。具体来说,我们设置了灯笼、灯笼顶部、灯笼身体、灯笼底部、以及灯笼下的绳子的CSS样式值。我们通过浮动(float),宽度(width)和高度(height)属性设置容器的定位。我们同时赋予每个项在相对位置上足够的空间。在左右两侧的大灯笼中,我们将灯笼底部与顶部分别定义为凸形与凹形。我们还对绳子运用CSS的新特性“transform”来让它们摆动。

4. JavaScript动态效果

接着,我们定义JavaScript文件,以使大灯笼可以摆动。我们可以这样做:

// move.js 文件
(function move(){
  const lanterns = document.querySelectorAll('.lantern')
  let offset = 0;

  setInterval(() => {
    offset+=0.1;
    lanterns[0].style.transform = `rotate(${Math.sin(offset)* 20}deg)`;
    lanterns[1].style.transform = `rotate(${-Math.sin(offset)* 20}deg)`;
  }, 1000/60);
})();

在上述代码中,我们使用了JavaScript闭包(IIFE函数),来使每个灯笼独立地摆动。我们首先使用querySelectorAll方法获取所有的灯笼元素。然后,我们使用setInterval()定时器函数每秒执行60次来改变偏移量的值,从而实现动画。我们将左灯笼旋转20度,右灯笼旋转-20度,这就可以构成两个灯笼相互摆动的效果。

5. 示例

示例1:Codepen链接

示例2:JSFiddle链接

总体来说,我们使用HTML、CSS和JavaScript的组合来设计两个摆动的大灯笼,实现了非常好的效果,且可以得到一份可重复利用的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:html+css设计两个摆动的大灯笼 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • 兼容IE与firefox的css 线性渐变(linear-gradient)

    实现兼容IE与Firefox的线性渐变,可以通过使用CSS的filter属性和渐变图像background-image属性进行实现。具体步骤如下: 1.使用CSS的filter属性实现IE浏览器中的线性渐变: 在IE中,我们可以使用下面的代码实现线性渐变: background: linear-gradient(to right, #ff0000, #000…

    css 2023年6月11日
    00
  • css中子元素设置margin-top为什么影响了父元素

    当在CSS中将子元素的margin-top属性设置为正数值时,可能会影响其父元素的高度。这是由于CSS中的盒模型(Box Model)所决定的。盒模型定义了一个元素在页面中的可视框,并包括元素的四个基本属性:内容(content)、填充(padding)、边框(border)和外边距(margin)。 当设置子元素的margin-top属性时,可以看做是给子…

    css 2023年6月10日
    00
  • js实现鼠标移到链接文字弹出一个提示层的方法

    实现鼠标移到链接文字弹出一个提示层的方法,有多种方式。以下是其中一种常用的方法: 步骤 1:编写 HTML 代码 首先,在 HTML 页面中添加一个链接的 HTML 代码,如下所示: <a href="#" class="tooltip" title="这是提示信息">链接文字</…

    css 2023年6月10日
    00
  • DW2017图片文字怎么并排排列? HTML图片/文字并排排列代码写法

    HTML中实现图片和文字并排排列可以使用CSS中的浮动和内联块(inline-block)属性。以下是两条示例代码: 示例一:使用浮动实现图片和文字并排排列 <div style="overflow: hidden;"> <img src="https://example.com/image.jpg"…

    css 2023年6月11日
    00
  • 魔兽世界怀旧服决斗俱乐部新赛有什么奖励 决斗俱乐部新赛季规则详解

    魔兽世界怀旧服决斗俱乐部新赛奖励 近日,魔兽世界怀旧服官方公布了决斗俱乐部新赛的规则和奖励,本文将为大家详细解读。 奖励 本次决斗俱乐部新赛季的奖励主要有以下四个方面: 等级排名奖励:在赛季结束后,将统计各选手决斗场地对战获胜次数排名后,奖励前列选手不同等级的徽章。 标准淘汰赛奖励:决斗俱乐部将会举办标准淘汰赛,根据选手在淘汰赛中的表现,赠送丰富的奖励。例如…

    css 2023年6月10日
    00
  • 用css margin去掉横排图片之间的间距

    首先需要明确一点,图片之间存在间距的原因通常是由于其默认的外边距(margin)和内边距(padding)引起的。接下来,提供以下两种方法可以去掉横排图片之间的间距。 方法一:设置图片的display属性 将图片的display属性设置为“inline-block”,然后设置其外边距(margin)为负值就可以去掉图片之间的间距了。比如: img { dis…

    css 2023年6月10日
    00
  • 当DIV高度为自动时,背景颜色无法显示的解决方法

    当一个 div 的高度被设为 auto,它的高度将会根据其包含的内容自适应,这通常情况下是一个很好的设计,但如果你想要为该元素定义一个背景颜色,你将会遇到以下问题:由于该元素的高度是根据其包含的内容而定的,而并不是由其 padding 或 border 决定的,导致该元素的背景颜色无法铺满整个元素体积,从而导致整个背景色失效。 以下提供两种解决方法。 方法一…

    css 2023年6月9日
    00
  • 使用JavaScript实现表格编辑器(实例讲解)

    下面我将详细讲解如何使用JavaScript实现表格编辑器: 1. 准备工作 在实现表格编辑器之前,我们需要在HTML中添加一个空表格,具体代码如下所示: <table id="myTable"> <thead> <tr> <th>姓名</th> <th>年龄<…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部