css+html 笔记1

a 链接

  • a链接的四种状态
    • link:连接平常的状态
    • visited:连接被访问过之后
    • hover:鼠标放到连接上的时候
    • active:连接被按下的时候
  • 顺序:a:link、a:visited、a:hover、a:active

  • 注意:a:hover定义一定要放在a:link、a:visited的后面

  • :focus -> :hover -> :active

前端分为哪三层?其作用分别是什么?

  • 结构层
    • HTML 结构层用于存储客户想要阅读或查看的所有内容。
  • 表示层
    • CSS 表示层指示结构化HTML文档如何看待网站的访问者,并由CSS(层叠样式表)定义。网站的所有视觉样式都应位于外部样式表中。
  • 行为层
    • JavaScript 行为层使网站具有交互性,允许页面响应用户操作或基于一组条件进行更改。

网站重构

在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。也就是说是在不改 变UI的情况下,对网站进行优化,在扩展的同时保持一致的UI。

  • 对于传统的网站来说重构通常是: 表格(table)布局改为DIV+CSS 使网站前端兼容于现代浏览器(针对于不合规范的 CSS、如对IE6有效的) 对于移动平台的优化 针对于SEO进行优化
  • 深层次的网站重构应该考虑的方面 减少代码间的耦合 让代码保持弹性 严格按规范编写代码 设计可扩展的API 代替旧 有的框架、语言(如VB) 增强用户体验
  • 通常来说对于速度的优化也包含在重构中 压缩JS、CSS、image等前端资源(通常是由服务器来解决) 程序的性能优化 (如数据读写) 采用CDN来加速资源加载 对于JS DOM的优化 HTTP服务器的文件缓存

box-sizing

  • content-box,默认值,只计算内容的宽度,border和padding不计算入width之内
  • padding-box,padding计算入宽度内
  • border-box,border和padding计算入宽度之内

清除浮动的方法

  • 给父级div定义高度 (不推荐使用)
    • 原理:给父级DIV定义固定高度(height),能解决父级DIV 无法获取高度得问题。
    • 优点:代码简洁
    • 缺点:高度被固定死了,是适合内容固定不变的模块。
  • 使用空元素,如
    (.clear{clear:both}) (不推荐使用)
    • 原理:添加一对空的DIV标签,利用css的clear:both属性清除浮动,让父级DIV能够获取高度。
    • 优点:浏览器支持好
    • 缺点:多出了很多空的DIV标签,如果页面中浮动模块多的话,就会出现很多的空置DIV了,这样感觉视乎不是太令人满意。
  • 让父级div也一并浮起来这样做可以初步解决当前的浮动问题。但是也让父级浮动起来了,又会产生新的浮动问题。 (不推荐使用)
  • 父级div定义 display:table (不推荐使用)
    • 原理:将div属性强制变成表格
    • 优点:不解
    • 缺点:会产生新的未知问题。
  • 父元素设置 overflow:hidden、auto; (亦不太推荐使用)
    • 原理:这个方法的关键在于触发了BFC(块级格式化上下文)。在IE6中还需要触发 hasLayout(zoom:1)
    • 优点:代码简介,不存在结构和语义化问题;
    • 缺点:无法显示需要溢出的元素
  • 父级div定义 伪类:after 和 zoom;
    • 原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
    • 优点:结构和语义化完全正确,代码量也适中,可重复利用率(建议定义公共类)
    • 缺点:代码不是非常简洁(极力推荐使用)
      .clearfix:after{
          content:'.';
          display:block;
          height:0;
          clear:both;
          visibility: hidden;
      }
      .clearfix {zoom:1;}
    //  精益求精写法
    .clearfix:after {
        content:”\200B”; 
        display:block; 
        height:0; 
        clear:both;
     }
    .clearfix { *zoom:1; } 照顾IE6,IE7就可以了
    

CSS隐藏元素的几种方式及区别

  • display:none
    • 元素在页面上将彻底消失,元素本来占有的空间就会被其他元素占有,也就是说它会导致浏览器的重排和重绘。
    • 不会触发其点击事件
  • visibility:hidden
    • 和display:none的区别在于,元素在页面消失后,其占据的空间依旧会保留着,所以它只会导致浏览器重绘而不会重排。
    • 无法触发其点击事件
    • 适用于那些元素隐藏后不希望页面布局会发生变化的场景
  • opacity:0
    • 将元素的透明度设置为0后,在我们用户眼中,元素也是隐藏的,这算是一种隐藏元素的方法。
    • 和visibility:hidden的一个共同点是元素隐藏后依旧占据着空间,但我们都知道,设置透明度为0后,元素只是隐身了,它依旧存在页面中。
    • 可以触发点击事件
  • 设置height,width等盒模型属性为0
    • 简单说就是将元素的margin,border,padding,height和width等影响元素盒模型的属性设置成0,如果元素内有子元素或内容,还应该设置其overflow:hidden来隐藏其子元素。
    • 如果元素设置了border,padding等属性不为0,很显然,页面上还是能看到这个元素的,触发元素的点击事件完全没有问题。如果全部属性都设置为0,很显然,这个元素相当于消失了,即无法触发点击事件。
    • 这种方式既不实用,也可能存在着着一些问题。但平时我们用到的一些页面效果可能就是采用这种方式来完成的,比如jquery的slideUp动画,它就是设置元素的overflow:hidden后,接着通过定时器,不断地设置元素的height,margin-top,margin-bottom,border-top,border-bottom,padding-top,padding-bottom为0,从而达到slideUp的效果。

你可能感兴趣的:(css,前端)