1、CSS语法

2、@规则

3、注释

4、层叠

5、优先级

6、继承

7、值

8、块格式化上下文

9、盒模型

10、层叠上下文

11、可替换元素

12、外边距合并

13、包含块

14、视觉格式化模型

15、布局模式

1、CSS语法

属性:property

值:value

CSS声明:property:value;

CSS声明块:{ property:value; }

CSS规则(CSS规则集):element{ property:value; }

2、@规则

@规则:一个CSS语句

  @charset:定义样式表使用的字符集

  @import:告诉CSS引擎引入一个外部样式表

  嵌套@规则:

    @media:如果满足媒介查询的条件则条件规则组里的规则生效

    @font-face:描述将下载的外部的字体

    @keyframes:描述CSS动画的中间步骤

@charset "utf-8"; /* @charset只能是样式表中的第一个元素,且前面不能有任何字符,如果有多个@charset被声明,只有第一个有效 */

@import url("global.css"); /* @import规则必须先于所有其他类型的规则,@charset规则除外 */
@import url(global.css);
@import "global.css";
/* IE6+ */ @import url(global.css);
/* IE8+ */ @import url(global.css) screen;
/* IE9+ */ @import url(global.css) screen and (max-width:1024px); /* IE9+ */ @media screen and (max-width:1024px){ }
/* IE9+ */ <link rel="stylesheet" href="global.css" media="screen and (max-width:1024px)"> @font-face {
font-family: 'iconfont';
src: url('iconfont.eot'); /* IE9 */
src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff') format('woff'), /* Chrome、Firefox */
url('iconfont.ttf') format('truetype'), /* Chrome、Firefox、Opera、Safari、Android、IOS 4.2+ */
url('iconfont.svg#iconfont') format('svg'); /* IOS 4.1- */
} @keyframes animate { /* IE10+ */
from {
width:;
margin-left:;
}
to {
width: 100%;
margin-left: 100%;
}
}

3、注释

/* 单行注释 */
/*
多行注释
注释无法嵌套,也就是说,一旦遇到第一个*/记号,就一定会结束注释
*/

4、层叠

层叠算法决定如何找出要应用到每个文档元素的每个属性上的值,层叠算法是先于优先级算法的

1  用户代理

2  用户代理  !important

3  用户

4  页面作者

5  CSS动画

6  页面作者  !important

7  用户    !important

5、优先级

通配选择器(*)、关系选择符(+、>、~、' ')、否定伪类:not()对优先级没有影响,但是在:not()内部声明的选择器会影响优先级

1  元素选择器、伪元素

2  类选择器、属性选择器、伪类

3  ID选择器

4  内联样式

5  !important

6、继承

当元素的一个继承属性没有指定值时,则取父元素的同属性的计算值,只有文档根元素取该属性的概述中给定的初始值

当元素的一个非继承属性没有指定值时,则取属性的初始值

7、值

初始值:默认值

指定值:赋值、继承值、初始值

计算值:通过指定值计算出来

    计算值所需要的计算通常包括将相对值转换成绝对值(em单位或百分比)

    对于有些属性,这些元素的百分比与需要布局确定后才能知道的值有关,它们的百分比值会转换成百分比的计算值

    (top、width、min-width、margin、padding、background-position、text-indent等)

使用值(应用值):计算值,或计算布局(尺寸比如auto或百分数换算为像素值)

实际值:应用值的近似值,例如,一个用户代理可能只能渲染一个整数像素值的边框(实际值)

解析值:对于大多数属性,它是计算值,但对于一些旧属性(包括宽度和高度),它是使用值

/*
width:auto; width:1920px; border-width:1.01px; font-size:2em;
初始值:auto auto medium medium
指定值:auto 1920px 1.01px 2em
计算值:auto 1920px 1.01px 32px
使用值:1920px 1920px 1.01px 32px
实际值:1920px 1920px 1px 32px
解析值:1920px 1920px 1.01px 32px
*/

8、块格式化上下文

布局过程中生成块级盒子的区域,浮动元素与其他元素的交互限定区域

浮动定位和清除浮动时只会应用于同一个BFC内的元素,浮动不会影响其它BFC中元素的布局,外边距折叠也只会发生在属于同一BFC的块级元素之间

1  根元素或包含根元素的元素

2  浮动元素

3  绝对定位元素

4  行内块元素

5  表格单元格(元素的display为table-cell)

6  表格标题(元素的display为table-caption)

7  匿名表格单元格元素(元素的display为table、table-row、table-row-group、table-header-group、table-footer-group、inline-table)

8  overflow值不为visible的块元素

9  弹性元素(display为flex或inline-flex元素的直接子元素)

10  网格元素(display为grid或inline-grid元素的直接子元素)

9、盒模型

当对一个文档进行布局时,浏览器渲染引擎会根据CSS-Box模型(CSS Basic Box model)将所有元素表示为一个矩形盒子(box),CSS决定这些盒子的大小,位置以及属性(颜色,背景,边框尺寸等)

对于非替换的行内元素来说,尽管内容周围存在内边距与边框,但其占用空间(行高)由line-height属性决定

1  内容区域content area

2  内边距区域padding area

3  边框区域border area

4  外边距区域margin area

10、层叠上下文

层叠上下文是HTML元素的三维概念

1  根元素

2  z-index值不为auto的绝对/相对定位

3  一个z-index值不为auto的flex项目,即:父元素display:flex|inline-flex

4  opacity属性值小于1的元素

5  transform属性值不为none的元素

6  position:fixed

11、可替换元素

可替换元素的展现不是由CSS来控制的,这些元素是一类外观渲染独立于CSS的外部对象

1  典型的可替换元素有img、object、video和表单元素,如textarea、input

2  某些元素只在一些特殊情况下表现为可替换元素,例如audio和canvas

3  通过CSS content属性来插入的对象被称作匿名可替换元素

4  一部分可替换元素,本身具有尺寸和基线(baseline),会被像vertical-align之类的一些CSS属性用到

12、外边距合并

块级元素的上外边距和下外边距有时会合并(或折叠)为一个外边距,其大小取其中的最大者,这种行为称为外边距折叠(外边距合并)

浮动元素和绝对定位元素的外边距不会折叠(因为这里触发了BFC,overflow值不为visible的块元素除外,其只会与子元素发生折叠)

如果参与折叠的外边距中包含负值,折叠后的外边距的值为最大的正边距与最小的负边距(即绝对值最大的负边距)的和

如果所有参与折叠的外边距都为负,折叠后的外边距的值为最小的负边距的值

1  相邻元素之间

2  父元素与其第一个或最后一个子元素之间:如果在父元素与其第一个子元素之间不存在边框、内边距、行内内容,也没有创建块格式化上下文、或者清除浮动将两者的margin-top分开,或者在父元素与其最后一个子元素之间不存在边框、内边距、行内内容、height、min-height、max-height将两者的margin-bottom分开,那么这两对外边距之间会产生折叠,此时子元素的外边距会溢出到父元素的外面

3  空的块级元素:如果一个块级元素中不包含任何内容,并且在其margin-top与margin-bottom之间没有边框、内边距、行内内容、height、min-height将两者分开,则该元素的上下外边距会折叠

13、包含块

元素的尺寸和位置受其包含块的影响,大多数情况下,包含块就是这个元素最近的祖先块元素的内容区

计算height、top、bottom中的百分值,是通过包含块的height的值,如果包含块的height值根据它的内容变化,且包含块的position属性的值为relative或static,那么,这些值的计算值为0

计算width、left、right、padding、margin这些属性由包含块的width属性的值来计算它的百分值

1  如果position属性为static或relative,包含块就是由它的最近的祖先块元素或格式化上下文的内容区的边缘组成的

2  如果position属性为absolute,包含块就是由它的最近的position的值不是static的祖先元素的内边距区的边缘组成

3  如果position属性为fixed,包含块就是由viewport组成的

4  如果position属性为absolute或fixed,包含块也可能是由满足以下条件的最近祖先元素的内边距区的边缘组成的:transform属性值不为none的元素

5  根元素所在的包含块是一个被称为初始包含块的矩形

14、视觉格式化模型

CSS视觉格式化模型是用来处理和在视觉媒体上显示文档时使用的计算规则,根据CSS盒子模型将文档中的元素转换为一个个盒子

1  块级元素:display为block、list-item、table

2  块级盒子:由块级元素生成,一个块级元素至少会生成一个块级盒子,但也有可能生成多个(列表项元素)

3  块容器盒子:有些块容器盒子也不是块级盒子(非替换行内块和非替换表格单元格)

4  块盒子:如果一个块级盒子同时也是一个块容器盒子,则称其为块盒子(表格和可替换元素之外的块级盒子)

5  匿名块盒子:CSS选择器不能作用于匿名盒子,所以它不能被样式表赋予样式,也就是说,此时所有可继承的CSS属性值都为inherit,而所有不可继承的CSS属性值都为initial

6  行内级元素:display为inline、inline-block、inline-table

7  行内级盒子:由行内级元素生成,分为行内盒子和原子行内级盒子

8  行内盒子:display:inline的非替换盒子

9  原子行内级盒子:display:inline的可替换盒子或display为inline-block、inline-table生成的盒子

15、布局模式

CSS布局模式,有时简称为布局,是一种基于盒子与其兄弟和祖辈盒子的交互方式来确定盒子的位置和大小的算法

1  块布局:用来布置文件

2  行内布局:用来布置文本

3  表格布局:用来布置表格

4  定位布局:用来对那些与其他元素无交互的定位元素进行布置

5  弹性盒子布局:用来布置那些可以顺利调整大小的复杂页面

6  网格布局:用来布置那些与一个固定网格相关的元素

CSS概念【记录】的更多相关文章

  1. HTML与CSS学习记录

    title: HTML与CSS学习记录 toc: true date: 2018-09-10 14:04:59 <HTML与CSS进阶教程读书笔记> HTML基础知识 HTML与XHTML ...

  2. CSS概念 - 可视化格式模型(一) 盒模型与外边距叠加

    可以参考<精通CSS 高级WEB标准解决方案>第三章. 可视化格式模型 可视化格式模型要掌握的3个最重要的CSS概念是 浮动.定位.盒模型. 这些概念控制在页面上安排和显示元素的方式, 形 ...

  3. pure.css 学习记录

    兼容性记录: IE 8+ Latest Stable: Firefox, Chrome, Safari iOS 6-8 Android 4.x 处理兼容性 <!--[if lte IE 8]&g ...

  4. CSS概念,引入,选择器

    概念 层叠样式表,定义如何显示HTML元素. 使用方式 行内样式 不推荐使用此方式 结构 和 样式的 杂糅会影响后期的维护 <p style="color: red"> ...

  5. css布局记录之双飞翼布局、圣杯布局

    双飞翼布局和圣杯布局是比较常用的布局方式,都是为了实现一行三列,并且两侧列固定宽度,中间列宽度自适应的效果:直接上代码记录下: <!DOCTYPE html> <html lang= ...

  6. CSS概念 - 可视化格式模型(二) 定位概述(普通流、绝对定位)

    2.定位概念 上一节熟悉了盒模型, 现在来看一下可视化格式模型和定位模型. 理解这两个模型的细微差异是非常重要的, 因为它们一起控制着如何在页面上布置每个元素 2.1 可视化格式模型 CSS有三种基本 ...

  7. RAID概念记录

    之前对RAID概念有一些基本的认知,这次同事培训k8s 的持久卷,提到了RAID的一些概念和用法,记录一下. RAID ( Redundant Array of Independent Disks ) ...

  8. vue等诸多概念记录

    讲的很好,转载记录下,转载自: https://www.cnblogs.com/taowd/p/11808710.html vue学习笔记-遗留问题记录 Node.js是什么?对node.js的理解 ...

  9. CSS字体记录

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaYAAACnCAIAAADVOG9FAAAgAElEQVR4nOy9eXwcxZk/vL/9ve8eb7 ...

随机推荐

  1. Kali学习笔记11:僵尸扫描案例

    什么是僵尸扫描?本质也是端口扫描,不过是一种极其隐蔽的扫描方式 所以几乎不会被发现,不过也有着很大缺陷:扫描条件很高 首先需要有一台僵尸机,这里我找好一台win10僵尸机器,IP地址为:10.14.4 ...

  2. 使用yeoman搭建脚手架并发布到npm

    前言 最近主要在写前端的模板类项目,由于其中的webpack配置和引进数据注入ejs模板的方法大同小异,所以萌发出把该模板框架提取出来作为一个常用的脚手架,也方便以后同事可以进行复用. 之前在看< ...

  3. 常用浏览器内核!IE,Chrome ,Firefox,Safari,Opera 等内核

    常用浏览器内核: IE内核为:trident: Chrome内核为:blink(基于webkit,谷歌与Opera software共同开发): Firefox内核为:gecko: Safari内核为 ...

  4. 一文搞懂 Java 线程中断

    在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分 ...

  5. odoo开发笔记 -- many2one搜索更多增加默认过滤条件

    没加过滤条件的时候,效果如下,点击下拉框,搜索更多出现所有模型下的模板: 改进方法(增加默认过滤条件,显示指定模型下的内容): class IrCloudReport(models.Model): _ ...

  6. 项目总结二:人脸识别项目(Face Recognition for the Happy House)

    一.人脸验证问题(face verification)与人脸识别问题(face recognition) 1.人脸验证问题(face verification):           输入       ...

  7. SQL中的Join和Where的区别

    一.sql语句中left join.inner join中的on与where的区别 0.各种join操作的概念和作用 left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. ...

  8. Android--多线程之AsyncTask

    前言 本片博客将介绍AsyncTask的使用,之前有介绍过线程和进程.而在AsyncTask中,运行在用户界面中,执行异步操作,并且把执行结果发布在UI线程上,且也不需要处理线程和Handler.在本 ...

  9. 《HelloGitHub月刊》第 02 期

    <HelloGithub>第02期 兴趣是最好的老师,而<HelloGitHub> 就是帮你找到兴趣! 因为我比较熟悉python语言,所以月刊中python语言的项目居多,个 ...

  10. Netty实现简单HTTP代理服务器

    自上次使用Openresty+Lua+Nginx的来加速自己的网站,用上了比较时髦的技术,感觉算是让自己的网站响应速度达到极限了,直到看到了Netty,公司就是打算用Netty来替代Openresty ...