【小结】pc前端开发流程-从开始到交互

2019-08-02  本文已影响0人  音无级鹦鹉螺号szhiku

pc网页开发流程

1.准备阶段

拿到设计图(如果有)
开始标注(各个元素间距,横/纵轴 并划分元素)

切图(切出logo、UI、图、背景、)

2.静态页面开发


3.网页动态效果开发

3.1 css动画新特性

1.新的选择器, 如:div:last-child
2.多列布局column-count
+ column-count 属性规定元素应该被划分的列数。
详细css3属性column知多少

语法:

column-count: number|auto;
3.圆角:border-radius
4.渐变背景图:background-image:-webkit-gradient(linear,0%0%,100%0%,from(#2A8BBE),to(FE280E));
+ 关于这块详解请参考设计渐变的背景之-webkit-gradient

5.transform
6.transitions

7.animation

.screen-1__heading{
    /*过度参数*/
    transition: all 1s;
}

2.(例如)-webkit-animation:rock 2s infinite ease-in-out .5s;
rock是定义了一个帧动画,然后会在2s内播放.infinite表示循环, .5表示延迟的时间
@-webkit-keyframes rock{
0%{ transform:rotate(0deg)}
10%{ transform:rotate(3deg)}
20%{ transform:rotate(-3deg)}
30%{ transform:rotate(2deg)}
40%{ transform:rotate(-2deg)}
50%{ transform:rotate(1deg)}
60%{ transform:rotate(-1deg)}
70%{ transform:rotate(0deg)}
80%{ transform:rotate(0deg)}
90%{ transform:rotate(0deg)}
100%{ transform:rotate(0deg)}
}

3.2开发技巧-测试模式

以css动画测试脚本为例
css动画主要包含三个状态,静态static、初始态init、完成态done
注意:测试时每次点击务必等待动画演示完毕再点击

测试脚本代码如下:
css部分:

.screen-1__heading{
    /*过度参数*/
    transition: all 1s;
}
/*开始状态*/
.screen-1__heading_animate_init{
    opacity: 0;
    transform: translate(0,100%);
}
/*结束状态*/
.screen-1__heading_animate_done{
    opacity: 1;
    transform: translate(0,0%);
}

js部分:

var screenAnimateElements = { //将要加动画的类名及其子类名存储在screenAnimateElements里
    '.screen-1': [
        '.screen-1__heading',
        '.screen-1__phone',
        '.screen-1__shadow'
    ]
}

function setScreenAnimate(screenCls) {
    var screen = document.querySelector(screenCls);//获取当前屏的元素
    var animateElements = screenAnimateElements[screenCls];//从screenAnimateElements取出需要设置动画的元素
    var isSetAnimateClass = false;//是否初始化子元素的样式
    var isAnimateDone = false; // 当前屏幕下所有子元素的状态是DONE?
    screen.onclick = function () {
        //初始化样式,增加init
        if( isSetAnimateClass === false){
            for(var i=0;i<animateElements.length;i++){

                var element = document.querySelector(animateElements[i]);

                var baseCls = element.getAttribute('class');

                element.setAttribute('class',baseCls +' '+animateElements[i].substr(1)+'_animate_init');
            }
            isSetAnimateClass = true;
            return;
        }
        //切换所有 animateElements 的init -> done
        if(isAnimateDone === false){
            for(var i=0;i<animateElements.length;i++){

                var element = document.querySelector(animateElements[i]);

                var baseCls = element.getAttribute('class');

                element.setAttribute('class',baseCls.replace('_animate_init', '_animate_done'));

            }
            isAnimateDone = true;
            return;
        }
        //切换所有 animateElements 的done -> init
        if(isAnimateDone === true){
            for(var i=0;i<animateElements.length;i++){

                var element = document.querySelector(animateElements[i]);

                var baseCls = element.getAttribute('class');

                element.setAttribute('class',baseCls.replace('_animate_done','_animate_init'));
            }
            isAnimateDone = false;
            return ;
        }
    }
}

setScreenAnimate('.screen-1');

小技巧:可以使用以下遍历对象代码替换现有的遍历数组

for(k in screenAnimateElements){ // 遍历screenAnimateElements对象中的元素并赋值在k中
  setScreenAnimate(k);
}

4.网页交互效果开发

网页交互实质上是JS控制css动画实现交互

上一篇 下一篇

猜你喜欢

热点阅读