zoukankan      html  css  js  c++  java
  • 第二次讨论——响应式设计、布局技巧、css性能优化、css预处理

    第二次讨论

    【响应式设计】

    集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相对应的布局。

    响应式布局:

    meta标签的实用:设置布局宽度等于设备宽度,布局viewport等于度量viewport

    <meta name="viewport" content="width=device-width,initial-scale=1">

    【【布局】】

    【水平居中】

    一、text-align和inline-block的联合使用:

    text-align属性:通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式。(从而child为文本行内元素,parent为块状元素,可以通过display来设置)。

    .parent{text-align: center;} //父元素
    .child{display: inline-block;}//子元素

    不过此方法兼容性比较好,IE浏览器接收。不过代码较多,同时要设置父元素和子元素。

    二、使用margin:0 auto设置

    .child{width:100px;margin:0 auto;}//必须要有宽度

    margin设置的是块级元素的居中。兼容性好,不过需要设置宽度。

    三、display:table设置

    .child{display:table;margin:0 auto;}

    此方法只需对自身进行设置,代码简短。不过在IE6、7上,需要进行调整。

    四、使用绝对定位

    .parent{position:relative;}
     /*或者实用margin-left的负值为盒子宽度的一半也可以实现,不过这样就必须知道盒子的宽度,但兼容性好*/
    .child{position:absolute;left:50%;transform:translate(-50%);}

    transform:translate。移动transform在translation的方向和距离。简单的说,向某方向移动物体多少距离。

    不过这个方法兼容性不好,要IE9 以上。

    【垂直居中】

    一、vertical-align方法

    /*第一种方法*/ 
    .parent{display:table-cell;vertical-align:middle;height:20px;} 
    /*第二种方法*/ 
    .parent{display:inline-block;vertical-align:middle;line-height:20px;}

    在使用vertical-align的时候,由于对齐的基线是用行高的基线作为标记,故需要设置line-height或设置display:table-cell。

    二、使用绝对定位

    .parent{position:relative;} 
    .child
    {positon:absolute;top:50%;transform:translate(0,-50%);}

    注意与水平居中的区别

    【水平垂直居中】

    一、利用vertical-align,text-align,inline-block实现

    .parent{display:table-cell;vertical-align:middle;text-align:center;} 
    .child{display:inline-block;}

    二、使用绝对定位

    .parent{position:relative;} 
    .child{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}

    由上可知,绝对定位可以实现任何方式的居中,不过还要考虑兼容性问题。

    【多列布局】

    一、左列定宽,右列自适应:

    (1)使用float+margin

    .left{float:left;width:100px;}
    .right{margin-left:100px;}

    经试验,如果不用margin的话,必须设置高度。IE6会有3px的bug

    (2)使用table实现

    .parent{display:table;table-layout:fixed;width:100%;} 
    .left{display:table-cell;} 
    .right{width:100px;display:table-cell;}

    二、两列定宽,一列自适应

    (1)使用margin+float

    (2)利用float+overflow实现

    .left,.center{float:left:200px;} 
    .right{overflow:hidden;}

    (3)利用table实现
    三、两侧自适应,中间定宽(网页布局常用)

    (1)使用margin+float

    .left{width:100px;float:left;}
     .center{float:left;width:100%;margin-right:-200px;} 
    .right{width:100px;float:right;}

    (2)利用table实现

    四、一列不定宽,一列自适应

    (1)利用float+overflow实现

    .left{float:left;background-color: red;height: 100px;}
    .right{background-color: blue;overflow: hidden;height: 100px;}

    不需要设定高度。会自适应。

    五、多列式分布

    (1)div+float

    六、九宫格布局

    (1)div+table

    【css性能优化】

    一、模块化:让代码高度重用,提高开发效率。

          模块与模块之间尽量不要包含相同的部分,如果有,提取出来,拆分成一个独立的模块。

    二、css命名:用英文。大小驼峰、下划线等。驼峰表示区别不同单词,下划线表示从属关系。

          避免重复命名,自己的代码前加上属于自己的前缀。

    三、class的使用:多组合,少继承。

    四、上下margin处理:如果不确定模块的上下margin特别稳定,最好不要将它写在模块的类里,而是使用类的组合,单独为上下margin挂用于边距的原子类(如mt10、

              mb20)。模块最好不要混用margin-top和margin-bottom,统一使用某一个。

    五、低权重原则:避免滥用自选择器。当不同选择符的样式设置有冲突时,会采用权重高的选择符设置样式。选择符权重相同,为就近原则。

            权重原则:HTML标签为1(如p),class为10,id为100。css选择符保证权重尽可能低。

            使用子选择器,会增加css选择符的权重。新添class更利于维护。

    六、css sprite技术:将网站的多张背景图片合并到一张大图上。利用background-position属性来展示我们需要的部分

              图片加载会发出HTTP请求,而使用css sprite就减少了HTTP请求次数。减轻服务器压力。

              只能合并背景图片。对于横向和纵向都平铺的图片,不能使用css sprite,只能或横向,或纵向。排版要尽量紧凑。

              缺点:降低开发效率和增大维护难度,是否使用取决于网站流量。

    七、css常见问题:(1)编码风格:多行式可读性强,不过会增大css文件大小,一行式可读性较差,不过利于提高开发速度,减小css文件大小。推荐一行式。

             (2)id和class:同一网页,相同id只能出现一次,但是class无限制。id的权重大于class。不过原生JS提供getElementId()方法,不支持class。

                    使用id会限制网页的扩展性。一般情况下,建议尽量使用class,少用id。

             (3)css hack:IE条件注释法(兼容性最好,增加了开发和维护成本)

                     选择符前缀法(增强了可维护性,不过兼容性欠佳,不能用于内联样式)

                     样式属性前缀法(集合度更高,代码更加精简,可维护性更强,但存在兼容风险,可用于内联样式)

             (4)解决超链接访问后hover样式不出现的问题:a标签四种状态的排序问题,love hate原则,即l(link)ov(visited)e h(hover)a(active)te。

             (5)haslayout:IE浏览器的专有属性,用于css的解析引擎。很多bug都因为haslayout没有被自动触发。最好的解决方法:zoom。

             (6)块级元素和行内元素:使用display转换。

             (7)IE6、7不支持display:inline-block。

             (8)relative、absolute和float:不要滥用。

    【css预处理】

    用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。

  • 相关阅读:
    topcoder srm 320 div1
    topcoder srm 325 div1
    topcoder srm 330 div1
    topcoder srm 335 div1
    topcoder srm 340 div1
    topcoder srm 300 div1
    topcoder srm 305 div1
    topcoder srm 310 div1
    topcoder srm 315 div1
    如何统计iOS产品不同渠道的下载量?
  • 原文地址:https://www.cnblogs.com/wlfsmile/p/6002105.html
Copyright © 2011-2022 走看看