`
348102023
  • 浏览: 13235 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
社区版块
存档分类
最新评论

转载:关于圣杯布局一(一道比较有趣的前端面试题)

阅读更多

布局基本框架

 

题目描述:

Left与Right是固定宽度,中间Main要求自适应,核心问题是Html文档流必须从Main开始然后才是两侧,下面就是这个要求的Html结构

<div id=”main”>
</div>
<div id=”left”>
</div>
<div id=”right”>
</div>

 

常规做法把两侧放在主要内容的前面进行左右浮动,然后中间使用边距,这样有个缺点就是网速慢的时候主要内容却在最后显示。

按照上面的Html布局,如果按常规把left和right各自左右浮动,中间main使用边距的话就会出现下面这种情况:

侧栏与主要内容错开

侧栏与主要内容错开

 

下面是我的解决方案:

只有使Main不占用文档流空间才能让三列对齐而,让Main不占据文档流的方法有两种:

一、使用绝对定位。

绝对定位需要设置左右边距(实际应用中往往需要在外面套一个相对定位的盒子)。整个Demo如下(通过Firefox与IE5.5——8测试):

<!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">
* { margin:0; padding:0; }
#main { position:absolute; left:200px; right:200px }/*绝对定位,使content不占据html文档流空间,让后面的left,right浮上去*/
#left, #right { width:200px; }
#left { float:left; }
#right { float:right; }
</style>
</head>
<body>
<div id="main">
<p style="height:999px; background:#fffaba; ">content</p>
</div>
<div id="left">
<p style="height:999px; background:#8fc41f;">left</p>
</div>
<div id="right">
<p style="height:999px; background:#00b7ef;">right</p>
</div>
</body>
</html>

 

 

二、Main左浮动。
如果Main浮动的话首先要解决宽度自适应的问题,设置宽度100%显示,然后就得把Left拉到Main左侧,这里巧妙使用两种偏移方法。IE6会有兼容问题,需要Hack一下。

<!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">
* { margin:0; padding:0; }
#wrap { padding:0 300px 0 200px; *overflow:hidden;  }
#main { float:left; width:100%; }
#left, #right { position:relative; _display:inline; }
#left { width:200px; float:left; margin-left:-100%; right:200px; _right:-300px; }
#right { width:300px; float:right; margin-right:-300px; }
</style>
</head>
<body>
<div id="wrap">
 <div id="main">
 <p style="height:999px; background:#fffaba; ">content</p>
 </div>

 <div id="left">
 <p style="height:999px; background:#8fc41f;">left</p>
 </div>
 <div id="right">
 <p style="height:999px; background:#00b7ef;">right2</p>
 </div>
</div>
</body>
</html>

 

后记:关于侧栏宽度固定,主要部分宽度自适应的布局是再普通不过了,而大部分人的做法就是把侧栏放在自适应盒子前面,然后进行浮动解决,从来没有想过使用最优化的html文档流完成这个布局。第一种方法由于用了绝对定位,适合在特殊应用中使用,常规布局推荐使用第二种解决。

转载地址:http://www.planeart.cn/?p=446

 

说明:本文原来的标题是:来自腾讯的前端工程师面试题,这里我把他改了,是因为我在搜索这个三栏布局实现的时候,发现这种布局有一个更好的名字来称呼“圣杯布局”。后面我会转载一篇文章来更详细的介绍一下“圣杯布局”,纯属标记一下。

分享到:
评论

相关推荐

    前端面试题:前端框架面试题大全

    前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; ...

    前端面试题汇总前端面试题汇总前端面试题汇总

    前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端...

    2017前端面试题整理汇总

    这份"2017前端面试题整理汇总"旨在为求职者提供一个全面了解前端面试趋势和必备技能的平台。 1. **JavaScript** JavaScript是前端开发的核心语言,面试中通常会考察基础语法、函数、闭包、原型链、异步处理等方面...

    2021前端面试题.pdf

    前端面试题总结

    前端面试题汇总.pdf

    前端面试题汇总主要涵盖HTML和CSS相关的重要知识点,旨在考察面试者对于网页构建的基础知识、浏览器兼容性、页面性能优化以及SEO策略等的理解。以下是对这些面试题的详细解析: 1. **浏览器测试**:面试者应熟悉...

    2020年前端面试真题(阿里、网易、滴滴等)文件为百度网盘链接永久有效

    现在五块钱的付出,将来收获的可能是一份心仪的offer,干货满满,建议下载。...友情提示:本套面试题包括面试题900题+公司实战面试题400问,面试题已经整理好答案,公司题由于新收录没有答案,但非常有参考价值。

    H5前端面试大全-包含大厂面试题_25个md文件分类面试题.rar

    这里将收集我做过的所有的前端面试笔试题,并根据自己的理解提供解答,以及一些关于前端找工作方面的经验等。 前端笔试面试题部分 试题链接 原题概述 标签分类 1.md CSS部分 CSS 2.md HTML部分 HTML 3.md FEX ...

    各种前端面试题+答案+面试流程

    前端面试题 各种前端面试题+答案+面试流程 各种前端面试题+答案+面试流程 各种前端面试题+答案+面试流程 各种前端面试题+答案+面试流程 各种前端面试题+答案+面试流程 各种前端面试题+答案+面试流程 各种前端...

    个人面试题总结(java,数据库,前端).zip

    所以面试题数量也是不少的,里面也包含了个人的一些总结和见解,比如说在集合方面的知识点有实现的各自特点,他们之间的区别,以及等等原理和实现的细节,还包含了java和前端的面试宝典,一个宝典大概有500页左右,

    2023最新前端面试题总结

    "前端面试题总结" 以下是根据给定文件信息生成的相关知识点: 浏览器兼容性 在前端开发中,浏览器兼容性是一个非常重要的问题。不同的浏览器对 HTML、CSS、JavaScript 的解析和执行方式不同,这导致了同一个页面...

    前端面试题含答案.pdf

    前端面试题含答案.pdf 前端面试题含答案.pdf 是一份包含多个与前端开发相关的问题的文件,该文件涵盖了 HTML、CSS、JavaScript 等多个方面的知识点。下面是对该文件中部分内容的知识点解释: 1. CSS 样式定义:...

    前端面试题及答案.pdf

    前端面试题及答案.pdf 本文档总结了前端面试题及答案,涵盖了 Vue.js 相关知识点,包括 Vuex 的五个核心概念、Vue 生命周期、Cookie、localStorage 和 sessionStorage 的区别等。 一、Vuex 的五个核心概念 Vuex ...

    Shopee前端面试岗-面试题-历年面经

    Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee前端面试岗-面试题-历年面经 Shopee 前端岗开发面经汇总 本系列将提供Shopee 前端岗位历年面经,所有...

    2021年前端面试题汇总 高清pdf完整版

    《2021年前端面试题汇总》是一个全面的前端面试资源,涵盖了JavaScript基础到高级、CSS以及常用Web框架的相关面试题目。这份资料对于正在准备前端面试的开发者来说,是一份极具价值的学习材料。以下是对其中关键知识...

    2017前端开发最新面试题

    2017年,尽管已是几年前,但那时的前端面试题仍然能反映出当时的主流技术和趋势,对于今天的开发者来说,仍具有相当的学习价值。下面我们将详细探讨这些面试题所涵盖的知识点。 首先,前端开发的基础部分是必不可少...

    前端最全的初级前端面试题 干货满满

    前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满...

    100道前端面试题.pdf

    ### 前端面试题知识点 #### 1. 面试题目的类型及内容 - **自我介绍**:不仅仅要提供基本信息,还需突出个人特点和优势。 - **开放性题目**:考察应聘者的应变能力、思维深度和广度。 - **项目介绍**:阐述具体参与...

    前端面试题.md

    前端面试题.md

Global site tag (gtag.js) - Google Analytics