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

下面我就来详细讲解一下“原生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日

相关文章

  • windows下关于sublime text2,HTML/CSS/JS Prettify插件使用路径问题处理

    下面是关于”Windows下关于Sublime Text2,HTML/CSS/JS Prettify插件使用路径问题的处理”的完整攻略。 1. 安装Sublime Text2和HTML/CSS/JS Prettify插件 首先需要在官网上下载Sublime Text2安装包进行安装。安装完成后,打开Sublime Text2并进入菜单栏Preferences…

    css 2023年6月9日
    00
  • jquery弹窗时禁止body滚动条滚动的例子

    请参考以下攻略,包含两个示例说明。 攻略 当使用jQuery弹出框或模态框时,为了确保用户集中精力处理弹出框中的信息,我们通常要禁止页面的滚动。 一种简单的解决方法是通过禁止body元素的滚动来实现。我们可以使用CSS和JavaScript来实现这一目的。 示例如下: 1. CSS方式: /* 禁止body元素滚动 */ body.modal-open { …

    css 2023年6月10日
    00
  • JS+CSS相对定位实现的下拉菜单

    JS+CSS相对定位实现的下拉菜单是网页制作中比较常用的一种效果,它可以让页面菜单更加美观、实用。下面是它的完整攻略。 第一步:HTML布局 首先,需要定义一个下拉菜单触发器和下拉菜单的容器,代码如下: <div class="dropdown"> <button class="dropdown-trigger…

    css 2023年6月9日
    00
  • css 微格式 XFN规范

    CSS 微格式 XFN 规范是一种用于定义网页中人际关系的标准,它可以帮助搜索引擎更好地理解网页内容,提高网页的可读性和可访问性。下面是 CSS 微格式 XFN 规范的详细讲解。 1. 什么是 CSS 微格式 XFN 规范 CSS 微格式 XFN 规范是一种用于定义网页中人际关系的标准,它使用简单的 HTML 标签和 class 属性来表示人际关系,例如朋友…

    css 2023年5月18日
    00
  • html5理解head_动力节点Java学院整理

    HTML5是指用于创建Web页面和应用程序的最新版本的HTML语言。HTML5在设计时考虑到了Web的发展趋势和需求,具有更好的结构,更多的标签和功能,以及更好的性能和安全性。 HTML5中的head标签负责包含文档的元信息,例如标题,关键词,描述和CSS样式表等。下面是对head标签常用元素的详细讲解: 1. title 标签 title标签用于定义文档的…

    css 2023年6月9日
    00
  • 设计一个带选择和提示功能的检索框(分步介绍)

    下面为您详细讲解“设计一个带选择和提示功能的检索框”的完整攻略。 1. 设计需求分析 在设计一个带选择和提示功能的检索框之前,我们需要先对设计需求进行分析。根据需求,我们需要了解以下信息: 检索框要支持用户输入关键词进行搜索 检索框能够提示用户如何输入关键词 检索框需要有选择功能,用户可以选择检索方式 检索框也需要提示用户可用的检索方式 2. 编写 HTML…

    css 2023年6月10日
    00
  • js es6系列教程 – 新的类语法实战选项卡(详解)

    “js es6系列教程 – 新的类语法实战选项卡(详解)”是一篇关于JavaScript ES6类语法与选项卡实战的教程。该教程主要包含以下几个部分: 一、类的基本语法 在该部分,作者详细介绍了ES6中类的基本语法,包括类的定义、构造函数、方法等概念。同时,作者还对比了ES6类和ES5构造函数的不同之处。示例代码如下: //ES6定义类 class Anim…

    css 2023年6月9日
    00
  • React路由动画切换实现过程详解

    下面是关于“React路由动画切换实现过程详解”的完整攻略: 1. 确定动画需求 在开始实现React路由动画切换之前,我们需要先明确需要实现的动画效果。可能会有多种选择,例如渐入渐出、滑动、旋转等等。此外,根据页面切换的特点,我们需要选择适当的页面切换时机来触发动画,例如页面进入前、页面进入时、页面离开时等。 2. 在React项目中引入动画库 为了简单明…

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