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日

相关文章

  • Bootstrap优化站点资源、响应式图片、传送带使用详解3

    Bootstrap优化站点资源、响应式图片、传送带使用详解3 在这篇文章中,我们将介绍如何使用Bootstrap框架来优化您的站点资源和处理响应式图片。此外,我们还将讲解如何使用Bootstrap的传送带组件来创建漂亮的幻灯片和图片轮播。 优化站点资源 优化站点资源可以大大提高您的站点性能,使页面加载速度更快。使用Bootstrap可以使您的工作更轻松。 通…

    css 2023年6月9日
    00
  • 谈谈CSS隐藏元素(display,visibility)的区别

    下面我将详细讲解“谈谈CSS隐藏元素(display,visibility)的区别”。 1. display与visibility的区别 1.1 display属性 display属性用于设置元素在页面中的显示方式。通过设置display属性,我们可以让元素被隐藏或显示。常见的display取值包括:none、block、inline、inline-bloc…

    css 2023年6月10日
    00
  • CSS浮动所差生的内容溢出问题及清除浮动的方法小结

    这里是 “CSS浮动所产生的内容溢出问题及清除浮动的方法小结” 的完整攻略。 CSS浮动引发的内容溢出问题 CSS浮动可以使元素脱离文档流,但浮动的元素可能会导致其父级元素高度塌陷,甚至产生内容溢出的问题。这是因为浮动的元素不占据常规文档流中元素所占的位置,浮动元素的高度会被忽略,导致浮动元素所在的容器高度不正确。 示例一: <div class=&q…

    css 2023年6月10日
    00
  • 实现div滚动条默认最底部以及默认最右边的示例代码

    实现div滚动条默认最底部以及默认最右边可以通过设置scrollTop和scrollLeft属性来实现。 滚动到底部 下面是一个示例代码,用于实现滚动条默认滚动到div的底部。 .chat-box{ height: 300px; overflow-y: scroll; } const chatBox = document.querySelector(‘.ch…

    css 2023年6月10日
    00
  • 怎么用纯CSS制作带小三角的tooltip提示框

    以下是关于“怎么用纯CSS制作带小三角的tooltip提示框”的完整攻略。 步骤一:HTML 结构 首先,需要在 HTML 文件中定义一个元素,用于触发 tooltip 提示框的显示。以下是示例: <div class="tooltip-trigger">Hover me</div> 上述代码中,<div&g…

    css 2023年5月18日
    00
  • CSS元素堆叠方法详解

    CSS 元素堆叠可以在网页设计中实现复杂效果,包括图层重叠、图片透明度、叠加效果等等。下面为您提供一个完整攻略来了解 CSS 元素堆叠的实现。 CSS 元素堆叠原理 CSS 中的元素堆叠顺序遵循一个规则:后面的元素会始终显示在前面的元素上方(覆盖前面的元素)。但是,有些元素不遵循这一规则: position 属性 当元素被设置为position:absolu…

    Web开发基础 2023年3月20日
    00
  • css控制文本实现越界省略号以及自动换行

    实现文本的越界省略号和自动换行可以通过CSS的text-overflow和white-space属性来控制。 文本越界省略号 如果一段文本内容过长,而它的容器宽度不足以完整显示,我们通常希望它以省略号的形式展示,而不是被截断。这时我们可以使用text-overflow属性来实现。具体步骤如下: 1.将元素的overflow属性设置为hidden或scroll…

    css 2023年6月10日
    00
  • 分享那些Web设计大神们常用的响应式框架(小结)

    分享那些Web设计大神们常用的响应式框架(小结) 在Web设计领域,响应式设计已经成为一种必备的能力。而响应式框架的出现,使得响应式设计的实现更加便捷和高效。在这篇文章中,我们将介绍一些Web设计大神常用的响应式框架。 一、Bootstrap Bootstrap是目前为止最流行的响应式框架之一,它完全开源且免费。由Twitter开发,具有Sass插件、基础的…

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