2020-05-24

日常知识点总结(CSS篇):

1、弹性盒子布局:

对于弹性盒子布局的容器,使用“display:flex”声明使用弹性盒布局。css属性声明“flex-direction”用来确定主轴的方向,从而确定基本的条目排列方式。

flex-direction:  // 排列方式row 横向排列

                  row-reverse    //横向反向排列

justify-content: //子元素水平排列的方式

                center  //居中

                space-between  //两端对齐

                space-around  // 子元素拉手分布

                flex-start    // 居左

                flex-end      //居右

flex-wrap: //子元素是否在一行显示

                no-wrap  //不换行

                wrap    //换行

flex-flow属性把“flex-direction”和“flex-wrap”结合起来,如:flex-flow:row wrap;

align-items:  // 子元素的垂直居中的排列方式

                center    // 居中

                flex-end  //底部

                flex-start  //开始

align-content :  //多行的时候,子元素的垂直排列方式

                  center    //居中

                  flex-end  //底部

                  flex-start  //开始


2、过渡与动画:

区别:1)动画(animation)不需要事件触发,过渡(transition)需要事件触发。

          2)过渡只有一组(两个:开始---结束)关键帧,动画可以设置多个。

过渡(transition)语法:

transition:property(设置过渡的属性) duration(过渡持续的时间) timing-function(过渡效果的速度变化)  delay(延迟执行时间);

动画(animation)语法:

animation:name(绑定的动画名称) duration(动画持续时间) timing-function(动画的速度变化) delay(延迟执行时间) iteration-count(动画的播放次数) direction(动画的运动方向);


3、移动端响应式布局开发的几大方案:

1)根据不同的分辨率,加载不同的CSS样式文件(可切换的固定布局),自适应布局

2)媒体查询,@media="(max-width: 800px)"

缺点:如果在浏览器大小改变时,需要改变的样式太多,那么多套样式代码会很繁琐。

3)rem布局,移动端

rem是指相对于根元素(html)font-size计算值的倍数,是一个相对单位,相对根元素字体大小的倍数,宽高同样也可使用。如,html的font-size:12px;那么使用rem作为单位的,1rem=12px

em相对于当前对象内文本的字体尺寸。如当前未设置,则相对于浏览器的默认字体尺寸。em的值并不是固定的;em会继承父级元素的字体大小。

4)vw/vh  viewport可视窗口,也就是浏览器

vw  viewport宽度,1vw == viewport宽度的1%

vh viewport高度,1vh == viewport高度的1%

4、PSD 保存图片快捷键:

ctrl+alt+D-----鼠标左键点击显示,选中图层

ctrl+A-----选取整个区域

ctrl+shift+C-----复制图片和尺寸

ctrl+N-----新建文件

ctrl+V---粘贴图层

ctrl+shift+alt+S-----保存图片的命令,另存为PNG格式

ctrl+K-----可以修改单位尺寸

5、简介重绘与回流,以及如何优化

重绘:当元素样式的改变不影响布局时,浏览器将使用重绘对元素进行更新,此时由于只需要UI层面的重新像素绘制,因此损失较少。

回流:当元素的尺寸,结构或触发某些属性时,浏览器会重新渲染页面,称为回流。此时,浏览器需要重新经过计算,计算后还需要重新页面布局,因此是较重的操作。

触发回流:

1)页面初次渲染

2)浏览器窗口大小改变

3)元素尺寸,位置,内容发生改变

4)元素字体大小变化

5)添加或者删除可见的dom元素

6)激活CSS伪类(例如:hover)

回流必定触发重绘,重绘不一定触发回流。重绘的开销较小,回流的代价较高。

优化点:

1)避免频繁操作样式,可汇总后统一一次修改

2)尽量使用class进行样式修改,而不是直接操作样式

3)减少DOM的操作,可使用字符串一次性插入

6、优雅降级和渐进增强:

优雅降级,一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用css3的特性构建了一个应用,然后逐步针对各大浏览器进行hack使其可以在低版本浏览器上正常浏览。

渐进增强,一开始就针对低版本浏览器进行构建页面,完成基本功能,然后再针对高级浏览器进行效果,交互,追加功能达到更好的体验。

7、前端如何优化网站性能

1)减少http请求数量

CSS  Sprites(俗称CSS精灵),就是将多张图片合并成一张图片达到减少http请求的一种方案,可以通过CSS的background属性来访问图片内容。

合并CSS和JS文件,打包工具,如:grunt/gulp/webpack等。为了减少http请求数量,可以通过这些工具再发布前将多个CSS或者多个JS合并成一个文件。

采用lazyLoad,俗称懒加载。控制网页上的内容在一开始无需架加载,不需要发请求,等到用户操作真正需要的时候立即加载出内容。这样就控制了网页资源一次性请求数量。

2)控制资源文件加载优先级

浏览器在加载HTML内容时,是将HTML内容从上至下一次解析,解析到link或者script标签就会加载href或者src对应连接内容,为了第一时间展示页面给用户,就需要将CSS提前加载,不要受JS加载影响。一般情况都是CSS在头部,JS在底部。

3)利用浏览器缓存

浏览器缓存是将网络资源存储在本地,等待下次请求该资源时,如果资源已经存在就不需要到服务器重新请求该资源,直接在本地读取该资源。

4)减少重排

重排时DOM的变化影响到了元素的几何属性(宽和高),浏览器会重新计算元素的几何属性,会使渲染树中受到影响的部分失效,浏览器会验证DOM树上的所有其他节点的visibility属性,这也是Reflow低效的原因。如果Reflow的过于频繁,CPU使用率就会急剧上升。

减少Reflow,如果需要在DOM操作时添加样式,尽量使用增加class属性,而不是通过style操作样式。

5)减少DOM操作

6)图标使用Icon Font替换,iconfont 技术的主要是将图标转化为字体来减少应用体积。如需在项目中使用iconfont技术,图标矢量图一开始都应合并转化为字体库。优点:减小体积,字体文件比图片要小;方便更改颜色大小,图片复用。 缺点:需要维护字体库;只适用于纯色的icon

8、常见兼容性问题:

1)不同的浏览器的标签默认的内外边距不同。解决方案:*(通配符){padding:0;margin:0}

2)IE9以下的浏览器不能使用opacity。解决方案:filter:alpha(opacity = 50)

3)cursor: hand  显示手型在safari上不支持。解决方案:cursor:pointer

4)两个块级元素,父元素设置了overflow:auto;子元素设置了position:relative;并且高度大于父元素,在IE6/7会被隐藏而不是溢出。解决方案:父级元素设置position:relative;

9、BFC:块级格式化上下文

触发条件:display:inline-block/table

float:left/right

overflow:hidden

positiion:absoluted/fixed

IE下:zoom:1

应用场景:

1)解决浮动元素父元素高度坍塌

2)组织margin重叠

3)避免元素被浮动元素覆盖

4)自适应两列布局

10、选择器优先级:!import > 行内 > id > class > tag > 继承

11、link 和 @import区别:

link可以用来引入其他文件,rss等,@import只能引入css

link可以用js动态加载,@import不行

link引入的css可以和页面同时加载,@import需要等页面加载完再加载css

12、css预处理器(sass/less)

css预处理器的原理:是将类css语言通过webpack编译转成浏览器器可读的真正css。在这层编译之上,便可以赋予css更多更强大的功能。

1)变量使用

2)嵌套

3)标识符&

4)群组嵌套

5)混合器

6)继承

混合器会导致属性重复,css体积大,继承只继承css规则,不继承重复属性

13、关于CSS3中盒模型:

标准盒子模型:

box-sizing: content-box(标准盒模型)

内容宽度 = width

盒子宽高 = 内容宽高 + padding + border

IE盒模型:

box-sizing: border-box(IE盒模型)

内容宽度 = width - border -margin - padding

Flex盒模型:diaplay:flex; justify-content:center; align-items:center

多列布局(pad):属性,column-count,column-gap,column-rule

14、语义化的理解:

1)HTML语义化让页面的内容结构化,结构更清晰,便于对浏览器,搜索引擎解析;

2)在没有CSS样式的情况下也能以一种文档显示,并且是容易阅读的;

3)利于SEO,语义化和搜索引擎建立良好的关系,有利于爬虫抓取更多有效信息,爬虫依赖于标签来确定上下文和各个关键字的权重;

4)便于团队开发和维护,语义化更具可读性,便于阅读,维护和理解

15、清除浮动的方式

1)父级元素设置height

2)结尾处加空div标签clear:both

3)父级元素设置overflow:hidden/auto

4)使用伪类:after必须设置content:' '

16、让一个盒子在父元素里水平垂直居中:

定位三种方式(margin,padding为高宽的一半;margin: auto;transform:translate(-50%,-50%))

display:flex;

javaScript;

display:table-cell(固定宽高);

17、几大经典布局方案:

1)左右固定,中间自适应(浮动和负margin)。

圣杯布局,一个容器。

双飞翼布局,中间父级与左右同级。

2)使用calc(兼容到IE9),css不要写表达式,影响性能。

3)flex

4)定位

18、请说明z-index的工作原理,适用范围?

文档流

定位

19、不考虑其他因素,下面哪种渲染性能比较高?

.box  a  {  }

a{  } //该性能较高,从右到左渲染

20、css实现单行、多行文本溢出显示省略号:

1)普通单行截断省略:

      overflow:  hidden;  文字长度超出限定宽度,则隐藏超出的内容

      text-overflow:  ellipsis;  设置文字在一行显示,不能换行

      white-space:  no-warp;  规定当文本溢出时,显示省略符号来代表被修剪的文字

      优点:

无兼容性问题;响应式截断;文本溢出范围才显示省略号,否则不显示省略号;省略号位置显示刚好

      缺点: 只支持单行文本截断

2)多行截断省略

    -webkit-line-clamp:  2;  用来限制在一个块元素显示的文本的行数,2表示最多显示2行

    display:  -webkit-box;

    -webkit-box-orient:  vertica;

    overflow:  hidden;

    text-overflow:  ellipsis

    缺点:兼容性一般

21、position规定元素的定位类型有:static,relative,absolute,fixed

absolute:生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。

fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。

relative:生成相对定位的元素,相对于其正常位置进行定位。

static:默认值。没有定位,元素出现在正常的流中。

inherit:规定应该从父元素继承position属性的值。

你可能感兴趣的:(2020-05-24)