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

yizhihongxing

以下是关于“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日

相关文章

  • Javascript Bootstrap的网格系统,导航栏和轮播详解

    关于Javascript Bootstrap的网格系统、导航栏和轮播的完整攻略,我将从以下几个方面进行详细讲解: 什么是Bootstrap Bootstrap网格系统 Bootstrap导航栏 Bootstrap轮播 1. 什么是Bootstrap Bootstrap是Twitter开源的用于前端开发的HTML、CSS和JS框架,它的主要目标是让开发人员快速…

    css 2023年6月10日
    00
  • 运用CSS methodologies去实现模块化的方法示例

    在运用CSS methodologies去实现模块化的方法中,我们需要遵循一定的规范和流程,这样可以让我们的代码更加清晰和易于维护。下面是一个简单的示例来展示如何使用CSS methodologies去实现模块化。 方法一: BEM(Block Element Modifier) BEM是一种CSS框架,通过定义块、元素和修饰符,使得HTML元素易于维护和理…

    css 2023年6月10日
    00
  • css实现文字断裂效果的示例代码

    实现文字断行效果是前端开发中常见的需求,可以通过CSS的word-break和overflow-wrap属性来实现。 1. word-break 属性 word-break 属性用于控制如何断行,常用的有以下几个取值: normal:默认值,使用浏览器默认的换行规则,不会在单词内进行换行。 break-all:在单词内允许换行,常用于处理长网址等超长文本。 …

    css 2023年6月9日
    00
  • 在HTML5中你如何使用CSS建立不可选的文字

    在 HTML5 中,我们可以使用 CSS 的 user-select 属性来建立不可选的文字。下面是一个完整攻略,包含了如何使用 CSS 建立不可选的文字的过程和两个示例说明。 CSS 如何建立不可选的文字 我们可以使用 CSS 的 user-select 属性来建立不可选的文字。user-select 属性控制用户是否可以选择文本。将 user-selec…

    css 2023年5月18日
    00
  • 如何在 Illustrator 中存储图稿?AI图稿存储五大基本格式

    在 Illustrator 中,我们可以使用不同的格式来存储图稿,并根据不同的需求选择合适的格式。下面是五种基本的存储格式: AI 格式 AI 格式是 Adobe Illustrator 的原生格式。当我们需要在 Illustrator 中对图稿进行修改或编辑时,应该使用 AI 格式进行存储。AI 格式不仅可以保存所有的图层信息、样式、效果和笔刷,还可以保存…

    css 2023年6月10日
    00
  • CSS 字体单位em简介

    CSS 字体单位em简介 在CSS中,我们常使用像素(px)作为字体大小的单位。但是,随着Web的不断发展,越来越多的网站采用了响应式设计,而px固定的大小不符合响应式设计所需,因此em成为了更好的选择。 em是什么? em是一个相对单位,根据其父元素的字体大小而定。一般而言,1em等于父元素的字体大小。比如,如果一个段落的字体大小被设置为1.2em,那么字…

    css 2023年6月9日
    00
  • css 超出用省略号当标题字符溢出用省略号表示

    下面是关于”CSS超出用省略号当标题字符溢出用省略号表示”的完整攻略。 什么是CSS超出用省略号当标题字符溢出用省略号表示? 当一个块元素容器中的文本内容超出了其容器的宽度或高度时,我们可以通过CSS的一些实现方式来处理这种情况。其中比较常见的方式是使用”省略号”来表示溢出的文本。 例如,在博客的文章列表页中,一篇文章摘要超过了一定长度,我们就希望它在显示时…

    css 2023年6月10日
    00
  • Vue组件实现景深卡片轮播示例

    下面是详细的“Vue组件实现景深卡片轮播示例”的攻略。 什么是景深卡片轮播 景深卡片轮播是一种卡片轮播式的组件,与一般的卡片轮播不同之处在于它可以在拖动卡片时产生景深效果,即中心卡片会放大,两侧卡片会逐渐缩小。这种效果能够提升用户体验,使得轮播更加流畅自然。 如何实现景深卡片轮播 Vue组件可以很方便地实现景深卡片轮播。我们需要进行以下几个步骤: 1.组件基…

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