CSS整理

CSS

 

1、

域名——>DNS——>ip地址——>服务器客户端握手交互——>传输数据

客户端浏览器获取一行显示一行的执行,遇到外链文件,比如.css,开启新的线程,同时(即异步)执行

 

2、

单选择器权重顺序

!important 权重 Infinity

——>行间样式style 权重 1000

——>id选择器 权重 100

——>class||属性||伪类 选择器 权重 10

——>标签选择器||伪元素 权重 1

——>通配符选择器 权重 0

权重的值是 256进制的(0到1之间差 256)

 

组合选择器——层级各权重相加

  • 父子选择器(又叫派生选择器)
  • 直接子元素选择器 div > div
  • 并列选择器 div.class
  • 分组选择器 div, span, p

 

3、

组合选择器 例如 div ul li span em,在DOC树中怎么个顺序遍历效率最高?

浏览器的一个内核原理就是,从右向左寻找是最快的。

 

4、

字体家族有(font-size font-weight font-style font-family color)

行块水平对齐方式有(text-align: left || right || center)垂直对齐方式有(line-height flex弹性布局)

font-size:50px 其实调整的是字体的高度

font-weight:light || normal || bold || boider 能不能看出效果,跟浏览器当前使用的字体包是否包含这么多的样式有关

 

5、

边框家族(border-width border-style border-dashed border-left border-right border-top border-bottom)

小三角形 css实现原理 下面是利用border实现的4个小三角形(刚好是一个正方形的对角线分割)

div{

width: 0;

height: 0;

border: 100px solid blank;

border-left-color: green;

border-top-color: red;

border-right-color: gray;

}

  • 获得一个三角形,只需要把其它三个的颜色变成透明色(transparent)CSS专有的透明值

 

6、

text-indent: 2em 文本缩进

像素px也是一种相对单位,1em = 1* font-size

 

7、

行极元素 inline(span a )

  • 内容决定元素所占位置,不可以改变宽高

块级元素 block (div p ul li )

  • 独占一行,可以通过css改变宽高

行级块元素 inline-block(img)

  • 内容决定大小,可以改变宽高

凡是带有inline属性的元素,都有文字特性(文字分隔符 天生的4像素)

行级元素只能嵌套行级元素

块级元素可以嵌套任何元素

但是有两个特立独行:

P标签是块级元素,但是规定它独立,不能嵌套块级元素,否则被块级元素分割成前后两组p元素

a标签里面不能嵌套a标签

 

8、

大公司流程化开发都会先封装好一些相关功能,而不用每个新人都重新写一套代码

先写class的css,再导入html引用相关功能代码的class

比如初始化标签

body有个天生的8像素 margin:8px

a{text-decoration: none /*初始化去掉下划线,以后再用就可以直接使用*/}

ul{list-style:none;padding:0;margin:0;/*同理*/}

通配符初始化

*{

padding:0;

margin:0;

text-decoration: none;

list-style:none;

}

 

9、

盒模型: 内容宽高 + 内边距 + 边框 + 外边距

层模型:当一个元素成为绝对定位的时候,就会脱离文档流,独立一层,互不干扰,因此,后面的元素可能会产生回流和重绘的情况

比如

  • absolute脱离原来位置进行定位,相对于最近的有定位的父级定位,如果没有就相对于文档进行定位
  • relative保留原来位置进行定位
  • fixed固定定位,相对于浏览器的可视区定位,以不变应万变

 

10

BFC(margin塌陷和margin合并)

margin塌陷:父子结构的元素,垂直方向的margin会共同选择最大的值

解决方式:

①父级元素加border

②让父级变成BFC块,加上overflow:hidden; || display:inline-block || position: absolute

margin合并:正常来说,元素占有区域不共用。但是兄弟结构的元素会出现margin区域共用的情况

解决方式:

①各个元素分别添加一个相同父元素,让问题转化为累加,但是这不应该应为bug增加无用的元素

②不解决是最好的解决方式,根据它的特性设置margin值

 

11、

float引发的问题

①浮动元素产生了浮动流,

②父子结构的元素,子元素使用float后,父级包不住的问题

原因如下

  • 所有产生了浮动流的元素,块级元素看不到他们
  • 产生了bfc的元素和文本类属性的元素以及文本都能看到浮动元素

 

根据以上原因可以有解决方式:

  • 清除周边的浮动流可以添加clear:both 这个一定要用在父级且是块级元素才起作用
  • 让块级元素变成bfc
  • (不选)在子元素最后边添加一个无用的元素并给它设置clear:both
  • (优选)利用伪元素::after添加clear:both,并修改这个伪元素为块级元素display:block

 

凡是元素使用了position:absolute float:left || right ,

浏览器内部会自动将元素转换为inline-block

 

12、

文字溢出处理

①单行文本

text-overflow:ellipsis (三点省略号)

②多行文本

overflow:hidden 再配合一个伪元素::after{content:"..."}

 

13、背景图片处理

background-image:url(../..xxx.jpg)

background-size: 宽 高

background-position:50% 50%;(背景图片居中)

 

14、企业开发经验

没有加载CSS文件的时候,功能依然正常。

比如无法加载图片的时候,显示文字

 

15、

浏览器的一个特性,书本学不到的

行内块级元素内外都包含文字,外面的文字会根据里面的文字底对齐,vertical-align: 数值||middle可以调整外面的字的垂直方向上的位置