1、display:none和visibility:hidden的区别? display:none隐藏对应的元素,在文档布局中不在给它分配空间,当作从来没写过这个结构。 visibility:hidden隐藏对应的元素,但是在文档布局中保留原来的空间 2、CSS中link和@import的区别是? (1)link属于html标签,而@import是CSS提供的; (2)页面被加载时,link会同时被加载,而@import引用的css会等到页面被加载完在加载; (2)import只在IE5以上才能被识别,而link是html标签,无兼容问题; 3、position的absolute与fixed共同点与不同点? 共同点: a.改变行内元素的呈现方式,display被设置为inline-block; b.让元素脱离普通流,不占据空间; c.默认会覆盖带非定位的元素上 不同点: a.absolute的根元素是可以设置的,而fiexd得根元素固定为浏览器窗口; b.当你滚动网页,fiexd元素与浏览器窗口之间得距离是不变的。 4、CSS 盒子模型 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
Margin(外边距) - 清除边框外的区域,外边距是透明的。Border(边框) - 围绕在内边距和内容外的边框。Padding(内边距) - 清除内容周围的区域,内边距是透明的。Content(内容) - 盒子的内容,显示文本和图像。总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距 元素的总高度最终计算公式是这样的: 总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距 (1)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border) (2)有两种, IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 padding
5、CSS3的新特性有哪些? a.CSS3实现圆角(border-radius),阴影(box-shadow) b.对文字进行加特效(text-shadow),线性渐变(gradient),旋转(transform) c. transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋转,缩放,定位,倾斜 d.border-image e.媒体查询,多栏布局 f.在CSS3中唯一引入的伪类是::selection 6、列出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 属性的值。 7、html常见的兼容性问题?
png24位的图片在iE6浏览器上出现背景 解决方案:做成PNG8,也可以引用一段脚本处理.浏览器默认的margin和padding不同 解决方案:加一个全局的 *{margin:0;padding:0;} 来统一。IE6双边距bug:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。 #box{ float:left; width:10px; margin:0 0 0 10px;} 这种情况之下IE会产生20px的距离 解决方案:在float的标签样式控制中加入 _display:inline; 将其转化为行内属性。( _ 这个符号只有ie6会识别)渐进识别的方式,从总体中逐渐排除局部。 首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。 接着,再次使用 “+” 将IE8和IE7、IE6分离开来,这样IE8已经独立识别。 .bb{ background-color:#f1ee18; /*所有识别*/ .background-color:#00deff\9; /*IE6、7、8识别*/ +background-color:#a200ff; /*IE6、7识别*/ _background-color:#1e0bd1; /*IE6识别*/ }6.IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性 解决方法:统一通过getAttribute()获取自定义属性 7. IE下,event对象有 x、y 属性,但是没有 pageX、pageY属性; Firefox下,event对象有 pageX、pageY 属性,但是没有 x、y 属性 解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。 8. Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示 解决方法:可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决 9. 超链接访问过后 hover 样式就不出现了,被点击访问过的超链接样式不在具有 hover 和 active 了 解决方法:改变CSS属性的排列顺序 L-V-H-A
a:link {} a:visited {} a:hover {} a:active {} 怪异模式问题:漏写 DTD 声明,Firefox 仍然会按照标准模式来解析网页,但在 IE 中会触发怪异模式。为避免怪异模式给我们带来不必要的麻烦,最好养成书写 DTD 声明的好习惯。现在可以使用html5 推荐的写法: <!DOCTYPE html> 上下margin重合问题:ie和ff都存在,相邻的两个div的margin-left和margin-right不会重合,但是margin-top和margin-bottom却会发生重合。 解决方法:养成良好的代码编写习惯,同时采用margin-top或者同时采用margin-bottom。e6对png图片格式支持不好 解决方案:引用一段脚本处理8、解释下浮动和它的工作原理?清除浮动的技巧
浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。
使用空标签清除浮动。 这种方法是在所有浮动标签后面添加一个空标签 定义css clear:both. 弊端就是增加了无意义标签。使用overflow。 给包含浮动元素的父标签添加css属性 overflow:auto; zoom:1; zoom:1用于兼容IE6。使用after伪对象清除浮动。 该方法只适用于非IE浏览器。具体写法可参照以下示例。使用中需注意以下几点。一、该方法中必须为需要清除浮动元素的伪对象中设置 height:0,否则该元素会比实际高出若干像素; 可以给父元素设置overflow:auto或者hidden9、浮动元素引起的问题和解决办法?
浮动元素引起的问题:
父元素的高度无法被撑开,影响与父元素同级的元素与浮动元素同级的非浮动元素会跟随其后若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构解决方法: 使用 CSS 中的 clear:both; 属性来清除元素的浮动可解决2、3问题,对于问题1,添加如下样式,给父元素添加clearfix样式:
.clearfix:after{content: ".";display: block;height: 0;clear: both;visibility: hidden;} .clearfix{display: inline-block;} /* for IE/Mac */清除浮动的几种方法:
额外标签法, (缺点:不过这个办法会增加额外的标签使HTML结构看起来不够简洁。)使用after伪元素 #parent:after{ content:"."; height:0; visibility:hidden; display:block; clear:both; } 浮动外部元素设置 overflow 为 hidden 或者 auto10、线程与进程的区别
一个程序至少有一个进程,一个进程至少有一个线程线程的划分尺度小于进程,使得多线程程序的并发性高另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别