前端面试可能问的问题

转自CSDN雄领IT

iframe有哪些优点和缺点:

缺点:
① iframe会阻塞主页面的Onload事件;
② 搜索引擎的检索程序无法解读这种页面,不利于SEO;
③ 会影响页面的并行加载。
什么是并行加载:同一时间针对同一域名下的请求。一般情况,iframe和所在页面在同一个域下面,而浏览器的并加载的数量是有限制的。
怎样解决:使用js动态给iframe的src加载页面内容,示例代码如下

 
 document.getelementbyid("fram").src="a2.html" 

优点:
1.iframe能够原封不动的把嵌入的网页展现出来。
2.如果有多个网页引用iframe,那么你只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷。
3.网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe来嵌套,可以增加代码的可重用。
4.如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由iframe来解决。
5.重载页面时不需要重载整个页面,只需要重载页面中的一个框架页(减少了数据的传输,增加了网页下载速度)
6.方便制作导航栏

盒子模型你是怎么理解的?

1)盒子模型有两种,W3C和IE盒子模型

(1)W3C定义的盒子模型包括margin、border、padding、content ,元素的width=content的宽度


前端面试可能问的问题_第1张图片

(2)IE盒子模型与W3C的盒子模型唯一区别就是元素的宽度,元素的width=content+padding+border


前端面试可能问的问题_第2张图片

回答:
我个人认为W3C定义盒子模型与IE定义的盒子模型,IE定义的比较合理,元素的宽度应该包含border(边框)和padding(填充),这个和我们现实生活的盒子是一样的,W3C也认识到自己的问题了,所以在CSS3中新增了一个样式box-sizing,包含两个属性content-box 和 border-box。
(1) content-box 元素的width=content+padding+border
(2) border-box 元素的width=width(用样式指定的宽度)
(3)对于行级元素,margin-top和margin-bottom对于上下元素无效,margin-left和margin-right有效
(4)对于相邻的块级元素margin-bottom和margin-top 取值方式
1) 都是正数: 取最大值

距离=Math.max(margin-botton,margin-top)

2) 都是负数: 取最小值

距离=Math.min(margin-botton,margin-top)

3)上面是正数,下面是负数或者 上面是负数,下面是正数: 正负相加

距离=margin-botton+margin-top

元素定位有哪些?

position为元素定位属性,包含以下属性值

  1. absolute绝对定位

相对位置为父元素为非static的第一个父元素进行定位。

前端面试可能问的问题_第3张图片

  1. fixed 固定定位(老IE6不支持)

相对于浏览器窗口进行定位。


前端面试可能问的问题_第4张图片
  1. relative相对定位

相对于其正常(默认布局)位置进行定位。


前端面试可能问的问题_第5张图片
加分项:

1.所有的定位如果left、top、right、bottom属性都为默认值,则为默认定位
2.absolute定位会脱离文档,浮动起来,多个层重叠可以使用z-index属性改变层叠顺序
3.absolute定位忽略padding,相对位置为相对定位容器的左上角内边框

样式导入有哪些方式?

样式导入方式

  • link
  • import

使用方式

  • link的使用
 
  • import的使用

不同点
link除了引用样式文件,还可以引用图片等资源文件,而import只引用样式文件



兼容性不同,link不存在兼容性的问题,import在IE5以上支持,是css2.1新增的
在样式表文件可以使用import导入其它的样式表文件,而link不可以
link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。
link支持使用Javascript控制DOM去改变样式;而@import不支持。

加分项

import的写法比较多
@import 'style.css' //Windows IE4/ NS4, Mac OS X IE5, Macintosh IE4/IE5/NS4不识别
@import "style.css" //Windows IE4/ NS4, Macintosh IE4/NS4不识别
@import url(style.css) //Windows NS4, Macintosh NS4不识别
@import url('style.css') //Windows NS4, Mac OS X IE5, Macintosh IE4/IE5/NS4不识别
@import url("style.css") //Windows NS4, Macintosh NS4不识别
推荐使用 @import url(index.css);

::before 和:before有什么区别?

相同点
都可以用来表示伪类对象,用来设置对象前的内容
:befor和::before写法是等效的
不同点
:befor是Css2的写法,::before是Css3的写法
:before的兼容性要比::before好 ,不过在H5开发中建议使用::before比较好

加分项

伪类对象要配合content属性一起使用
伪类对象不会出现在DOM中,所以不能通过js来操作,仅仅是在 CSS 渲染层加入
伪类对象的特效通常要使用:hover伪类样式来激活

css样式的优先级是怎么样的?

样式优先级规则
1.优先级顺序为:!important>style>权重值

  1. 如果权重相同,则最后定义的样式的起作用,应该避免这种情况出现
    权重规则
    标签的权重为1
    class的权重为10
    id的权重为100
如何居中一个元素(正常、绝对定位、浮动元素)?

(一)元素水平居中的方式
1)行级元素水平居中对齐(父元素设置 text-align:center)

  1. 块级元素水平居中对齐(margin: 0 auto)
    3)浮动元素水平居中

宽度不固定的浮动元素

.outerbox{
float:left; 
position:relative; 
left:50%; 
} 
.innerbox{  
float:left; 
position:relative; 
right:50%; 
}

 
我是浮动的

宽度固定的互动元素

 .outerbox{
     background-color:pink; /*方便看效果 */  
     width:500px ; 
     height:300px; /*高度可以不设*/
     margin: -150px 0 0 -250px; /*使用marin向左移动250px,保证元素居中*/
     position:relative;   /*相对定位*/
     left:50%;
     top:50%;
 }

我是浮动的

4)让绝对定位的元素水平居中对齐

.center{
         position: absolute; /*绝对定位*/
         width: 500px;
         height:300px;
         background: red;
         margin: 0 auto; /*水平居中*/
         left: 0; /*此处不能省略,且为0*/
         right: 0; /*此处不能省略,且为0*/
}

(二)元素垂直居中对齐
1)对行级元素垂直居中(heiht与line-height的值一样)
2)对块级元素垂直居中对齐
2.1 父元素高度固定的情况

1)父元素的height与line-height值相同

2)需要垂直居中的元素

vertical-align:middle;// 垂直居中对齐

display:inline|inline-block 块级元素转行级元素
2.2 父元素高度不固定的情况

父元素的padding-top和padding-bottom一样

CSS样式-display有哪些作用?

元素默认的display值的情况如下
block(块级元素)