zoukankan      html  css  js  c++  java
  • 最近项目中的一些总结

    页面布局

    1、如何让Footer固定在页面底部

    在页面的设计中,经常会碰到要求footer内容固定在底部。这时候的难点在于body的高度有时候超过了100%有时候低于100%,导致定位上的困难。个人采用的方法如下:
    页面结构为:

       <body>
        <div class="wrap">
            <div class="main">
               <h1> this is main content.</h1>
            </div>
        </div>
        <div class="footer">
            <h1>this is footer.</h1>
        </div>
    </body>
    

    css代码为:

    *{
        margin: 0;
        padding: 0;
    }
    html,body{
         100%;
        height: 100%;
    }
    .wrap{
         100%;
        min-height: 100%;
        margin-bottom: -100px;
    }
    .main{
        padding-bottom: 100px;
    }
    .footer{
         100%;
        height: 100px;
        background-color: #abcdef;
    }
    

    显示效果如下:


    2、scss的使用

    第一次正式使用scss,感觉scss的语法还是相对比较简单的,使用方法也不难。同时,能够极大地改善css书写的效率。scss的使用需要安装ruby,然后使用gem安装scss,gem install sass,也可以使用淘宝的镜像,具体安装方法详见:sass的安装.
    scss的编译工具个人一般使用国人开发的一款软件koala.个人感觉挺好用的,也可能是没试过其他编译工具的原因。

    @charset "UTF-8";
    // 设置charset以保证不会出现注释字符错误
    /*设置变量*/
    $var:12px;
    $com:common-class;
    body{
        font-size: $var;
    }
    // 应用于class和属性
    #{$com}-1{
    
    }
    // 嵌套
    body{
        .wrap{
            .test{
                 100%;
            }
        //同级使用符号&
        &:hover{
            color:red;
        }
        }
    }
    // 一维数组
    $arr1:10px 9px 8px 11px;
    // 二维数组
    $arr2:(10px 9px) (8px 11px);
    //map
    $map:(p:20px,h2:30px);
    @each $header,$size in $map{
        #{$header}{
            font-size: $size;
        }
    }
    
    
    //mixin
    //个人感觉有点像变量的扩展,公用代码块,便于批量修改
    @mixin common-block {
        margin: 0 auto;
        padding: 0;
    }
    body{
        @include common-block;
    }
    //继承
    h3{
        @extend .func;
        line-height: 30px;
    }
    
    // 函数
    @function func1($px) {
        @return $px+20px;
    }
    .func{
        font-size: func1(20px);
    }
    
    
    // 条件判断
    $lt1:20;
    $lt2:33;
    .if{
        @if $lt1>$lt2{
            font-size:#{$lt1}px;
        }@else{
            font-size: #{$lt2}px;
        }
    }
    $list:1 2 3 4;
    // for循环
    @for $i from 1 through 3{
        .item-#{$i}{
             $i*200px;
        }
    }
    @each $i in $list{
        .each-#{$i}{
             $i*200px;
        }
    }
    
    

    编译结果如下:

    @charset "UTF-8";
    /*设置变量*/
    body { font-size: 12px; }
    
    body .wrap .test {  100%; }
    body .wrap:hover { color: red; }
    
    p { font-size: 20px; }
    
    h2 { font-size: 30px; }
    
    body { margin: 0 auto; padding: 0; }
    
    h3 { line-height: 30px; }
    
    .func, h3 { font-size: 40px; }
    
    .if { font-size: 33px; }
    
    .item-1 {  200px; }
    
    .item-2 {  400px; }
    
    .item-3 {  600px; }
    
    .each-1 {  200px; }
    
    .each-2 {  400px; }
    
    .each-3 {  600px; }
    
    .each-4 {  800px; }
    

    以上是自己最近使用scss的一点心得,出错之处还望不吝指出。



    JavaScript

    1、数组的运算

    项目中越来越多用到数组的运算,总结一下自己用到的内容:

    • 数组相加,使用concat即可,或者使用slice
    • 数组相减:
    function arr_dive(aArr,bArr){   //第一个数组减去第二个数组
        if(bArr.length===0){return aArr;}
        var diff=[];
        var str=bArr.join("&quot;&quot;");
        for(var e in aArr){
            if(str.indexOf(aArr[e])==-1){
                diff.push(aArr[e]);
            }
        }
        return diff;
    }
    
    • 数组添加使用push,删除最后一个元素使用pop
    • 数组排序使用sort或者reverse
    • 数组转化为字符串str=arr.join("");

    2、avalon的使用

    这是一个类似于angular的js框架,也是使用的MVVM架构,不过学习曲线相对于ng来说简单了不止一点半点,可以说是看下教程基本上就可以入门了。我在项目中使用的是avalon1,在功能上还有很多不完善的地方,不过就数据的双向绑定以及减少DOM操作上来说,收益良多。
    使用了avalon之后,在进行复杂交互操作的时候可以进行函数式编程,以避免使用jquery时,在进行dom操作的时候较容易出现bug的情况(我自己的感受是这样的)。具体的avalon教程请参阅迷你MVVM框架 avalonjs 入门教程



    其他

    1、不要让框架限制自己的思路。框架本身并不是完美的,不能实现所有的定制功能。而且,框架本身可能也不具有实现特定功能的能力。所以,脱离框架进行操作反而能提高自己的工作效率。
    
    2、页面所有的图标使用iconfont以减少资源的请求,可以提高页面的响应速度,减少带宽的消耗。
    
    3、对于兼容性要求较高的页面,避免使用较新的css属性和布局方法(例如:ios微信6.2不支持flexbox布局)
    
    4、在javascript中,添加到页面上的事件处理越多,性能越差。所以,在存在列表中添加事件时,尽量使用事件代理以提高页面性能。
    
  • 相关阅读:
    win7下配置pfn

    转(每天淘汰你自己)
    [asp]替换连续多个回车换行
    安装windows组件 提示 无法加载安装安装程序:Wbemupgd.dll
    asp.net三层结构例子
    sql2005下读取字段属性
    discuz数据表结构
    Ajax2.0 'Sys'未定义的解决办法
    .net(c#)读取flash(swf)文件的尺寸
  • 原文地址:https://www.cnblogs.com/monkeyleo/p/5807295.html
Copyright © 2011-2022 走看看