1. flash和js通过什么类如何交互?
Flash提供了ExternalInterface接口与JavaScript通信,ExternalInterface有两个方法,call和addCallback:
ExternalInterface.addCallback("在js里可调用的flash方法名",flash内方法) //在flash中通过这个方法公开 在js中可调用的flash内的方法;
ExternalInterface.call("js方法",传给js的参数) //在flash里调用js里的方法
2. substr、substring、 slice区别
参数都是正数
- slice接收的是起始位置和结束位置(不包括结束位置)
- substring接收的是起始位置和结束位置(不包括结束位置)
- substr接收的则是起始位置和所要返回的字符串长度。
注:substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置
var test = 'hello world';
test.slice(4,7) //o w
test.substring(4,7) //o w
test.substr(4,7) //o world
test.substring(7,4) //o w
接收的参数有负数
- slice会将它字符串的长度与对应的负数相加,结果作为参数
- substring则干脆将负参数都直接转换为0
- substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数
var test = 'hello world';
test.slice(-3) //rld
test.substring(-3) //hello world
test.substr(-3) //rld
test.slice(3,-4) //lo w
test.substring(3,-4) //hel
test.substr(3,-4) //空字符串
3. border:none以及border:0的区别
- 效果
边框样式无
border: none
border-style:none;
边框宽度为0px
border: 0
border-width:0;
- 性能差异 border:0;
浏览器对border-width、border-color进行渲染,占用内存。
border:none;
浏览器不进行渲染,不占用内存。
- 计算出的样式
Chrome:
border:none;
border:initial none initial;
border:0;
border:0 initial initial ;
Firefox、360:
border:none;
border:medium none;
border:0;
border:0 none;
- 浏览器兼容
IE7-不支持border:none;
W3C提示:请始终把border-style属性声明到border-color属性之前,元素必须在改变颜色之前获得边框。
错误说法:
- 当定义了border:none,即隐藏了边框的显示,实际就是边框宽度为0
- 当定义边框时,仅设置边框宽度也可以达到显示的效果
4. CSS Sprites
- 简介
- CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式。
- 它允许将一个页面涉及到的所有零星图片都包含到一张大图中, 利用
CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,访问页面时避免图片载入缓慢的现象。
- 优点
- CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;
- CSS Sprites能减少图片的字节;
- CSS Sprites解决了网页设计师在图片命名上的困扰,只需对一张集合的图片命名,不需要对每一个小图片进行命名,从而提高了网页制作效率。
- CSS Sprites只需要修改一张或少张图片的颜色或样式来改变整个网页的风格。
- 缺点
- 图片合并麻烦:图片合并时,需要把多张图片有序的合理的合并成一张图片,并留好足够的空间防止版块出现不必要的背景。
- 图片适应性差:在高分辨的屏幕下自适应页面,若图片不够宽会出现背景断裂。
- 图片定位繁琐:开发时需要通过工具测量计算每个背景单元的精确位置。
- 可维护性差:页面背景需要少许改动,可能要修改部分或整张已合并的图片,进而要改动css。在避免改动图片的前提下,又只能(最好)往下追加图片,但这样增加了图片字节。
5. 浏览器的内核引擎
基本上是四分天下:
- Trident: IE 以Trident 作为内核引擎;
- Gecko: Firefox 是基于 Gecko 开发;
- WebKit: Safari, Google Chrome,傲游3,猎豹浏览器,百度浏览器,opera浏览器;
- Presto: Opera的内核,但由于市场选择问题,主要应用在手机平台--Opera mini
注:2013年2月Opera宣布转向WebKit引擎
注:2013年4月Opera宣布放弃WEBKIT,跟随GOOGLE的新开发的blink引擎
6. 几个阻止行为的区别
- preventDefault() 阻止事件默认行为
- stopPropagation() W3C标准的阻止冒泡 ,作用在后续节点上,目的在执行完绑定到当前元素上的所有事件处理程序之后,
停止执行所有后续节点的事件处理程序 - stopImmediatePropagation 作用在当前节点以及事件链上的所有后续节点上,目的是在执行完当前事件处理程序之后,
停止当前节点以及所有后续节点的事件处理程序的运行 - cancelBubble() ie的阻止冒泡
7. transform 、 translate、 transition、 animation区别
- transform:应用于元素的2D或3D转换。这个属性允许你将元素旋转,缩放,移动,倾斜等;
- translate:移动,是transform的一个方法
- transition:属性是一个简写属性,用于设置四个过渡属性:
transition-property
transition-duration
transition-timing-function
transition-delay - animation 属性是一个简写属性,用于设置六个动画属性:
animation-name
animation-duration
animation-timing-function
animation-delay
animation-iteration-count
animation-direction
8. 可继承样式
azimuth, border-collapse, border-spacing,
caption-side, color, cursor, direction, elevation,
empty-cells, font-family, font-size, font-style,
font-variant, font-weight, font, letter-spacing,
line-height, list-style-image, list-style-position,
list-style-type, list-style, orphans, pitch-range,
pitch, quotes, richness, speak-header, speaknumeral,
speak-punctuation, speak, speechrate,
stress, text-align, text-indent, texttransform,
visibility, voice-family, volume, whitespace,
widows, word-spacing
注意:background不可以继承
9. 标签不受浮动影响
<div class="profile">
<img src="a.jpg" alt="avatar" class="avatar">
<p class="desc">Some description</p>
</div>
<article>
<h2>Posts</h2>
</article>
<style>
.profile .avatar { float: left }
</style>
比如article不受浮影响的方式:
- 父级div定义height
- 结尾处加空div标签clear:both
- 父级div定义伪类:after和zoom
- 父级div定义overflow:hidden
- 父级div也浮动,需要定义宽度
- 结尾处加br标签clear:both
比较好的是第3种方式
article { clear: both }
.profile::after { content: ''; display: block; clear: both }
.profile { overflow: hidden }
10. h5常用标签
<header></header>
<nav></nav>
<section></section>
<aside></aside>
<footer></footer>
<article></article>
11. 在大部分情况下,需要遵循的最佳实践
- 将渲染阶段的开销转嫁到计算阶段之上
- 使用多个分层的 Canvas 绘制复杂场景
- 不要频繁设置绘图上下文的 font 属性
不在动画中使用 putImageData 方法- 通过计算和判断,避免无谓的绘制操作
- 将固定的内容预先绘制在离屏 Canvas 上以提高性能
- 使用 Worker 和拆分任务的方法避免复杂算法阻塞动画运行
12. form 元素的enctype属性
enctype属性在get请求中会被忽略,在post请求中才有效application/x-www-form-urlencoded表示会对特殊字符进行转义text/plain 以文本的形式进行编码,不会对特殊字符进行编码multipart/form-data向服务器发送二进制文件的时候有用,例如提交文件!!! ( form 元素的 enctype 属性设置)
13. link和@import的区别:
- link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。
- link可以加载CSS,Javascript;@import只能加载CSS。
- link加载的内容是与页面同时加载;@import需要页面网页完全载入以后加载。
- 写法不同
link的写法
<link rel="stylesheet" href="index.css">
import的写法:
<style type=”text/css”>
@import url(“index.css”);
</style>
14. DOM树中总共分为如下几种节点格式:
- Element类型(元素节点)
- Text类型(文本节点)
- Comment类型(注释节点)
- Document类型(document节点)。
15. http
- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- HTTP是媒体独立的:意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
- HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
16. 网页打开过程中UDP和TCP使用场景
DNS在进行域名解析时使用UDP,但是在域名服务器之间传输时使用的是TCP
17. websocket特点
- 和http协议不同,是基于tcp的协议
- websocket只需要服务端和客户端一次握手,就可以自由进行数据传送和接收
- 允许服务端主动发送数据,不需要使用轮询的方式
18. linux每个文件目录都有其独特的功能和作用
- /bin 存放普通用户可以使用的指令。
- /usr 这个目录中包含了命令库文件和在通常操作中不会修改的文件,其地位类似Windows上面的”Program Files”目录(安装程序的时候,默认就是安装在此文件内部某个子文件夹内。输入命令后系统默认执行/usr/bin下的程序。
- /etc 全局的配置文件存放目录。存放系统和软件的配置。
- /boot 引导程序,内核等存放的目录。
19. iframe的特点
- 创建比一般的 DOM 元素慢了 1-2 个数量级
iframe 的创建比其它包括 scripts 和 css 的 DOM 元素的创建慢了 1-2 个数量级,使用 iframe 的页面一般不会包含太多 iframe,所以创建 DOM 节点所花费的时间不会占很大的比重。但带来一些其它的问题:onload 事件以及连接池(connection pool)
- 阻塞页面加载
及时触发 window 的 onload 事件是非常重要的。onload 事件触发使浏览器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕。当 onload 事件加载延迟后,它给用户的感觉就是这个网页非常慢。
window 的 onload 事件需要在所有 iframe 加载完毕后(包含里面的元素)才会触发。在 Safari 和 Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况
- 唯一的连接池
浏览器只能开少量的连接到 web 服务器。比较老的浏览器,包含 Internet Explorer 6 & 7 和 Firefox 2,只能对一个域名(hostname)同时打开两个连接。这个数量的限制在新版本的浏览器中有所提高。Safari 3+ 和 Opera 9+ 可同时对一个域名打开 4 个连接,Chrome 1+, IE 8 以及 Firefox 3 可以同时打开 6 个.
绝大部分浏览器,主页面和其中的 iframe 是共享这些连接的。这意味着 iframe 在加载资源时可能用光了所有的可用连接,从而阻塞了主页面资源的加载。如果 iframe 中的内容比主页面的内容更重要,这当然是很好的。但通常情况下,iframe 里的内容是没有主页面的内容重要的。这时 iframe 中用光了可用的连接就是不值得的了。一种解决办法是,在主页面上重要的元素加载完毕后,再动态设置 iframe 的 SRC。
- 不利于 SEO
搜索引擎的检索程序无法解读 iframe。另外,iframe 本身不是动态语言,
样式和脚本都需要额外导入。
所以,iframe 应谨慎使用
20. 标签用法
- 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
- 块级元素不能放在p里面。
- 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
- li内可以包含div
- a标签可以包括任何元素,除了自身
本文使用 mdnice 排版