CSS 样式层与 渲染引擎 联想

一、CSS 样式层联想

1、IE低版本的非著名兼容问题

  1、并非不支持Display: inline-block;

  CSS2.1版本中对于inline-block的样式定位为:使元素生成一个行内级别的包含块,其内部按块级可以设置宽高,自身按行内框来计算布局。

  

  IE 5.5、6、7 、8(Q)几个低版本IE浏览器中支持inline-block,与CSS2.1版本的规范效果有所差异,准确的说是支持的并不完整。

  低版本IE中 inline 元素被设置为 inline-block 的效果只需直接设置此属性值或使用 zoom:1 等触发hasLayout属性均可。

  block 元素对 inline-block 支持不完整,如果要达到类似的效果,需要先设置为 display:inline,然后使用 zoom:1 等触发hasLayout属性。

  于是便有了兼容性的代码:

Display: inline-block;

*display: inline;

*zoom: 1;

  2、position定位中的z-index问题

    在IE浏览器中,定位元素的z-index层级是相对于各自的父级容器,所以会导致z-index出现错误的表现。

    解决方法是给其父级元素定义z-index,有些情况下还需要定义position:relative。

2、清晰的html,js, css分层

  常将网页分为结构层,表现层,和行为层,将html、js、css分开管理。不仔细想,三者的界限是有一些模糊的。

  在浏览器渲染页面的过程中,html可以生成DOM树,js可以被引擎执行,css也可以生成CSSOM(css object model)树。DOM 和 CSSOM 结合生成渲染树。

  “块级元素有div、ul、p等,内联元素有a、span、input等”,这些元素的盒模型都是CSS样式范围定义的,来自于浏览器的默认样式设定。

3、盒模型的种类

  <p>这是一行普通的文字,这里有个 <em>em</em> 标签。</p>

  这段HTML代码涉及到4种boxes:

    1、首先是p标签所在的containing box,此box包含了其他的boxes;(块级盒)

    2、然后就是inline boxes,如下图标注,(行内框)

    

    inline boxes不会让内容成块显示,而是排成一行,如果外部含inline属性的标签(span,a等),就属inline boxes,如果是个光秃秃的文字,则属于匿名inline boxes。

    3、line boxes,见下图的标注:

      

      在containing boxes里,每行一个一个的inline boxes组成了line boxes。(行框)

    4、content area,见下图标注:

      

      content area 是一种围绕文字看不见的box。content area的大小与font-size大小相关。

     content
area 围绕着文字的一种box,高度由font-size和font-family决定。在chrome控制器里,你用鼠标志向某个内联元素,显示的高度值。

4、Inline盒模型的高度得来

  line box模型,对应样式为”line-height”。(图片也属于inline boxes,但其height比line-height作用更凶猛,故其inline boxes高度等于其自身高度,对line-height无反应),inline boxes的高度直接受line-height控制(改变line-height文字拉开或重叠就是这个原因),而真正的高度表现则是由每行众多的inline boxes组成的line boxes(等于内部最高的inline box的高度),而这些line boxes的高度垂直堆叠形成了containing box的高度,也就是我们见到的div或是p标签之类的高度了。

  inline box的高度由line-height决定,一半的line-height在content area的上面,另一半在下面。line-height从content area的水平中垂线开始计算。

5、Vertical-align属性的应用

  垂直对齐的几个值:top,middle,baseline,bottom。

  

6、IE浏览器Haslayout属性

  layout是IE/WIN里面的私有概念,它决定了一个元素如何显示以及约束其包含的内容、如何和其他元素进行相互作用和联系、如何响应和传递应用程序事件、用户事件等;

7、浏览器的BFC模型

  相对于IE的hasLayout,W3C规范中有一个BFC概念。

  BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

二、Webkit渲染引擎

1、页面样式css的来源

  1、  网页开发者编写的 2、读者设置的样式 3、浏览器的内置默认样式。使用的优先级递减。

  在开发过程中可能存在大量不必要,多余的css reset代码,是可以被省去的。

2、页面渲染中的包含块模型

  当webkit计算元素的盒子的位置和大小时,它需要计算该元素和另一个矩形区域的相对位置,这个矩形区域被称为元素的包含块。

    --根元素的包含块称为初始包含块,大小就是可视区域(viewport)

    --position属性为static或者relative的元素,它们的包含块就是最近祖先的盒模型的内容区域。

    --position属性为fixed,那么该元素的包含块脱离HTML文档,固定在可视区域的特定位置。

    --position 属性为absolute,由最近的含有属性为absolute、relative、或者fiexd的祖先决定。

3、移动端的三个视口viewport

  移动端可以分为视觉视口,布局视口和理想视口。通过meta便签,媒体查询,js接口可以获取或设置。是响应式涉及到基础。

4、布局计算中的定位方案

  由position和float属性设置,有三种定位方案:

  1、static、relative普通:根据对象在文档中的位置进行定位,也就是说对象在呈现树中的位置和它在 DOM 树中的位置相似,并根据其框类型和尺寸进行布局,其他框会浮动在它的周围。

  2、float浮动:对象先按照普通流进行布局,然后尽可能地向左或向右移动。

  3、absolute、fixed绝对:脱离文档流对象在呈现树中的位置和它在 DOM 树中的位置不同。元素不参与普通流。尺寸是相对于容器而言的。在固定定位中,容器就是可视区域。

  float: left、right、none、inherit

  position:absolute、 fixed、 relative、 static、 inherit

5、CSS选择器的解析

  选择器解析一般从右向左进行,太长的样式嵌套,会损失性能。

原文地址:https://www.cnblogs.com/banyue/p/8687496.html

时间: 2024-10-18 13:14:13

CSS 样式层与 渲染引擎 联想的相关文章

html定义好的css样式不能被渲染

预期效果 实际效果,在浏览器中打开该html文件时,浏览器只显示左箭头,不显示右箭头 html代码如下 <!DOCTYPE html><html> <head>  <meta charset="utf-8">  <style type="text/css">   *{margin:0;padding:0;}   #container    {     width:600px;     height: 400

浏览器渲染引擎,提高css渲染速度。

一.渲染引擎渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上.默认情况下渲染引擎可以显示HTML,XML文档以及图片. 通过插件(浏览器扩展)它可以显示其它类型文档. 二.各种渲染引擎我们提到的Firefox, Safari两种浏览器构建于两种渲染引擎之上:Firefox使用Gecko —— Mozilla自家的渲染引擎:Safari 和 Chrome 都使用 Webkit. 最终决定浏览器表现出来的页面效果的差异是:渲染引擎 Rendering Engine(也叫做排版引擎),也

当css样式表遇到层

(附:White-space:pre可以是样式表里卖弄body的属性,作用是保持html源代码的空格与换行,等同<pre>标签.) Css样式表可以通过被封在层里的方式来限制页面所修饰的内容.这就是说,为了使样式表只对页面局部起修饰作用,设计者可以将页面的局部内容定义在某个范围之内,这个范围变称为CSS-layer(css层)css层可以通过HTML标签来定义,这种使用方法是web设计中的一枚利器. 1.行<span>和层<div>设计者常常把css样式表放在<s

Django系列之form渲染表单后css样式丢失

最通用的form写法 我们经常看各大网站上写这样的form写法 class SYSAdminPhysicalForm(forms.ModelForm): ''' this form for idc's admin ''' class Meta: model = models.Machinepro exclude = ["m_inside_ip","m_outside_ip","order"] business_unit = forms.CharF

渲染引擎,HTML解析

这是how browser to work 的翻译 转自:携程设计委员会 渲染引擎 渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上. 默认情况下渲染引擎可以显示HTML,XML文档以及图片. 通过插件(浏览器扩展)它可以显示其它类型文档.比如使用PDF viewer插件显示PDF文件.我们会在一个专门的章节讨论插件与扩展.在这一节我们将专注渲染引擎的主要用途——显示用CSS格式化的HTML与图片. 各种渲染引擎 我们提到的Firefox, Safari两种浏览器构建于两种渲染引擎

浏览器渲染引擎总结

一.主要模块 1.HTML解析器 解析HTML文本的解析器,主要作用是将HTML代码解析成DOM树 2.CSS解析器 级联样式表的解析器,主要作用是为DOM中的各个元素对象计算出样式信息, 从而为计算最后网页的布局提供基础设施 3.Javascript引擎 解析执行javascript脚本,使用javascript代码可以修改网页的内容, 也能修改css的信息.即javascript可以通过DOM,CSSDOM接口来修改 网页内容和样式信息,从而改变渲染结果 4.布局 在DOM树创建完成之后,渲

了解浏览器如何工作—渲染引擎1

从基础架构上我们也可以看到浏览器的重头戏其实在于渲染引擎(又称排版引擎),很多页面兼容性问题的根源可以说也皆来源于此.好了,那我们深入到渲染引擎内部仔细看一下吧 从基础架构上我们也可以看到浏览器的重头戏其实在于渲染引擎(又称排版引擎),很多页面兼容性问题的根源可以说也皆来源于此.360浏览器HTML5跑分再高(http://html5test.com/),UI与交互再怎么不一样,内核还是一样的.好了,那我们深入到渲染引擎内部仔细看一下吧. 渲染引擎(the rendering engine)简述

浏览器渲染引擎工作原理

浏览器内核包括渲染引擎和JS引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具.它负责取得网页的内容(HTML.XML.图象等等).整理信息(例如加入CSS等),以及计算网页的显示方式然后会输出至显示器或打印机 渲染引擎工作流程 HTML解析器解析DOMM树(解析为DOM树上个节点,同时解析CSS样式) 渲染树结构(具有一定的视觉效果,并按照一定顺序排列在屏幕上) 布局渲染树(为每个节点分配固定坐标) 绘制DOM树(渲染引擎会遍历

浏览器是怎样工作的:渲染引擎,HTML解析

渲染引擎 渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上. 默认情况下渲染引擎可以显示HTML,XML文档以及图片. 通过插件(浏览器扩展)它可以显示其它类型文档.比如使用PDF viewer插件显示PDF文件.我们会在一个专门的章节讨论插件与扩展.在这一节我们将专注渲染引擎的主要用途——显示用CSS格式化的HTML与图片. 各种渲染引擎 我们提到的Firefox, Safari两种浏览器构建于两种渲染引擎之上:Firefox使用Gecko —— Mozilla自家的渲染引擎:S