阿里_一道备受关注的前端开发笔试题

星期三参加了阿里的前端开发的笔试,今天接到了阿里的第一轮面试通知,记得考后感觉题目不会很难哦,毕竟考的东西不外乎:XTHML/CSS/JS 的知识,但心里还是怕被over了,因为自己感觉当时考试的卷面很不整洁,画了又画的,满是伤痕~~~  (在这提起这缺点,希望自己以后要多多注意,在思考完全后再动笔,字也要写清楚, 勉励自己~)。

 

在接到面试通知后,我在网上也找到很多关于这道题的很多解答, 这里作了小小的总结:

阿里巴巴面试题出自:http://job.aliued.com/race/chooseRace/wd.html

BI上也有很多解法:http://bbs.blueidea.com/thread-2824105-1-1.html


 

这里就放上我自己的解决方法:

1.用CSS实现布局

让我们一起来做一个页面
首先,我们需要一个布局。
请使用CSS控制3个div,实现如下图的布局:

css效果

这题不难,在平时项目开发过程中也经常会碰到:

CSS代码:

[css]  view plain copy
  1. <style type="text/css">  
  2. *{ margin:0pxpadding:0px;}  
  3. #first{float:leftmargin-left:-310px;width:100pxheight:150px;background:#f33; }      
  4. #second{float:left;margin-left:-310px;margin-top:160px;width:100px;height:150px;background:#ff0;}  
  5.   
  6. div.container{ float:left; }     
  7. #thirdmargin-left:110px;  width:200px;height:310pxbackground:#CC0000; }   
  8. </style>  

 

XHTML代码:

[xhtml]  view plain copy
  1. <div class="container"><div id="third"></div></div>   
  2. <div id="second"></div> <div id="first"></div>  

 

2.用javascript优化布局

由于我们的用户群喜欢放大看页面,于是我们给上一题的布局做一次优化。

当鼠标略过某个区块的时候,该区块会放大25%,并且其他的区块仍然固定不动

效果如下:

放大效果

提示:
也许,我们其他的布局也会用到这个放大的效果哦。
可以使用任何开源代码,包括曾经你自己写的。

关键字:
javascript、封装、复用

 

惭愧啊,自己的解答并不能很好的具有封装复用性,只能达到效果。

[javascript]  view plain copy
  1. function zoom(id,x,y){ // 设置缩放函数参数:容器id、横向缩放倍数、纵向缩放倍数(等比例缩放时也可以设定一个参数)      
  2.     var obj=document.getElementById(id); // 获取元素对象值      
  3.     var dW=obj.clientWidth; // 获取元素宽度      
  4.     var dH=obj.clientHeight; // 获取元素高度        
  5.           
  6.     obj.οnmοuseοver=function(){ // 鼠标移入   
  7.         this.style.postion = "absolute";     
  8.         this.style.width=dW*x+"px"// 横向缩放      
  9.         this.style.height=dH*y+"px"// 纵向缩放      
  10.         this.style.backgroundColor="#f00"// 设置调试背景      
  11.         this.style.zIndex=3; // 设置z轴优先   
  12.           
  13.           
  14.         if( /third/.test(id))  
  15.         {  
  16.             document.getElementById("first").style.marginLeft =   
  17.                 -310 - dW*(y-1) +"px";  
  18.             document.getElementById("second").style.marginLeft =   
  19.                 -310 - dW*(y-1) +"px";  
  20.         }     
  21.     }      
  22.     obj.οnmοuseοut=function(){ // 鼠标移出,设回默认值      
  23.         this.style.width="";      
  24.         this.style.height="";      
  25.         this.style.padding="";      
  26.         this.style.backgroundColor="";      
  27.         this.style.zIndex="";   
  28.           
  29.         if( /third/.test(id))  
  30.         {  
  31.             document.getElementById("first").style.marginLeft = '';  
  32.             document.getElementById("second").style.marginLeft = '';  
  33.         }     
  34.     }      
  35. }    
  36.   
  37. window.onload = function(){    
  38.     zoom("first",1.25,1.25);      
  39.     zoom("second",1.25,1.25);      
  40.     zoom("third",1.25,1.25);    
  41. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值