引自:

http://www.w3cplus.com/css/front-end-web-development-quiz.html

Q7:下面代码弹出值是什么?

x = 1;

function bar() {

    this.x = 2;

    return x;

}

var foo = new bar();

alert(foo.x);

答:2

这里主要问题是最外面x的定义,试试把x=1改成x={},结果会不同的。这是为什么呢?在把函数当作构造器使用的时候,如果手动返回了一个值,要看这个值是否简单类型,如果是,等同于不写返回,如果不是简单类型,得到的就是手动返回的值。如果,不手动写返回值,就会默认从原型创建一个对象用于返回。

注:如果改成x={},alert值为undefined。

Q11: 下面代码弹出值是什么?

function foo(a) {

    arguments[0] = 2;

    alert(a);

}

foo(1);

答:2

实参可以直接从arguments数组中修改。

注:即使实参不是简单类型,也会被修改。

Q14: "Sausage"文本的颜色是什么?

#awesome .favorite:not(#awesome) .highlight {
color: red;
}
#awesome .favorite .highlight:nth-of-type(1):nth-last-of-type(1) {
color: blue;
}
<ul class="shopping-list" id="awesome">
<li><span>Milk</span></li>
<li class="favorite" id="must-buy"><span class="highlight">Sausage</span></li>
</ul>

答:红色

对于选择器中给定的各个ID属性值,加“0,1,0,0”。
对于选择器中给定的各个类属性值,属性选择或伪类,加"0,0,1,0"。
对于选择器中给定的各个元素为伪元素,加“0,0,0,1”。
结合符和通配符“*”以及":not()"没有任何的加分权。
对于行内样式,加为“1,0,0,0”
对于"!important"加分高于上面的一切,将变成“1,0,0,0,0” CSS3 中,虽然:not()否定伪类本身不作为权重计数(b),但是:not()中的选择器依然参与权重的计算,也就是说.demo:not(#foo)实际的权重为1,1,0,.demo:not(.foo) 的权重则为0,2,0。

伪类与伪元素的区别参考这里

Q19: 页面加载完毕后,浏览器会下载"mypic.jpg"图片吗?

<div id="test1">
<span id="test2"></span>
</div>
#test1 {
display: none;
}
#test2 {
background-image: url('mypic.jpg');
}

答:不会

注:

img标签的src,不论img为 visibility:hidden; 还是 display:none; ,都会加载

css中,如果父元素#test1为 display:none; ,子元素#test2的 background-image 不会被加载;

如果父元素#test1显示或 visibility:hidden; ,子元素#test2的 background-image 都会被加载;

不论父元素#test1设置何样式,它本身的 background-image 都会被加载

05-11 20:24