前端是做什么的?
1.前端工程师主要利用HMTL与CSS建构页面(其中html构建骨架,css构建样式),用JavaScript获取后端数据以及完善交互以及用户体验。
2.通俗来讲,前端在一个项目里,拿到UI设计师设计的设计稿,然后实现UI设计师设计稿,调用后端程序员给的数据接口以获取数据,然后测试,最后部署上线。
3.前端可以对设计图负责,大部分情况下,不需要特别的去理解业务逻辑,因为我们90后都是玩着十几年手机电脑长大的,十几年的经验足够我们在潜意识里想明白应该怎么做,怎么去一步步实现,会有什么意外情况。
4.我感觉前端发展有个很大的缺陷----晋升问题. 正如第三点所言,作为领导必须对项目有足够的了解,显然是要重点包括业务逻辑,这点上,后端开发者需要涉及数据库逻辑,是必须要跟业务逻辑打交道的(重中之重),因此,大部分的领导岗位都是后端开发者更有晋升的机会。当然,个别公司有专门的前端组长(这也不算什么),如果说前端开发者在自己工作范围之外还要腾出时间去研究业务逻辑,属实是觉得出力不讨好(因为这样的操作需要持续很久才能看出效果),而且再怎么研究业务逻辑也不会比每时每刻跟业务逻辑打交道的后端开发者了解更多。说实在的,大部分情况下,前端在配合后端进行开发.后端需要了解业务逻辑,要跟领导和客户商量细节,露脸机会很大,在老板面前刷脸次数众多。这些都是拉开前后端程序员晋升机会差距的因素。
前端的特效视觉:
层次结构的表现
动态效果,如缩放,覆盖,滑出网页或单个视觉元素,可帮助用户理解网页信息架构。通常是通过转场和菜单来展开网页。
表现层级关系
为了展现层与层的关系,是抽屉,是打开,还是平级切换等等。让用户知道这个界面和上一个、下一个的关系。
清晰明确
动效可以清晰地表明各种数据块中间的逻辑结构,即使在数据高度饱和的情况下也能使一切从观感上有组织性。
添加了图层
在网站制作过程中加上特效,每个元素都在用户滚动页面或者是鼠标经过的地方有动态效果,就像在平面层上多出了一个动态层,这样看起来更加有层次感。
<htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>泡泡'小胖子'</title><style> *{ margin: 0; padding: 0; } .zhongjian1{ /*100%窗口高度*/height:100vh; /*渐变背景*/background: linear-gradient(150deg,#75c7f7,#afec5f); /*溢出隐藏*/overflow: hidden; } .zhongjianbigbox{ margin: 300px00750px; width: 300px; height: 300px; /*相对定位*/position: relative; } .zhongjianpaopao{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#87c55e, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: zhongjianpaopao4sease-in-outinfinite; } .zhongjianyinying{ background-color: rgba(0, 0, 0, 0.15); width: 200px; height: 80px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -95px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: zhongjianyinying4sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframeszhongjianpaopao{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-80px); } } @keyframeszhongjianyinying{ 0%,100%{ transform: scale(0.5); } 50%{ transform: scale(1); } } /* 中间泡泡完成 */.zuoshangbigbox{ margin: -500px0050px; width: 200px; height: 200px; /*相对定位*/position: relative; } .zuoshangpaopao{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#5ec5c0, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: zuoshangpaopao4sease-in-outinfinite; } .zuoshangyinying{ background-color: rgba(0, 0, 0, 0.15); width: 100px; height: 60px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -55px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: zuoshangyinying4sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframeszuoshangpaopao{ 0%,100%{ transform: translateY(0); } 35%{ transform: translateY(-80px); } } @keyframeszuoshangyinying{ 0%,100%{ transform: scale(0.5); } 60%{ transform: scale(1); } } /* 左上完成 */.youshangbigbox{ margin: -200px001700px; width: 150px; height: 150px; /*相对定位*/position: relative; } .youshangpaopao{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#c5735e, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: youshangpaopao4sease-in-outinfinite; } .youshangyinying{ background-color: rgba(0, 0, 0, 0.15); width: 90px; height: 50px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -55px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: youshangyinying4sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesyoushangpaopao{ 0%,100%{ transform: translateY(0); } 35%{ transform: translateY(-80px); } } @keyframesyoushangyinying{ 0%,100%{ transform: scale(0.5); } 35%{ transform: scale(1); } } /* 右上完成 *//* 其他开始 */.qitabigbox1{ margin: 300px001500px; width: 150px; height: 150px; /*相对定位*/position: relative; } .qtpaopao1{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#715ec5, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao14sease-in-outinfinite; } .qtyinying1{ background-color: rgba(0, 0, 0, 0.15); width: 90px; height: 50px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -55px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying14sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao1{ 0%,100%{ transform: translateY(0); } 65%{ transform: translateY(-80px); } } @keyframesqtyinying1{ 0%,100%{ transform: scale(0.5); } 65%{ transform: scale(1); } } .qitabigbox2{ margin: -220px00100px; width: 150px; height: 150px; /*相对定位*/position: relative; } .qtpaopao2{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#c3c55e, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao24sease-in-outinfinite; } .qtyinying2{ background-color: rgba(0, 0, 0, 0.15); width: 90px; height: 50px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -55px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying24sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao2{ 0%,100%{ transform: translateY(0); } 65%{ transform: translateY(-80px); } } @keyframesqtyinying2{ 0%,100%{ transform: scale(0.5); } 65%{ transform: scale(1); } } .qitabigbox3{ margin: -300px00300px; width: 150px; height: 150px; /*相对定位*/position: relative; } .qtpaopao3{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#c55e9a, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao34sease-in-outinfinite; } .qtyinying3{ background-color: rgba(0, 0, 0, 0.15); width: 90px; height: 50px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -55px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying34sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao3{ 0%,100%{ transform: translateY(0); } 45%{ transform: translateY(-80px); } } @keyframesqtyinying3{ 0%,100%{ transform: scale(0.5); } 45%{ transform: scale(1); } } .qitabigbox4{ margin: 120px001200px; width: 100px; height: 100px; /*相对定位*/position: relative; } .qtpaopao4{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#5e9fc5, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao44sease-in-outinfinite; } .qtyinying4{ background-color: rgba(0, 0, 0, 0.15); width: 70px; height: 30px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -35px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying44sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao4{ 0%,100%{ transform: translateY(0); } 55%{ transform: translateY(-80px); } } @keyframesqtyinying4{ 0%,100%{ transform: scale(0.5); } 55%{ transform: scale(1); } } .qitabigbox5{ margin: -80px00400px; width: 150px; height: 150px; /*相对定位*/position: relative; } .qtpaopao5{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#bd5ec5, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao54sease-in-outinfinite; } .qtyinying5{ background-color: rgba(0, 0, 0, 0.15); width: 90px; height: 50px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -55px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying54sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao5{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-80px); } } @keyframesqtyinying5{ 0%,100%{ transform: scale(0.5); } 50%{ transform: scale(1); } } .qitabigbox6{ margin: -600px001200px; width: 150px; height: 150px; /*相对定位*/position: relative; } .qtpaopao6{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#5ec563, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao64sease-in-outinfinite; } .qtyinying6{ background-color: rgba(0, 0, 0, 0.15); width: 90px; height: 50px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -55px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying64sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao6{ 0%,100%{ transform: translateY(0); } 35%{ transform: translateY(-80px); } } @keyframesqtyinying6{ 0%,100%{ transform: scale(0.5); } 35%{ transform: scale(1); } } .qitabigbox7{ margin: -300px00600px; width: 250px; height: 250px; /*相对定位*/position: relative; } .qtpaopao7{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#c55e5e, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao74sease-in-outinfinite; } .qtyinying7{ background-color: rgba(0, 0, 0, 0.15); width: 100px; height: 60px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -65px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying74sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao7{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-80px); } } @keyframesqtyinying7{ 0%,100%{ transform: scale(0.5); } 50%{ transform: scale(1); } } .qitabigbox8{ margin: 400px00650px; width: 100px; height: 100px; /*相对定位*/position: relative; } .qtpaopao8{ background-image: url(../泡泡特效/img/1.jpg); background-size: 120%100%; width: 100%; height: 100%; background: radial-gradient(circleat75%30%,#fff5px,#f8b8068%#5b5b5b60%,#ff7221100%); border-radius: 50%; /*阴影*/box-shadow: inset0010px#fff, inset-10px-20px30px#8ce6d3, inset10px-60px50px#dff1c8, inset020px40px#f9f6de, 0040px#fff; /*执行动画:动画名 时长 加速后减速,无限循环*/animation: qtpaopao84sease-in-outinfinite; } .qtyinying8{ background-color: rgba(0, 0, 0, 0.15); width: 80px; height: 40px; border-radius: 50%; /*绝对定位*/position: absolute; left: 50%; margin-left: -35px; bottom: -100px; /*一点模糊效果*/filter: blur(1px); animation: qtyinying84sease-in-outinfinite } /*定义动画*//*泡泡浮动动画*/@keyframesqtpaopao8{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-80px); } } @keyframesqtyinying8{ 0%,100%{ transform: scale(0.5); } 50%{ transform: scale(1); } } </style></head><body><divclass="zhongjian1"><divclass="zhongjianbigbox"><divclass="zhongjianpaopao"></div><divclass="zhongjianyinying"></div></div><divclass="zuoshangbigbox"><divclass="zuoshangpaopao"></div><divclass="zuoshangyinying"></div></div><divclass="youshangbigbox"><divclass="youshangpaopao"></div><divclass="youshangyinying"></div></div><divclass="qitabigbox1"><divclass="qtpaopao1"></div><divclass="qtyinying1"></div></div><divclass="qitabigbox2"><divclass="qtpaopao2"></div><divclass="qtyinying2"></div></div><divclass="qitabigbox3"><divclass="qtpaopao3"></div><divclass="qtyinying3"></div></div><divclass="qitabigbox4"><divclass="qtpaopao4"></div><divclass="qtyinying4"></div></div><divclass="qitabigbox5"><divclass="qtpaopao5"></div><divclass="qtyinying5"></div></div><divclass="qitabigbox6"><divclass="qtpaopao6"></div><divclass="qtyinying6"></div></div><divclass="qitabigbox7"><divclass="qtpaopao7"></div><divclass="qtyinying7"></div></div><divclass="qitabigbox8"><divclass="qtpaopao8"></div><divclass="qtyinying8"></div></div></div></body></html>