网易页面重构面试题

前一阵子在网上看见留传的一道前端的面试题。其实很早就开始做了,记得上次我做过一个山寨版的163首页。不过今天这个有点不一样:完全按照给出的 需求对原来的设计稿进行最精确的还原,还要最大限度地兼容各大浏览器。一共花了我三天的零碎时间。也学到了很多的东西。放上来和大家分享下。有兴趣的还可 以自己做试试,有什么问题欢迎留言讨论。

我自己制作完成后的效果:点击预览 代码下载

制作素材很简陋就一张美工设计好的PNG:下面是要求达到的效果

net-ease-exam

下面我把自己感觉有难度的地方总结出来以及一些技巧

1.JavaScript效果的制作

由于我的JavaScript刚开始学习,第一眼就觉得两个”切换菜单”不怎么好做,想好了后就分别写了一个函数来实现切换功能。原理类似模似摄像头。核心代码如下(下方菜单):

function show(a) {//接收传入函数(1,2,3,4)分别为手机,相机笔记本,数字电视
	var nodeUl = document.getElementById("ul-content");
		//从文档中获得ID为"ul-content"的节点
	var ulHeight = -280;
		//定义每次绝对定位的top值做为参数传入判断语句
	if (a==1){//切换第一个项目菜单
		nodeUl.style.top = (a-1)*ulHeight + "px";
	}
	else if (a==2){//切换第二个项目菜单
		nodeUl.style.top = (a-1)*ulHeight + "px";
	}
	else if (a==3){//切换第三个项目菜单
		nodeUl.style.top = (a-1)*ulHeight + "px";
	}
	else if (a==4){//切换第四个项目菜单
		nodeUl.style.top = (a-1)*ulHeight + "px";
	}
}

侧边拦与此效果类似。

2.CSS Sprite技术的应用

为了达到更好的加载速度和更好的用户体验,我把整个页面所需的图片分别拼合制作成两个图片,如下图:

163sprits 163sprits-images

也许你会问为什么不做成一张图片岂不是更方便?这里我总结了一个技巧

一般来说图标(上图左边)的颜色都比较少可用GIF图片制成以达到文件最小化,在网页有”意义”的图片(上图右边)颜色比较丰富所以就得用JPG图片以达到最佳的表现效果。这样才能综合做到文件大小,载入速度,整体效果的最优化。

3.布局相关技巧

1> overflow属性在IE6中只对流动布局和浮动布局起作用,如果你想防止内部定位元素的溢出是会有bug的

2> 浮动固然好用但一定要记住用完后在合理的地方清除掉

3> 如果你布局出现问题最好的查找原因的方法是用border:1px solid #f00显示出问题元素或者用火狐插件CSS Viewer一目了然.

网易页面重构面试题》上有 24 条评论

  1. 原来发现兄弟,你还真是 NB 啊,水平这么高! :D
    建议把这些技术应用在你的blog上,如有可能再分享给大家啊。

    • @365hope 呵呵。我也想呢。不过每一次做主题得花好大的劲儿呢。那可不是一个个的简单技术。而是集合性非常高的整体,一个页面可以用很多方法做出来,关键是得用一种最简单却能实现所有功能的才好。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。