美文网首页
2020-05-24

2020-05-24

作者: 依稀_Sting | 来源:发表于2020-05-24 16:11 被阅读0次

    日常知识点总结(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

          本文链接:https://www.haomeiwen.com/subject/zwrjahtx.html