使用合适的CSS优化界面:translate和top/left的比较

Guidelines for translate

top/left花了大量的时间去绘制每一帧。所有的css包括box-shdow都是在CPU上计算的。在translate版本中,却让这个macbook在自己新的图层在GPU中得到提升。此时此元素macboox是在自己单独的一层上,任何2D transform,3D transform或者opacity的变化都可以完全的使用GPU,GPU可以保持非常快并且可以给我们提供非常快的帧速率。


Guidelines for animation 

1. 尽可能的使用CSS 关键帧动画或者CSS transition。浏览器可以优化大量绘制和组合的时间。 
2. 如果一定使用基于JS的动画,尽量使用requestAnimationFrame。尽量不要使用setTimeout, setInterval。 
3. 尽量不要在每一帧上改变inline元素,浏览器可以在多方面优化css中声明式动画。 
4. 使用2D transforms来代替pos:abs将会显著的提高FPS(每秒传输帧数),因为2D transform有更少的绘制时间和更流畅的动画。 
5. 通过Timeline Frams模式来观测什么让你变慢 
6. 在chroms://flags中打开“ 
合成渲染层边框”,帮助你看到哪些元素正在被GPU render
好的,我可以为您提供一份简单的校园网站登录界面的HTML和CSS代码,如下: HTML代码: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>校园网站登录界面</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="login-box"> <h2>校园网站登录</h2> <form> <div class="user-box"> <input type="text" name="" required=""> <label>用户名</label> </div> <div class="user-box"> <input type="password" name="" required=""> <label>密码</label> </div> <a href="#"> <span></span> <span></span> <span></span> <span></span> 登录 </a> </form> </div> </body> </html> ``` CSS代码: ```css *{ margin: 0; padding: 0; box-sizing: border-box; } body{ background: #1abc9c; font-family: sans-serif; } .login-box{ width: 280px; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); color: #fff; } .login-box h2{ text-align: center; margin-bottom: 20px; } .login-box form{ display: flex; flex-direction: column; justify-content: center; } .user-box{ position: relative; margin-bottom: 20px; } .user-box input{ width: 100%; padding: 10px 0; font-size: 16px; color: #fff; margin-bottom: 30px; border: none; border-bottom: 1px solid #fff; outline: none; background: transparent; } .user-box label{ position: absolute; top: 0; left: 0; padding: 10px 0; font-size: 16px; color: #fff; pointer-events: none; transition: .5s; } .user-box input:focus ~ label, .user-box input:valid ~ label{ top: -20px; left: 0; color: #03a9f4; font-size: 12px; } a{ display: inline-block; background: transparent; border: 2px solid #fff; padding: 14px 80px; color: #fff; font-size: 16px; text-transform: uppercase; letter-spacing: 2px; cursor: pointer; position: relative; overflow: hidden; transition: .5s; } a:hover{ background: #fff; color: #1abc9c; } a span{ position: absolute; display: block; } a span:nth-child(1){ top: 0; left: -100%; width: 100%; height: 2px; background: linear-gradient(90deg,transparent,#fff); } a:hover span:nth-child(1){ left: 100%; transition: 1s; } a span:nth-child(2){ top: -100%; right: 0; width: 2px; height: 100%; background: linear-gradient(180deg,transparent,#fff); } a:hover span:nth-child(2){ top: 100%; transition: .5s; } a span:nth-child(3){ bottom: 0; right: -100%; width: 100%; height: 2px; background: linear-gradient(270deg,transparent,#fff); } a:hover span:nth-child(3){ right: 100%; transition: .5s; } a span:nth-child(4){ bottom: -100%; left: 0; width: 2px; height: 100%; background: linear-gradient(360deg,transparent,#fff); } a:hover span:nth-child(4){ bottom: 100%; transition: .5s; } ``` 您可以将上述代码复制到您的HTML和CSS文件中,并进行一些微调,以适应您的网站需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值