原生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日

相关文章

  • CSS教程:网页版面设计无效的10个原因

    下面是“CSS教程:网页版面设计无效的10个原因”的完整攻略: CSS教程:网页版面设计无效的10个原因 1. 语法错误 在CSS编写中,任何一个不正确的字符都可能导致整个CSS文件有效性失效。常见的语法错误包括拼写错误、忘记添加分号以及括号未成对等。所以,在编写CSS时,务必要仔细检查,以确保相应的语法正确。 示例: /* 错误示例 */ body { b…

    css 2023年6月10日
    00
  • asp中去除html中style,javascript,css代码

    针对ASP中去除HTML中style、javascript、css代码的问题,可以采用以下方式: 方法一:正则表达式 可以使用正则表达式去除HTML中的style、javascript、css代码,具体步骤如下: 1.导入正则表达式命名空间 using System.Text.RegularExpressions; 2.编写正则表达式 string patt…

    css 2023年6月9日
    00
  • HTML5+CSS设置浮动却没有动反而在中间且错行的问题

    遇到“HTML5+CSS设置浮动却没有动反而在中间且错行的问题”这个问题时,一般情况下可能有以下几种原因: CSS中的宽度设置错误; 元素间的间距没有正确设置; CSS中的浮动设置错误。 接下来我们详细讲解如何排查和解决这些问题: 问题排查 问题一:CSS中的宽度设置错误 如果设置了元素的宽度,并且元素的总宽度(包含padding和border)大于了其父元…

    css 2023年6月9日
    00
  • css 怎么清除浮动

    在 CSS 中,浮动是一种常见的布局方式,但是浮动元素可能会影响其他元素的布局。因此,我们需要清除浮动。下面是一个完整的攻略,包含了如何清除浮动的过程和两个示例说明。 如何清除浮动 1. 使用 clear 属性 我们可以使用 clear 属性来清除浮动。下面是一个示例: <div class="container"> <…

    css 2023年5月18日
    00
  • jQuery EasyUI 中文API Button使用实例

    jQuery EasyUI 中文API Button使用实例 Button简介 Button是jQuery EasyUI中的一个用户界面组件,用于创建简单的按钮。它支持各种有趣的按钮样式,包括图标和自定义文本等。 Button的创建 可以通过如下代码创建Button: <a href="#" class="easyui-l…

    css 2023年6月9日
    00
  • 怎么用驱动精灵安装网卡驱动以及驱动精灵如何更新网卡驱动?

    安装网卡驱动以及更新网卡驱动是保持电脑网络正常运行的重要一环,使用驱动精灵可以更快更方便地完成这个任务。下面,我将为大家介绍如何使用驱动精灵安装网卡驱动以及如何更新网卡驱动。 安装网卡驱动 首先,从官方网站下载并安装驱动精灵软件。 打开驱动精灵软件后,在左侧导航栏中找到“驱动库”选项卡,然后找到“网卡”选项,点击进入。 在网卡驱动页面中会列出所有的网卡驱动,…

    css 2023年6月10日
    00
  • 如何使用pace.js美化你的网站加载进度条详解

    当用户访问网站时,有时候需要等待页面加载。在这个过程中,用户可能会感到无聊或者不知道页面是否会成功加载。这时候,加载进度条就可以非常好地解决这个问题,它能让用户看到加载进度,给予他们一种等待过程的可视化反馈。在这里,我将介绍如何使用pace.js来实现这一效果。 步骤一:下载和引入pace.js文件 首先,你需要下载pace.js到你的项目目录中,然后在HT…

    css 2023年6月10日
    00
  • 用css制作星级评分

    下面是用CSS制作星级评分的完整攻略。 1. 确定HTML结构 首先,需要为星级评分定义一个HTML结构。一般来说,使用无序列表(ul)和列表项(li)来实现星级评分。每个列表项代表一个星星,通过列表项的class属性来控制星级的样式和状态。 例如,以下是一个基本的HTML结构: <ul class="rating"> &lt…

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