两题前端开发工程师面试题

1. 用 CSS 实现布局

让我们一起来做一个页面

首先,我们需要一个布局。

请使用 CSS 控制 3 个 div,实现如下图的布局。

 

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

主要考虑几个问题:1. IE6 的 3 像素 BUG;2. 清楚浮动;

CSS代码
  1. div{background:#CCCCCC;}       
  2. #first{float:left;width:100pxheight:150px}       
  3. #second{clear:left;float:left;margin-top:10px;width:100px;height:150px}      
  4. #third{zoom:1; width:200px;margin-left:110px;_margin-left:107pxheight:310px}    
XML/HTML代码
  1. <div id="first"></div>  
  2. <div id="second"></div>  
  3. <div id="third"></div>  

 

查看演示

 

2. 用 javascript 优化布局

由于我们的用户群喜欢放大看页面

于是我们给上一题的布局做一次优化。

当鼠标略过某个区块的时候,该区块会放大25%,

并且其他的区块仍然固定不动。

 

提示:

也许,我们其他的布局也会用到这个放大的效果哦。

可以使用任何开源代码,包括曾经你自己写的。

关键字:javascript、封装、复用

惭愧啊,用上边那个布局我怎么也没把它优化出来,硬这头皮用绝对定位改了布局;

所以样式改成了这样

CSS代码
  1. body{ margin:0; padding:0}   
  2. div{background:#CCCCCCposition:absolute}   
  3. #first{width:100pxheight:150px}   
  4. #second{top:160px;width:100px;height:150px}   
  5. #thirdwidth:200pxheight:310pxleft:110px}   

 

javascript 要考虑封装、复用

JavaScript代码
  1. function zoom(id,x,y){ // 设置缩放函数参数:容器id、横向缩放倍数、纵向缩放倍数(等比例缩放时也可以设定一个参数)   
  2. var obj=document.getElementById(id); // 获取元素对象值   
  3. var dW=obj.clientWidth; // 获取元素宽度   
  4. var dH=obj.clientHeight; // 获取元素高度   
  5. //var oTop=obj.offsetTop;   
  6. //var oLeft=obj.offsetLeft;   
  7. obj.onmouseover=function(){ // 鼠标移入   
  8. this.style.width=dW*x+"px"// 横向缩放   
  9. this.style.height=dH*y+"px"// 纵向缩放   
  10. this.style.backgroundColor="#f00″; // 设置调试背景  
  11. this.style.zIndex=1; // 设置z轴优先  
  12. }  
  13. obj.onmouseout=function(){ // 鼠标移出,设回默认值  
  14. this.style.width="";  
  15. this.style.height="";  
  16. this.style.padding="";  
  17. this.style.backgroundColor="";  
  18. this.style.zIndex="";  
  19. }  
  20. }  
  21. zoom("first",1.25,1.25);  
  22. zoom("second",1.25,1.25);  
  23. zoom("third",1.25,1.25);    

 

查看演示




文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复hujuntao[2010-07-20 02:24 PM | del]
除了绝对定位,我也想不出其它方法
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.