- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
margin的布局剖析
margin系列之布局篇
发表于?2013-12-31?? | ? 分类于?CSS?? | ??14条评论
布局能力或许是Web前端工程师对CSS的最基本的诉求,当开始进入到这个岗位,就避免不了要和CSS打交道,而和CSS交往,布局当然是不可或缺的。
很遗憾的是,CSS2.1之前都没有出现真正意义上的布局属性,直至现如今的CSS3,才开始出现了一些,如:flex, grid 等,不过其兼容性及国内浏览器的使用情况,真令人捉急。
不过,有需求就会有变通,对于达成布局目的,已衍生出各式各样的方法,如:float, inline-block, table, absolute 等等。
其实,这个话题有点脱离?margin?的能力范围,因为单纯的?margin?并无法完成复杂布局,它更多做的是辅助,但却又难以替代。
两栏结构应该是最常见和经典的网页呈现之一吧?如下?图一:
classsic layout
(图一)
相信对于这样一个网页呈现,你不会陌生。那么你有多少种方案可以达成该布局?我想,4至5种应该是保守估计吧?
这次,我们只看?margin?是如何做的。
如上关键代码,我们即可实现?图一?布局,该布局有一个特点就是,#main?可以自适应可用空间。
假定?HTML?是给定的,我们来解读一下?CSS?代码:
我们知道块级元素的特性之一是换新行,也就是说,如果想让?#main?和?#aside?在同行显示,我们要么改变其显示属性为?inline-level(即之前说的inline-block布局方式),要么改变其流方式(absolute, float, flex and etc…)。
如上述代码,我们使用了?absolute,即让 ‘#aside’ 脱离常规流,通过绝对定位到想要的位置。
同时你会发现,我们并有改变?#main?的显示属性或者流方式,也就是说其仍然具备块级元素的特性,所以它会自动适应剩余宽度,即我们常说的自适应宽度。
我们并不希望?#main?区域会包含?#aside?在内,于是利用?margin?给 ‘#aside’ 预留出足够其显示的空间,即可达成我们所要的布局。
可能你会问为什么是?margin-left:210px?而不是?200px,实际确实应该是?200px,多出来的?10px?只是为了创建一个列间隙,与布局实现无关。
来看看具体的实现?DEMO1:?margin+absolute布局:左栏固定主内容自适应
就这样,是不是很简单?其实它还有亮点,那就是:
在不修改?HTML?的情况下,只需简单的修改?CSS,我们即可让左右两栏的顺序调换,来看代码:
其实现原理没变,同样看看?DEMO2:?margin+absolute布局:右栏固定主内容自适应
可以更Cool一点,你觉得呢?很多时候,你也许会考虑到,不论在何种情况下,总想保证主要的内容优先于次要的内容呈现给用户,那么,怎么做?
很简单,只需要将主要内容的HTML排在次要内容的HTML之前即可,因为它是顺序加载渲染的。我们可以这样:
是的,我们只需要将?#main?的HTML挪到?#aside?的HTML前面,令人兴奋的是,改变HTML之后,CSS不需要做任何改变。我们来看?DEMO3:?margin+absolute布局:左栏固定主内容自适应,主内容有限显示
当然,调正列顺序的?DEMO4:?margin+absolute布局:右栏固定主内容自适应,主内容有限显示也同样简单,我们只需要写HTML时注意一下即可。
列举了?absolute+margin?布局的很多优点,但只说一个问题,就足以让你在是否选用这种方式时深思熟虑,是什么呢?
我们知道?absolute?是定位流,脱离正常排版,也就是说绝对定位元素不影响其上下文的排版方式,你意识到我想说什么了么?
OK,用代码来演示:
看完代码,估计你猜到了。是的,#aside?无法撑开父元素的高度,它将会溢出父元素区域,结果如下图:
classsic layout
(图二)
来看看这缺陷所导致的情况?DEMO5:?margin+absolute布局的致命缺陷
此时假设你设置父元素?overflow:hidden?那么溢出部分将会被裁减,同样不符合布局意图,无法可破。所以在内容量不可控的场景,不推荐使用这种方式。
和?absolute + margin?方式一样,float + margin?方式一样是经典的利用来布局的方案,并且被更广泛使用。我们仍然以?图一?为例,来看代码:
如上述代码,我们使用了?float,即从图文环绕形态演变而来。当?#aside?定义了?float,那么紧随其后的元素将会环绕在其周围。不过环绕并不是我们想要的结果,我们想要的是 ‘#main’ 也自成封闭矩形,所以利用?margin?留出
您可能关注的文档
- 第一课离家的时候课件.ppt
- 第一课社会主义建设道路的初期探索课件.ppt
- 第一课窃读记课件.ppt
- 第一讲日本动漫赏析课件.ppt
- 第一课第二框(关于世界观的学说)课件.ppt
- 第一课藤野先生课件.ppt
- 第一课美术及其社会功能课件.ppt
- 第一轮复习世界气候类型的成因、分布、特征及判读技巧课件.ppt
- 第一课第2框少年有梦课件课件.ppt
- 第一讲从ARM到Kinetis课件.ppt
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
文档评论(0)