分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

原生js+css实现重力模拟弹跳系统的登录页面

发布时间:2023-09-06 01:21责任编辑:蔡小小关键词:js

   今天小颖把之前保存的js特效视频看了一遍,跟着视频敲了敲嘻嘻,用原生js实现一个炫酷的登录页面。怎么个炫酷法呢,看看下面的图片大家就知道啦。

效果图:

不过在看代码之前呢,大家先和小颖看看css中的opacity、transition、box-shadow这三个属性。

1.opacity

作用:设置一个元素的透明度

定义和用法

opacity 属性设置元素的不透明级别。

默认值:1
继承性:no
版本:CSS3
JavaScript 语法:object.style.opacity=0.5

语法

opacity: value|inherit;
描述测试
value规定不透明度。从 0.0 (完全透明)到 1.0(完全不透明)。测试
inherit应该从父元素继承 opacity 属性的值。 

亲自试一试 - 实例

2.transition

作用:将元素从一种样式逐渐改变为另一种的效果。

定义和用法

transition 属性是一个简写属性,用于设置四个过渡属性:

  • transition-property
  • transition-duration
  • transition-timing-function
  • transition-delay

注释:请始终设置 transition-duration 属性,否则时长为 0,就不会产生过渡效果。

默认值:all 0 ease 0
继承性:no
版本:CSS3
JavaScript 语法:object.style.transition="width 2s"

语法

transition: property duration timing-function delay;
描述
transition-property规定设置过渡效果的 CSS 属性的名称。
transition-duration规定完成过渡效果需要多少秒或毫秒。
transition-timing-function规定速度效果的速度曲线。
transition-delay定义过渡效果何时开始。

亲自试一试 - 实例

3.box-shadow

作用:给元素添加阴影效果。

定义和用法

box-shadow 属性向框添加一个或多个阴影。

提示:请使用 border-image-* 属性来构造漂亮的可伸缩按钮!

默认值:none
继承性:no
版本:CSS3
JavaScript 语法:object.style.boxShadow="10px 10px 5px #888888"

语法

box-shadow: h-shadow v-shadow blur spread color inset;

注释:box-shadow 向框添加一个或多个阴影。该属性是由逗号分隔的阴影列表,每个阴影由 2-4 个长度值、可选的颜色值以及可选的 inset 关键词来规定。省略长度的值是 0。

描述测试
h-shadow必需。水平阴影的位置。允许负值。测试
v-shadow必需。垂直阴影的位置。允许负值。测试
blur可选。模糊距离。测试
spread可选。阴影的尺寸。测试
color可选。阴影的颜色。请参阅 CSS 颜色值。测试
inset可选。将外部阴影 (outset) 改为内部阴影。测试

亲自试一试 - 实例

怎么实现的呢,哈哈哈,代码看这里:

<!DOCTYPE html><html><head> ???<meta charset="utf-8"> ???<title>梦幻登录</title> ???<style type="text/css"> ???* { ???????margin: 0; ???????padding: 0; ???????list-style: none; ???} ???body { ???????overflow: hidden; ???} ???#bg_wrap { ???????width: 100%; ???????height: 100%; ???????position: absolute; ???????left: 0; ???????top: 0; ???????overflow: hidden; ???} ???#bg_wrap div { ???????width: 100%; ???????height: 100%; ???????position: absolute; ???????left: 0; ???????top: 0; ???????opacity: 0; ???????/* 设置透明度 */ ???????transition: opacity 3s; ???} ???/* nth-of-type(1) *筛选选择器选择第一个*/ ???#bg_wrap div:nth-of-type(1) { ???????opacity: 1; ???} ???#Login { ???????width: 272px; ???????height: 300px; ???????margin: 200px auto; ???} ???#Login .move { ???????position: absolute; ???????top: -100px; ???????z-index: 999; ???} ???#Login h3 { ???????width: 270px; ???????font-size: 30px; ???????font-weight: 700; ???????color: #fff; ???????font-family: ‘微软雅黑‘; ???????text-align: center; ???????margin-bottom: 30px; ???????cursor: move; ???????/* top: 100px; */ ???} ???/* ?#username { ???????top: 170px; ???} ???#password { ???????top: 225px; ???} */ ???#Login input.text { ???????width: 270px; ???????height: 42px; ???????color: #fff; ???????background: rgba(45, 45, 45, 0.15); ???????border-radius: 6px; ???????border: 1px solid rgba(255, 255, 255, 0.15); ???????box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 1.0) inset; ???????text-indent: 10px; ???} ???#Login input.btn { ???????/* top: 280px; */ ???????background: #ef4300; ???????width: 272px; ???????height: 44px; ???????border-radius: 6px; ???????color: #fff; ???????box-shadow: 0 15px 30px 0 rgba(255, 255, 255, 0.25) inset, 0 2px 7px 0 rgba(0, 0, 0, 0.2); ???????/* -webkit-box-shadow: 0 15px 30px 0 rgba(255, 255, 255, 0.25) inset, 0 2px 7px 0 rgba(0, 0, 0, 0.2); ???????-moz-box-shadow: 0 15px 30px 0 rgba(255, 255, 255, 0.25) inset, 0 2px 7px 0 rgba(0, 0, 0, 0.2); */ ???????border: 0; ???????text-align: center; ???} ???/* #Login input.focus { ???????outline: none; ???????box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.2) inset; ???} */ ???input::-webkit-input-placeholder { ???????color: #fff; ???} ???</style></head><body> ???<div id="bg_wrap"> ???????<div><img src="images/1.jpg" width="100%" height="100%"></div> ???????<div><img src="images/2.jpg" width="100%" height="100%"></div> ???????<div><img src="images/3.jpg" width="100%" height="100%"></div> ???</div> ???<div id="Login"> ???????<h3 id="title" class="move">User Login</h3> ???????<form action="#" method="post" target="_blank"> ???????????<input type="text" placeholder="UserName" name="username" id="username" class="text move"> ???????????<input type="password" placeholder="PassWord" name="password" id="password" class="text move"> ???????????<input type="submit" value="Sign in" class="btn move" id="submit"> ???????</form> ???</div> ???<script type="text/javascript"> ???/*背景渐变*/ ???/*function(){} ??匿名函数 ?????()() ??????????IIFE匿名函数立刻执行,函数自执行体*/ ???(function() { ???????var timer = null; //声明定时器 ???????var oImg = document.querySelectorAll(‘#bg_wrap div‘) //h5最新元素获取写法获取到的是一组元素 ???????//querySelector获取单个元素的 ??兼容ie8 ???????var len = oImg.length; //3 ???????var index = 0; ???????timer = setInterval(function() { ???????????oImg[index].style.opacity = 0; ???????????index++; ???????????// if(index>=3){ ???????????// index=0; ???????????// } ???????????index %= len; //index=index%len求模取余 0%3=0; 1%3=1; 2%3=2; 3%3=0; ???????????oImg[index].style.opacity = 1; ???????}, 2000); ???})(); ???// 重力模拟弹跳系统 ???(function() { ???????/* ???????改变定位元素的top值 ???????达到指定位置之后进行弹跳一次 ???????多个元素一次运动 ???????动画序列*/ ???????var oMove = document.querySelectorAll(‘.move‘); ???????var oLen = oMove.length; ???????var timer = null; ???????var timeout = null; ???????var speed = 3; //移动距离 ???????move(oLen - 1); ???????function move(index) { ???????????if (index < 0) { ???????????????clearInterval(timer); //清除循环定时器 ???????????????clearTimeout(timeout); //清除延时定时器 ???????????????return; //终止函数 ???????????} ???????????var endTop = 150 + (index * 60); //根据下标计算endTop值 ???????????timer = setInterval(function() { ???????????????speed += 3; ???????????????var T = oMove[index].offsetTop + speed; //设置每一次的top值 ???????????????if (T > endTop) { ???????????????????T = endTop; ???????????????????speed *= -1 //取反,让移动距离变为负数 ???????????????????speed *= 0.4; ???????????????????//慢慢停下来 ???????????????} ???????????????oMove[index].style.top = T + ‘px‘; ???????????}, 20); ???????????timeout = setTimeout(function() { ???????????????clearInterval(timer); ???????????????index--; ???????????????console.log(9); ???????????????move(index); ???????????????console.log(index); ???????????}, 900) //过900毫秒之后再执行方法里的代码 ???????} ???})() ???</script></body></html>

原生js+css实现重力模拟弹跳系统的登录页面

原文地址:http://www.cnblogs.com/yingzi1028/p/7763450.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved