原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面

yizhihongxing

下面我就来详细讲解一下“原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面”的完整攻略。

准备工作

1. 引入布局样式

在实现登录页面前,我们需要先布局整个页面。可以使用flex布局来实现,在此之前需要先引入布局样式。

body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #282c34;
  font-family: sans-serif;
}

.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 20px;
  background-color: #f7f7f7;
  border-radius: 10px;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
}

2. HTML结构

在布局样式引入完成后,我们需要按照HTML结构来实现整个页面。代码如下:

<body>
  <div class="container">
    <h2>Login</h2>
    <input type="text" placeholder="Username">
    <input type="password" placeholder="Password">
    <button>Login</button>
  </div>
</body>

实现动画效果

1. 基本动画效果

在实现重力模拟弹跳系统前,我们需要先实现登录框的基本动画效果。代码如下:

.container {
  /* 省略其他样式 */

  animation: drop 0.8s cubic-bezier(0.68, -0.55, 0.27, 1.55) both;
}

@keyframes drop {
  0% {
    transform: translateY(-200px);
    opacity: 0;
  }
  100% {
    transform: translateY(0);
    opacity: 1;
  }
}

2. 实现重力模拟弹跳系统

在实现重力模拟弹跳系统时,我们需要控制登录框的位置变化。代码如下:

.container {
  /* 省略其他样式 */

  position: relative;
}

.container:after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #282c34;
  transform: translate(-50%, -50%);
  animation: bounce 0.8s ease infinite alternate;
}

@keyframes bounce {
  0% {
    transform: translate(-50%, -50%) translateY(0);
  }
  100% {
    transform: translate(-50%, -50%) translateY(50px);
  }
}

实现交互效果

1. 基本交互效果

在实现基本交互效果前,我们需要先添加按钮的hover效果。代码如下:

button:hover {
  background-color: #2196f3;
  color: #fff;
  cursor: pointer;
}

2. 实现点击按钮后的交互效果

在实现点击按钮后的交互效果时,我们需要通过JS来更新密码输入框的状态。代码如下:

const passwordInput = document.querySelector('input[type="password"]');

document.querySelector('button').addEventListener('click', () => {
    // 判断是否打开重力模拟弹跳系统
    if (passwordInput.getAttribute('data-bounce') == null) {
        passwordInput.setAttribute('data-bounce', 'true');
    } else {
        passwordInput.removeAttribute('data-bounce');
    }
});

在JS代码中,我们通过给密码输入框添加data-bounce属性来实现控制重力模拟弹跳系统启动和关闭。

3. 修改样式来配合交互效果

在JS代码添加完成后,我们需要修改样式来配合交互效果。代码如下:

.container:after {
  /* 省略其他样式 */

  animation-name: none;
  transform: translate(-50%, -50%) translateY(0);
}

input[type="password"][data-bounce="true"] + input[type="text"] {
  animation: shake 0.8s cubic-bezier(0.68, -0.55, 0.27, 1.55) both;
}

@keyframes shake {
  0% {
    transform: translateX(0);
  }
  15% {
    transform: translateX(-20px);
  }
  30% {
    transform: translateX(20px);
  }
  45% {
    transform: translateX(-20px);
  }
  60% {
    transform: translateX(20px);
  }
  75% {
    transform: translateX(-20px);
  }
  90% {
    transform: translateX(20px);
  }
  100% {
    transform: translateX(0);
  }
}

在样式中,我们通过animation-name为none来关闭重力模拟弹跳系统,并通过添加特定条件下的样式来实现密码输入框的摇头效果。

总结

通过以上几个步骤,我们就可以实现“原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面”了。

其中,我们需要先引入布局样式,并按照HTML结构来实现整个页面;接着,我们通过控制登录框的位置变化来实现重力模拟弹跳系统,同时在JS代码中实现控制启动和关闭;最后,我们通过修改样式来配合交互效果,实现点击按钮后的摇头效果。

整个过程需要较高的CSS和JS技能,但如果掌握了基础知识,实现起来还是挺有实际意义的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面 - Python技术站

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

相关文章

  • CSS中选择器的权重值的计算

    CSS中选择器的权重值是用来优化CSS的一个重要概念,当多个选择器对同一个元素设置不同的样式时,CSS会通过计算选择器的权重值来判断哪些样式具有更高的优先级。下面是CSS中选择器权重值计算的详细说明: 选择器的组成 首先,先了解一下选择器的组成。选择器由不同的部分组成,每个部分的优先级是不同的。这些部分按照优先级的高低依次为: 内联样式(优先级为1000) …

    css 2023年6月9日
    00
  • Photoshop 制作苹果导航栏效果教程

    Photoshop 制作苹果导航栏效果教程 简介 本教程将介绍如何使用 Photoshop 制作苹果导航栏效果。该效果在现代 Web 设计中非常常见,因此学习如何创建这类效果是非常有帮助的。 步骤 1. 创建新文档 打开 Photoshop,点击“文件”>“新建”,输入文档名称、宽度、高度和分辨率,然后点击“创建”。 2. 填充背景色 选择“矩形工具”…

    css 2023年6月10日
    00
  • 纯js实现轮播图效果

    下面是使用纯JS实现轮播图效果的完整攻略: 确定HTML结构 首先,我们需要确定轮播图的HTML结构。可以使用以下结构: <div id="slider"> <ul> <li><img src="img/slide1.jpg" alt="Slide 1"&g…

    css 2023年6月10日
    00
  • js点击按钮实现水波纹效果代码(CSS3和Canves)

    JS点击按钮实现水波纹效果是一种很炫酷的UI效果,可以为网站增加动态和交互的效果,本文将详细讲解实现这种效果的完整攻略。实现方法有两种,分别是使用CSS3和使用Canvas。 CSS3 实现 js 点击按钮水波纹效果 HTML 结构 首先需要在HTML文件中添加一个按钮,如下所示: <button class="wave-button&quo…

    css 2023年6月10日
    00
  • div+css与xhtml+css分别是什么意思?

    div+CSS 和 XHTML+CSS 都是 Web 前端开发中常用的技术,用于实现网页的布局和样式。下面将详细讲解这两种技术的含义和使用方法。 1. div+CSS 是什么意思? div+CSS 是一种基于 div 元素和 CSS 样式的网页布局技术。div 元素是 HTML 中的一个块级元素,可以用于划分网页的不同区域,然后使用 CSS 样式来控制这些区…

    css 2023年5月18日
    00
  • jQuery操作CSS样式

    jQuery操作CSS样式攻略 在jQuery中,可以使用以下方法操作CSS样式: 1. .css()方法 .css()方法用于获取或设置一个或多个元素的CSS样式。可以传入一个或两个参数。 第一个参数是一个CSS属性的名称,如果想一次设置多个属性,可以传入一个有多个属性和值的JSON对象。第二个参数是一个可选的布尔值,表示是否使用动画过渡效果。 下面是示例…

    css 2023年6月10日
    00
  • src或者css背景图的url值为base64编码代码

    当我们网页中使用图片作为背景时,可以通过设置background-image属性将图片作为背景展示。而background-image属性的值通常为一个url,用于指定图片的路径。一般情况下,这个url值会指向一个图片文件的路径,然后由浏览器进行请求加载。但是,我们也可以将图片的二进制数据以Base64编码的方式写在url中,这样就可以避免发送额外的图片请求…

    css 2023年6月9日
    00
  • 前端页面文件拖拽上传模块js代码示例

    前端页面文件拖拽上传模块是一种比较常见的交互方式,能够让用户通过将本地文件拖拽上传到页面而不必使用传统的文件选择框。下面我们将为大家介绍一份完整的前端页面文件拖拽上传模块js代码示例。 常见的前端拖拽上传模块 前端拖拽上传模块比较常见的有两种方式: 方式1:使用JS原生API实现 使用JS原生API实现文件的拖拽上传,步骤如下: 通过getElementBy…

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