HTML5技术

深入CSS,让网页开发少点“坑” - 葡萄城控件技术团队

字号+ 作者:H5之家 来源:博客园 2015-12-04 08:05 我要评论( )

通常我们在学习CSS的时候,感觉很容易掌握,却常常在实际应用中碰到各式各样难以填补的坑,为避免大家受到同样的困惑与不解,本文详细讲解了CSS中优先级和Stacking Context等诸多高级特性。让你更加深入的了解CSS。 CSS 优先级 优先级是浏览器是通过判断哪些

 

image

 通常我们在学习CSS的时候,感觉很容易掌握,却常常在实际应用中碰到各式各样难以填补的“坑”,为避免大家受到同样的困惑与不解,本文详细讲解了CSS中优先级和Stacking Context等诸多高级特性。让你更加深入的了解CSS。

CSS 优先级

优先级是浏览器是通过判断哪些属性值与元素最相关以决定并应用到该元素上的。优先级仅由选择器组成的匹配规则决定的。如果给一个P标签增加一个类(Class),运行后Class 中的部分属性并未发生改变,及CSS选择器存在优先级问题。

选择符优先级

常见的选择器种类:

每一类选择器的权值不相同,各选择器的优先级是由权值决定的,

 

image

 来源优先级顺序,如图所示

image

image

样式系统从最右边的选择符开始向左进行匹配规则。只要当前选择符的左边还有其他选择符,样式系统就会继续向左移动,直到找到和规则匹配的元素,或者因为不匹配而退出。

CSS 优先级法则:

CSS常用模型

 盒子模型(Box Model)就是在网页设计中经常用到的CSS技术所使用的一种思维模型。

image

盒子模型相关CSS属性元素内容(element content)、宽度及高度(Width/Height)、内边距(padding)、边框(border) 和 外边距(margin) 。

在 CSS 中,width 和 height 指的是内容区域(element)的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。假设框的每个边上有 10 个像素的外边距和 5 个像素的内边距。如果希望这个元素框达到 100 个像素,就需要将内容的宽度设置为 70 像素。需要的属性如下:

 

基本属性

  • 偏移量属性
  • Top/Left/Bottom/Right
  • 和.NET WinForm的区别:
  • 默认情况下Width/Height不包含Padding
  • Margin/Padding属性的四个值的顺序是top right bottom left (顺时针)
  •  

     所有东西可视为盒子模型

    image

     

    纵向Margin合并

    如果<p>的纵向margin是12px,那么两个<p>之间纵向的距离是多少?按常理来说应该是 12 + 12= 24px,但是答案仍然是 12px。因为纵向的margin是会重叠的,大的会覆盖下的。

    image

     

    Position属性规定元素的定位类型。这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。以下是Posistion属性取值范围如下:

     

    image

    Float属性

    float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

    image

     

    Stacking context

    提供z-index栈空间特性并影响子元素渲染顺序的结构,称之为stacking context。

    image

     

    浏览器会给符合下面规则的dom元素分配一个Stacking context。

    z-index

    image

     

    Stacking order

     

    image

     

    性能

    image

     

    像素渲染流水线

    提升性能需要在构造流水线中每个元素都需要注意:

  • Style
  • 降低样式选择器的复杂度
  • 减少需要执行样式计算的元素的个数
  • Layout
  • 尽可能避免触发布局
  • Paint
  • CSS 选择器性能

     

     

     原文链接:#/5

     

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

      【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

      2017-04-30 16:00

    • 在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

      在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

      2017-04-28 15:00

    • 网页适应所有屏幕宽度 - 侧耳倾听一场梦

      网页适应所有屏幕宽度 - 侧耳倾听一场梦

      2017-04-22 10:00

    • 随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 - 在路在的张

      随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 -

      2017-04-22 08:04

    网友点评
    n