我是c站的一个小博主,近期我会每天分享前端知识包括(原生的web语句,以及vue2和vue3,微信小程序的写法及知识点)本篇文章收录于html特效专栏中,如果想每天在我这学到一些东西,请关注我并订阅专栏,每天都分享前端知识哦~
目录
1.前端工程师主要利用HMTL与CSS建构页面(其中html构建骨架,css构建样式),用JavaScript获取后端数据以及完善交互以及用户体验。
2.通俗来讲,前端在一个项目里,拿到UI设计师设计的设计稿,然后实现UI设计师设计稿,调用后端程序员给的数据接口以获取数据,然后测试,最后部署上线。
3.前端可以对设计图负责,大部分情况下,不需要特别的去理解业务逻辑,因为我们90后都是玩着十几年手机电脑长大的,十几年的经验足够我们在潜意识里想明白应该怎么做,怎么去一步步实现,会有什么意外情况。
4.我感觉前端发展有个很大的缺陷----晋升问题. 正如第三点所言,作为领导必须对项目有足够的了解,显然是要重点包括业务逻辑,这点上,后端开发者需要涉及数据库逻辑,是必须要跟业务逻辑打交道的(重中之重),因此,大部分的领导岗位都是后端开发者更有晋升的机会。当然,个别公司有专门的前端组长(这也不算什么),如果说前端开发者在自己工作范围之外还要腾出时间去研究业务逻辑,属实是觉得出力不讨好(因为这样的操作需要持续很久才能看出效果),而且再怎么研究业务逻辑也不会比每时每刻跟业务逻辑打交道的后端开发者了解更多。说实在的,大部分情况下,前端在配合后端进行开发.后端需要了解业务逻辑,要跟领导和客户商量细节,露脸机会很大,在老板面前刷脸次数众多。这些都是拉开前后端程序员晋升机会差距的因素。
层次结构的表现
动态效果,如缩放,覆盖,滑出网页或单个视觉元素,可帮助用户理解网页信息架构。通常是通过转场和菜单来展开网页。
表现层级关系
为了展现层与层的关系,是抽屉,是打开,还是平级切换等等。让用户知道这个界面和上一个、下一个的关系。
清晰明确
动效可以清晰地表明各种数据块中间的逻辑结构,即使在数据高度饱和的情况下也能使一切从观感上有组织性。
添加了图层
在网站制作过程中加上特效,每个元素都在用户滚动页面或者是鼠标经过的地方有动态效果,就像在平面层上多出了一个动态层,这样看起来更加有层次感。
我想借此专栏发布的内容帮助那些正在入坑前端的家人们,同时作为我以后复习的笔记,希望我们可以互相帮助,共同加油!!!
代码:
- html>
- <html>
-
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
-
- <title>弹跳方块加载title>
- <style>
- *{
- /* 初始化 */
- margin: 0;
- padding: 0;
- }
- body{
- /* 100%窗口高度 */
- height: 100vh;
- /* 弹性布局 水平+垂直居中 */
- display: flex;
- justify-content: center;
- align-items: center;
- background-color: #000;
- }
- .loader{
- /* 相对定位 */
- position: relative;
- /* 自定义属性--c */
- --c: #48c0a3;
- }
- .loader .square{
- width: 200px;
- height: 200px;
- /* 通过var函数调用自定义属性--c */
- background-color: var(--c);
- /* 阴影 外发光效果 */
- box-shadow: 0 0 15px var(--c),
- 0 0 30px var(--c),
- 0 0 60px var(--c);
- /* 设置旋转元素的基点位置 */
- transform-origin: bottom right;
- /* 执行动画: 动画名 时长 线性 无限次播放 */
- animation: roll 1s linear infinite;
- }
- /* 黑色遮罩(挖空方形) */
- .loader .square::before{
- content: "";
- width: 150px;
- height: 150px;
- /* 绝对定位 居中 */
- position: absolute;
- left: 50%;
- top: 50%;
- transform: translate(-50%,-50%);
- background-color: #000;
- /* 阴影 内发光效果 */
- box-shadow: inset 0 0 15px var(--c),
- inset 0 0 30px var(--c),
- inset 0 0 60px var(--c);
- }
- .loader .text{
- position: absolute;
- width: 300px;
- height: 40px;
- line-height: 40px;
- left: -40px;
- bottom: -80px;
- /* 溢出隐藏 */
- overflow: hidden;
- }
- .loader .text p{
- color: var(--c);
- font-size: 24px;
- white-space: nowrap;
- /* 文字发光效果 */
- text-shadow: 0 0 2px var(--c),
- 0 0 4px var(--c),
- 0 0 8px var(--c);
- position: absolute;
- /* 默认移出可视范围 */
- left: 100%;
- /* 执行动画 */
- animation: move 3.5s linear infinite;
- }
-
- /* 定义动画 */
- /* 方块旋转动画 */
- @keyframes roll {
- 100%{
- transform: translateX(-100%) rotateZ(90deg);
- }
- }
- /* 文本移动动画 */
- @keyframes move {
- 100%{
- left: -50%;
- }
- }
- style>
- head>
-
- <body>
- <div class="loader">
- <div class="square">div>
- <div class="text">
- <p>拼命加载中...p>
- div>
- div>
- body>
-
- html>
代码:
- html>
- <html>
-
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
-
- <title>3d方向感效果title>
- <style>
- *{
- /* 初始化 */
- margin: 0;
- padding: 0;
- }
- body{
- /* 100%窗口高度 */
- height: 100vh;
- /* 弹性布局 水平+垂直居中 */
- display: flex;
- justify-content: center;
- align-items: center;
- /* 渐变背景 */
- background: linear-gradient(200deg,#ffecd2,#fcb69f);
- }
- .container{
- /* 定义3D元素距视图的距离 */
- perspective: 320px;
- }
- .btn{
- display: block;
- margin: 40px 0;
- width: 240px;
- height: 80px;
- border: none;
- background-color: #fda085;
- color: #fff;
- font-size: 18px;
- border-radius: 6px;
- outline: none;
- cursor: pointer;
- /* 动画过渡 */
- transition: 0.3s;
- }
- .btn:nth-child(1):hover{
- /* 沿X轴旋转15度 */
- transform: rotateX(15deg);
- /* 阴影 */
- box-shadow: 0 15px 15px rgba(225,95,65,0.56);
- }
- .btn:nth-child(2):hover{
- /* 沿X轴旋转-15度 */
- transform: rotateX(-15deg);
- /* 阴影 */
- box-shadow: 0 -15px 15px rgba(225,95,65,0.56);
- }
- .btn:nth-child(3):hover{
- /* 沿Y轴旋转15度 */
- transform: rotateY(15deg);
- /* 阴影 */
- box-shadow: -15px 0 15px rgba(225,95,65,0.56);
- }
- .btn:nth-child(4):hover{
- /* 沿Y轴旋转-15度 */
- transform: rotateY(-15deg);
- /* 阴影 */
- box-shadow: 15px 0 15px rgba(225,95,65,0.56);
- }
- style>
- head>
-
- <body>
- <div class="container">
- <button class="btn">求点赞button>
- <button class="btn">求关注button>
- <button class="btn">求收藏button>
- <button class="btn">求分享button>
- div>
- body>
-
- html>
代码:
- html>
- <html>
-
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
-
- <title>始终飞向鼠标的纸飞机title>
-
- <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
- <style>
- *{
- /* 初始化 */
- margin: 0;
- padding: 0;
- }
- body{
- /* 100%窗口高度 */
- height: 100vh;
- /* 渐变背景 */
- background: linear-gradient(200deg,#fbff00,#fb0000);
- }
- #plane{
- color: #fff;
- font-size: 70px;
- /* 绝对定位 */
- position: absolute;
- /* 弹性布局 水平+垂直居中 */
- display: flex;
- justify-content: center;
- align-items: center;
- }
- style>
- head>
-
- <body>
- <div id="plane">
- <i class="fa fa-paper-plane" aria-hidden="true">i>
- div>
- <script>
- let plane=document.getElementById('plane');
- let deg=0,ex=0,ey=0,vx=0,vy=0,count=0;
- window.addEventListener('mousemove',(e)=>{
- ex=e.x-plane.offsetLeft-plane.clientWidth/2;
- ey=e.y-plane.offsetTop-plane.clientHeight/2;
- deg=360*Math.atan(ey/ex)/(2*Math.PI)+45;
- if(ex<0){
- deg+=180;
- }
- count=0;
- })
- function draw(){
- plane.style.transform='rotate('+deg+'deg)';
- if(count<100){
- vx+=ex/100;
- vy+=ey/100;
- }
- plane.style.left=vx+'px';
- plane.style.top=vy+'px';
- count++;
- }
- setInterval(draw, 1);
- script>
- body>
-
- html>
代码:
- html>
- <html>
-
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
-
- <title>篮球弹跳加载title>
- <style>
- *{
- /* 初始化 */
- margin: 0;
- padding: 0;
- }
- body{
- /* 100%窗口高度 */
- height: 100vh;
- /* 弹性布局 水平+垂直居中 */
- display: flex;
- justify-content: center;
- align-items: center;
- /* 渐变背景 */
- background: linear-gradient(200deg,#d5ec00,#1eff00);
- }
- .ball-box{
- width: 150px;
- height: 150px;
- /* 执行动画:动画名 时长 减速 先反向再正向 无限次播放 */
- animation: bounce 0.6s ease-out alternate-reverse infinite;
- }
- .ball{
- width: 150px;
- height: 150px;
- border-radius: 50%;
- background-color: #f7972b;
- box-shadow: 0 0 2px 4px #fff;
- /* 溢出隐藏 */
- overflow: hidden;
- /* 绝对定位 */
- position: absolute;
- z-index: 1;
- /* 执行动画:动画名 时长 线性 无限次播放 */
- animation: roll 3s linear infinite;
- }
- .ball::before,.ball::after{
- content: "";
- position: absolute;
- width: 100%;
- height: 100%;
- border-radius: 50%;
- border: 5px solid #fff;
- /* 加一点点模糊 */
- filter: blur(0.5px);
- }
- .ball::before{
- left: -70%;
- }
- .ball::after{
- right: -70%;
- }
- .ball .a,.ball .b{
- position: absolute;
- left: 50%;
- top: 50%;
- transform: translate(-50%,-50%);
- background-color: #fff;
- }
- .ball .a{
- width: 200px;
- height: 5px;
- }
- .ball .b{
- width: 5px;
- height: 200px;
- }
- .shadow{
- width: 150px;
- height: 5px;
- border-radius: 50%;
- background-color: rgba(0,0,0,0.4);
- position: absolute;
- bottom: 25vh;
- z-index: -1;
- filter: blur(1.5px);
- animation: shadow 0.6s ease-out alternate-reverse infinite;
- }
-
- /* 定义动画 */
- /* 篮球弹跳的动画 */
- @keyframes bounce {
- 0%{
- transform: translateY(15vh);
- }
- 100%{
- transform: translateY(-20vh);
- }
- }
- /* 篮球旋转的动画 */
- @keyframes roll {
- 0%{
- transform: rotate(0deg);
- }
- 100%{
- transform: rotate(360deg);
- }
- }
- /* 阴影的动画 */
- @keyframes shadow {
- 0%{
- transform: scale(0.15,1.25);
- }
- 100%{
- transform: scale(1.25,0.75);
- }
- }
- style>
- head>
-
- <body>
- <div class="ball-box">
- <div class="ball">
- <div class="a">div>
- <div class="b">div>
- div>
- div>
- <div class="shadow">div>
- body>
-
- html>
代码:
- html>
- <html>
-
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
-
- <title>马赛克背景的按钮特效title>
- <style>
- *{
- /* 初始化 */
- margin: 0;
- padding: 0;
- }
- body{
- /* 100%窗口高度 */
- height: 100vh;
- /* 弹性布局 水平+垂直居中 */
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- /* 渐变背景 */
- background: linear-gradient(200deg,#485563,#29323c);
- }
- .button{
- width: 250px;
- height: 80px;
- border: 2px solid #fff;
- display: flex;
- justify-content: center;
- align-items: center;
- border-radius: 10px;
- margin: 15px 0;
- cursor: pointer;
- /* 溢出隐藏 */
- overflow: hidden;
- /* 相对定位 */
- position: relative;
- }
- .button p{
- font-size: 22px;
- font-weight: bold;
- /* 绝对定位 */
- position: absolute;
- /* 动画过渡 */
- transition: 1s;
- }
- .button .back{
- width: 100%;
- height: 100%;
- position: absolute;
- }
- .button .back span{
- background-color: #fff;
- display: block;
- float: left;
- }
- .button:hover div span{
- /* 通过var函数调用自定义属性--c,设置背景颜色 */
- background-color: var(--c);
- }
- .button:hover p{
- color: #fff;
- }
- style>
- head>
-
- <body>
- <div class="button">
- <div class="back" style="--c:#e74c3c;">div>
- <p>评论p>
- div>
- <div class="button">
- <div class="back" style="--c:#2ecc71;">div>
- <p>关注p>
- div>
- <div class="button">
- <div class="back" style="--c:#3498db;">div>
- <p>收藏p>
- div>
- <div class="button">
- <div class="back" style="--c:#9b59b6;">div>
- <p>转发p>
- div>
- <script>
- // 获取所有的.back层
- let backs=document.getElementsByClassName('back');
- // 遍历所有的.back层,并添加span元素作为背景
- for(let i=0;i
length;i++){ - // 当前的.back层
- let back=backs[i];
- // 宽高尺寸采用.back层的1/25宽度
- let width=back.clientWidth/25;
- let height=width;
- // 计算所需的背景块数量
- let count=25*parseInt(back.clientHeight/height);
- for(let j=0;j
- // 根据计算结果并添加对应数量的span元素
- let span=document.createElement('span');
- span.style.width=width+'px';
- span.style.height=width+'px';
- // 设置动画过渡:时长 线性 动画延迟
- span.style.transition='0.2s linear '+Math.random()/2+'s';
- // 追加元素
- back.appendChild(span);
- }
- }
- script>
- body>
-
- html>