前端的疑难杂症

Posted zhangli123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端的疑难杂症相关的知识,希望对你有一定的参考价值。

1.display:none和visibility:hidden的区别?

display:none  隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,
就当他从来不存在。
visibility:hidden  隐藏对应的元素,但是在文档布局中仍保留原来的空间。
 
2.清除浮动的几种方式,以及他们的优缺点

(1).使用空标签清除浮动clear:both。

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度

优点:通俗易懂,容易掌握

缺点:会添加很多无意义的空标签,有违结构与表现的分离,在后期维护中将是噩梦

(2).父级div定义overflow:hidden

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

优点:简单,代码少,浏览器支持好

缺点:不能和position配合使用,因为超出的尺寸的会被隐藏

(3)、父级div定义伪类:after和zoom(用于非IE浏览器)

原理:IE8以上和非IE浏览器才支持:after,原理和方法1有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题

优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)。

缺点:代码多,要两句代码结合使用,才能让主流浏览器都支持

(4)、父级div定义height

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。

优点:简单,代码少,容易掌握

(5)父级div定义overflow:auto

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度

优点:简单,代码少,浏览器支持好

缺点:内部宽高超过父级div时,会出现滚动条

3.CSS中 link 和@import 的区别是?

(1) link属于html标签,而@import是CSS提供的;
 
(2) 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
 
(3) import只在IE5以上才能识别,而link是HTML标签,无兼容问题;
 
4.解释下 CSS sprites,以及你要如何在页面或网站中使用它
CSS Sprites 其实就是把网页中一些背景图片整合到一张图片文件中,再利用 CSS 的"background-image","background-repeat","background-position" 的组合进行背景定位,background-position 可以用数字能精确的定位出背景图片的位置。这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是也有限制,一般浏览器都是6个
 
5.null和undefined的区别?
当声明的变量还未被初始化时,变量的默认值为undefined
null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象
 
6.new操作符具体干了什么呢?
1. 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型
2. 属性和方法被加入到 this 引用的对象中
3. 新创建的对象由 this 所引用,并且最后隐式的返回 this
 
7.iframe的优缺点
优点:
1. 解决加载缓慢的第三方内容如图标和广告等的加载问题
2. Security sandbox
3. 并行加载脚本
缺点:
1. iframe会阻塞主页面的Onload事件
2. 即时内容为空,加载也需要时间
3. 没有语意
 
8.javascript对象的几种创建方式
1. 工厂模式
2. 构造函数模式
3. 原型模式
4. 混合构造函数和原型模式
5. 动态原型模式
6. 寄生构造函数模式
7. 稳妥构造函数模式
 
9.javascript继承的 6 种方法
1. 原型链继承
2. 借用构造函数继承
3. 组合继承(原型+借用构造)
4. 原型式继承
5. 寄生式继承
6. 寄生组合式继承
 
10列出display的值,说明他们的作用。position的值, relative和absolute分别是相对于谁进行定位的?
display 的值的作用:
1.block 象块类型元素一样显示。
2.inline 缺省值。象行内元素类型一样显示。
3.inline-block 象行内元素一样显示,但其内容象块类型元素一样显示。
4.list-item 象块类型元素一样显示,并添加样式列表标记。
 
position 的值的定位区别:
1.absolute 生成绝对定位的元素,相对于 static 定位以外的第一个祖先元素进行定位。
2.fixed 生成固定定位的元素,相对于浏览器窗口进行定位(老IE不支持)。
3.relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。
4.static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)。
5.inherit 规定从父元素继承 position 属性的值。
 
11.CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些?
CSS 选择符:
1.id选择器(# myid)
2.类选择器(.myclassname)
3.标签选择器(div, h1, p)
4.相邻选择器(h1 + p)
5.子选择器(ul > li)
6.后代选择器(li a)
7.通配符选择器( * )
8.属性选择器(a[rel = "external"])
9.伪类选择器(a: hover, li:nth-child)
 
可继承的样式:
1.font-size
2.font-family
3.color
4.text-indent
 
不可继承的样式:
1.border
2.padding
3.margin
4.width
5.height
 
优先级算法:
1.优先级就近原则,同权重情况下样式定义最近者为准;
2.载入样式以最后载入的定位为准;
3.!important >  id > class > tag  
4.important 比 内联优先级高,但内联比 id 要高
 
CSS3新增伪类举例:
p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。
p:last-of-type  选择属于其父元素的最后 <p> 元素的每个 <p> 元素。
p:only-of-type  选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。
p:only-child    选择属于其父元素的唯一子元素的每个 <p> 元素。
p:nth-child(2)  选择属于其父元素的第二个子元素的每个 <p> 元素。
:enabled :disabled 控制表单控件的禁用状态。
:checked        单选框或复选框被选中
 



以上是关于前端的疑难杂症的主要内容,如果未能解决你的问题,请参考以下文章

先掌握这 19 个 css 技巧,解决一些疑难杂症

一处疑难杂症的术后总结:WebView和JavaScript之间的交互

前端知识网站

Flutter 疑难杂症(一)

“疑难杂症”又二记

开发工具的疑难杂症