最近发现阿里巴巴的一道Web前端开发面试题,共分三部分:CSS部分,JavaScript部分,紧急处理部分,分享给大家做个参考~
第一部分:用CSS实现布局
让我们一起来做一个页面
首先,我们需要一个布局。
请使用CSS控制3个div,实现如下图的布局。
第二部分:用javascript优化布局
由于我们的用户群喜欢放大看页面
于是我们给上一题的布局做一次优化。
当鼠标略过某个区块的时候,该区块会放大25%,
并且其他的区块仍然固定不动。
提示:
也许,我们其他的布局也会用到这个放大的效果哦。可以使用任何开源代码,包括曾经你自己写的。
关键字:javascript、封装、复用
答案部分
第一题:主要考虑几个问题:1. IE6 的 3 像素 BUG;2. 清楚浮动;
CSS代码:
<pre name="code" class="html">*{ margin:0px; padding:0px;}
#first{float:left; margin-left:-310px;width:100px; height:150px;background:#f33; }
#second{float:left;margin-left:-310px;margin-top:160px;width:100px;height:150px;background:#ff0;}
div.container{ float:left; }
#third{ margin-left:110px; width:200px;height:310px; background:#CC0000; }
XML/HTML代码
<div class="container"><div id="third"></div></div> <div id="second"></div> <div id="first"></div>
第二题:用javascript优化布局
提示:
也许,我们其他的布局也会用到这个放大的效果哦。
可以使用任何开源代码,包括曾经你自己写的。
关键字:javascript、封装、复用
javascript 要考虑封装、复用
function zoom(id,x,y){ // 设置缩放函数参数:容器id、横向缩放倍数、纵向缩放倍数(等比例缩放时也可以设定一个参数)
var obj=document.getElementById(id); // 获取元素对象值
var dW=obj.clientWidth; // 获取元素宽度
var dH=obj.clientHeight; // 获取元素高度
obj.οnmοuseοver=function(){ // 鼠标移入
this.style.postion = "absolute";
this.style.width=dW*x+"px"; // 横向缩放
this.style.height=dH*y+"px"; // 纵向缩放
this.style.backgroundColor="#f00"; // 设置调试背景
this.style.zIndex=3; // 设置z轴优先
if( /third/.test(id))
{
document.getElementById("first").style.marginLeft =
-310 - dW*(y-1) +"px";
document.getElementById("second").style.marginLeft =
-310 - dW*(y-1) +"px";
}
}
obj.οnmοuseοut=function(){ // 鼠标移出,设回默认值
this.style.width="";
this.style.height="";
this.style.padding="";
this.style.backgroundColor="";
this.style.zIndex="";
if( /third/.test(id))
{
document.getElementById("first").style.marginLeft = '';
document.getElementById("second").style.marginLeft = '';
}
}
}
window.onload = function(){
zoom("first",1.25,1.25);
zoom("second",1.25,1.25);
zoom("third",1.25,1.25);
}