`
driftcloudy
  • 浏览: 132075 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一道阿里前端笔试题

阅读更多

题目:

用CSS实现布局

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

用javascript优化布局

由于我们的用户群喜欢放大看页面,于是我们给上一题的布局做一次优化。当鼠标略过某个区块的时候,该区块会放大25%,并且其他的区块仍然固定不动。


思路:

注意题目由于是只让用3个div,这让我很不习惯,如果不这么限制,我至少用四个,类似这样。

 

<div class='left'>
    <div id='left1'></div>
    <div id='left2'></div>
</div>
<div class='right'></div>

把其中的left和right都设成float。

 

现在只能用3个div,最简单的办法就是使用绝对定位。如果还要用浮动的方法,那么只能将left1,left2都设置成浮动。

完整的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>teset</title>
<style type="text/css">
	div{background:red;}
	#left1,#left2{
		width:50px;
		height:50px;
		float:left;
	}
	#left2{
		margin-top:60px;
		margin-left:-160px;
	}
	#right{
		width:100px; 
		height:110px;
		float:left;
		margin-left:10px;
	}
</style>
</head>
<body>
	<div id='left1'></div>
	<div id='right'></div>
	<div id='left2'></div>
</body>
</html>
 

看到下面还要求鼠标移上去的时候放大,由于浮动布局很容易遭到破坏。在这种情况,用绝对定位是一个不错的选择。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>teset</title>
<style type="text/css">
	div{background:red;}
	#left1,#left2{
		width:50px;
		height:50px;
		position:absolute;
	}
	#left1{
		top:0px;left:0px;
	}
	#left2{
		top:60px;left:0px;
	}
	#right{
		width:100px;height:110px;
		top:0px;left:60px;
		position:absolute;
	}
</style>
</head>
<body>
	<div id='left1'></div>
	<div id='left2'></div>
	<div id='right'></div>
</body>
</html>
 

下面开始写js函数控制div的变化,以#left1为例:

function zoomIn(){
	var node=dojo.byId('left1');
	dojo.style(node,'width','60px');
	dojo.style(node,'height','60px');
}
function zoomOut(){
	var node=dojo.byId('left1');
	dojo.style(node,'width','50px');
	dojo.style(node,'height','50px');
}	
dojo.addOnLoad(
	function(){
		dojo.connect(dojo.byId('left1'),'onmouseover',null,zoomIn);
		dojo.connect(dojo.byId('left1'),'onmouseout',null,zoomOut);
	}
);
 

这里用到了dojo,天天在用,也就顺手了。

分享到:
评论
5 楼 driftcloudy 2011-04-05  
argont 写道
修正一下:
……
}


clone一个再盖上去~这个点子不错呢,可能我太局限于3个考虑了 :)感谢指教~
4 楼 argont 2011-04-05  
修正一下:

<script type="text/javascript">
function setHeight(obj, v) { obj.style.height = obj.offsetHeight * v + "px" ; }
function setWidth(obj, v) { obj.style.width = obj.offsetWidth * v + "px"; }
function pageX(obj) {
return obj.offsetParent ?
obj.offsetLeft + pageX(obj.offsetParent) : obj.offsetLeft;
}
function pageY(obj) {
return obj.offsetParent ?
obj.offsetTop + pageY(obj.offsetParent) : obj.offsetTop;
}
3 楼 argont 2011-04-05  
你试试这样,我刚写的。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
#main { float:right; height:500px; width:75%; background-color:#CCC; }
#left1 { float:left; height:245px; width:24%; background-color:#f00; margin-bottom:10px; }
#left2 { float:left; clear:left; height:245px; width:24%; background-color:#00f; }
</style>
<script type="text/javascript">
function setHeight(obj, v) { obj.style.height = obj.offsetHeight * v + "px" ; }
function setWidth(obj, v) { obj.style.width = obj.offsetWidth * v + "px"; }
function pageX(obj) {
	return obj.offsetParent ? 
		obj.offsetLeft += pageX(obj.offsetParent) : obj.offsetLeft;
}
function pageY(obj) {
	return obj.offsetParent ?
		obj.offsetTop += pageY(obj.offsetParent) : obj.offsetTop;
}

function zoom(obj,v) {
	var t = obj.cloneNode(true);
	t.onmouseover = function() { return false; }
	t.onmouseout = function() { this.parentNode.removeChild(this); }
	document.body.appendChild(t);
	
	setHeight(t, v);
	setWidth(t, v);
	t.style.position = "absolute";
	
	//不超出页面右侧的限制
	t.style.left = t.offsetWidth + pageX(obj) <= document.documentElement.offsetWidth ? pageX(obj) : pageX(obj) - ( t.offsetWidth - obj.offsetWidth) + "px";
	t.style.top  = pageY(obj) + "px";
}
</script>
</head>

<body>
<div id="main" onmouseover="zoom(this,1.25);">
</div>
<div id="left1" class="left" onmouseover="zoom(this, 1.25);">
</div>
<div id="left2" class="left" onmouseover="zoom(this, 1.25);">
</div>
</body>
</html>
2 楼 driftcloudy 2011-04-04  
argont 写道
你用绝对定位?如果你面试,你会成功吗?

那三个div的情况下,要鼠标移上去放大,还有别的招么?
1 楼 argont 2011-04-04  
你用绝对定位?如果你面试,你会成功吗?

相关推荐

    阿里巴巴校招前端笔试题

    阿里巴巴校招前端笔试题 校招前端笔试题.pages

    web前端笔试题面试题汇总+前端优化总结

    web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题...

    前端笔试题整理(附答案)2021 pdf.pdf

    前端笔试题整理(附答案)2021 pdf.pdf 本文档主要涵盖了前端开发中的一些基础知识点,包括JavaScript基础、Object.create、instanceof操作符、新操作符、Promise等。 1. JavaScript基础 JavaScript是一种高级的...

    web前端笔试题(含答案).doc

    web前端笔试题(含答案) 这个文件包含了多个 web 前端相关的知识点,涵盖了 HTML、CSS、JavaScript、AngularJS、Vue.js 等领域。下面是对每个知识点的详细解释: 1. 前端页面有哪三层构成? 答:结构层(Html)、...

    阿里前端笔试面试题题库.zip

    阿里前端笔试面试题题库.zip

    2021 前端面试笔试题及答案.pdf

    "前端面试笔试题及答案" 本文档是关于前端面试笔试题及答案的总结,涵盖了JavaScript基础、Object.create、instanceof、new操作符、Promise等多个知识点。 JavaScript基础 JavaScript是一种高级的、动态的、基于...

    web前端笔试题面试题汇总+前端优化总结 分享给需要的同学

    web前端笔试题面试题汇总+前端优化总结 分享给需要的同学

    前端开发2024笔试题(卷一)及答案

    前端开发的笔试题目及答案,用于筛选前端初级、中级、高级人才。 目前用于筛选初、中级。 正在找工作或者面试的前端开发,可以练习学习一下。 正在招前端开发的leader,可以参考,用于招聘。 陆续每年更新不同的题目...

    2022前端笔试题 - javascript.pdf

    前端笔试题 - JavaScript 基础知识点总结 JavaScript 是一种广泛应用于 Web 开发的编程语言,它提供了许多强大的功能来帮助开发者创建复杂的 Web 应用程序。在前端开发中,JavaScript 是必不可少的一部分,本文总结...

    前端笔试、面试题(VUE)

    前端笔试、面试题(VUE)

    蚂蚁-前端-笔试题.js

    原生js操作:驼峰格式和下划线格式互转,json字符串转换……五道题,带答案

    前端开发笔试题汇总

    在前端开发领域,笔试题是评估开发者技能的重要方式,尤其对于腾讯、网易、去哪儿等知名公司来说,这些公司的笔试环节通常包含了一系列具有挑战性的题目,旨在测试候选人的基础理论知识、编程能力、问题解决和实际...

    阿里巴巴2013校园招聘前端工程师笔试题

    阿里巴巴2013年的校园招聘前端工程师笔试题涵盖了前端开发的多个重要知识点,包括HTML、CSS、JavaScript以及网页性能优化。以下是对这些题目的详细解析: 1)代码优化: 题目中给出的代码可能存在样式重复和可读性...

    2022年最新(阿里)前端面试题真题解析

    这份"2022年最新(阿里)前端面试题真题解析"资源旨在为应聘者提供最新的面试准备指南,帮助他们更好地理解面试官可能提出的问题以及期望的答案。以下是对这些面试题目的详细解析,涵盖了多个核心的前端知识点。 一、...

    前端笔试题2022V2(1).md

    前端笔试题2022V2(1).md

    阿里巴巴2015校招前端在线笔试题

    阿里巴巴2015校招前端在线笔试题 01 按照CommonJS规范,在任何模块代码的作用域下内置了以下变量:module require exports 02 NodeJS官方模块:Querystring Dns 可用于优化CSS图片加载技术?CSSSprite SVGSprite ...

    2021年前端笔试题-面试真题及答案.pdf

    "2021年前端笔试题-面试真题及答案.pdf" 本资源是2021年前端笔试题的汇总,包含了多个JavaScript基础知识点,包括Object.create、instanceof、new操作符、Promise等。 一、JavaScript基础 1. 手写Object.create...

    阿里软件JAVA笔试题

    "阿里软件JAVA笔试题" 阿里软件JAVA笔试题是阿里巴巴公司为招聘软件开发工程师所设计的一份笔试题目,涵盖了JAVA语言、数据结构、算法、设计模式、数据库等多方面的知识点。 本题目共有15道题目,涵盖了以下几个...

    阿里历年笔试题

    2009 2010 2011 的阿里笔试题

    Web前端开发笔试题.pdf

    根据提供的文件内容,我们可以提炼出一些重要的知识点,它们涉及...正确理解和应用这些知识点,对通过Web前端开发笔试题非常重要。由于部分内容存在OCR扫描错误,所以在实际应用时还需要根据正确的语法规范进行操作。

Global site tag (gtag.js) - Google Analytics