文档布局与定位梳理

背景:

Web Excel项目在继续,坑爹的项目,从前到后都需要我搞(o(╯□╰)o)!一会儿写JS一会儿写Java,还得附带美工、产品的技能!思维真的难以转换,经常在JS中写int num =0,JS还检测不出来。今天研究梳理的是Web前端技术,文档定位以及Box-sizing属性,因为项目中关于这块儿的控制很多。

我感觉Web前端最难的就是文档定位的这一块儿,用起来感觉要比Swing和WPF困难,在Swing中可以使用多种布局,比如BorderLayout / GridLayout / BoxLayout等等,而且Java是强语言,不管用相对布局还是绝对布局,用Java程序控制使用起来比较顺手。WPF更简单,VS的可视化工具不用多说,可算“史上最强大的”开发工具。一套拖拉拽,然后再适当改改配置文件,写写C#代码什么的,也很容易。

在Web中要进行元素定位或者文档布局可使用的方法很多,其实有的时候太灵活了用不是什么好事儿,起码对于我们开发来说,灵活的文档布局就需要我们有更多的经验,掌握更多的资料,来挑选最“合适的”技术。

1.Table布局

Table布局是最简单也最让人熟知的,很多初学Web开发技术的都会用Table进行布局,Table布局对初学者来说没什么不好,简单,好控制,基本上想要什么结构都能“画”出来。很多Web可视化编辑器也都支持Table的托拉拽布局。

2.Iframe布局

我认为这可以称为一种布局方式,比Table还简单,后台管理框架最常用的布局方式,把一个页面拆分为多个页面,也不错。尽管很多资料都在说不用iframe什么的,但是现在很多Web应用都还在用,适当使用,很有好处。比如163,比如office online都有适当的使用,虽然不一定是用来布局。

3.DIV+CSS布局

现在的主流布局方式,利用流式、相对、绝对定位等方式,能编写非常精美的高效的页面。DIV布局比Table布局要难,而且要注意浏览器兼容性,要不然页面很容易乱掉。DIV布局相对Table布局的好处,网上可以搜到很多,不多说。记得有一次面试还被问过DIV布局和Table布局的区别,最重要的一点:DIV相对Table来说性能要高,可以按层渲染,而Table要整体刷新,所以会有很明显的延迟。

从浏览器渲染的角度来说,table的某个td进行reflow很有可能导致整个table的reflow,这是比较恐怖的。

4.技术选择

在实际中选用哪种布局方式,没有什么标准,而且Web前端本身就没那么统一的标准。选用什么技术看实际项目,以及项目成本和要求,而且经常会3种技术相结合,比如我们现在正在使用。外部用iframe技术加载内容页,而内容页,用DIV技术进行响应式布局;但是控件,先用Table进行框架布局,然后用DIV+CSS在局部进行绘制于控制,这样能有很好的页面稳定性。当需要展示数据的时候,用Table非常容易。

5.三种文档定位方式

在DIV+CSS的布局中,很重要的一点就是文档定位,分三种:普通流、浮动和绝对定位,固定定位。主要理解元素的display / position已经float属性,想要进行精确定义一定要理解Box Model也就是盒子模型,这个很复杂,网上教程很多,先要理解W3C的定义,然后看看IE这个奇葩有什么不同,其实Box Model就是对一个元素如果确定大小的解释。

W3C很明确的告诉我们,在HTML页面中一切皆是框,通过display属性,我们可以让元素变成不同的框,或者用none属性,让它不出现在renderTree中,然后通过position属性,告诉浏览器,这个元素该相对谁来定位,最后通过float、top、left等属性,控制定位时的一些具体内容。

在H5中有一个Box-sizing属性,这个已经被绝大部分浏览器支持了,使用这个属性,我们可以指定元素的盒子模型,很多时候,用IE的盒子模型是很利于编程计算的,比较,我们希望指定了一个元素的width后,就不在程序中考虑它的border、padding等内容了。这样可以很好的降低程序复杂度。

最后,项目目前效果,为了实现冻结行列功能,这几天头发都掉了好几根!!!

时间: 2024-10-22 22:46:24

文档布局与定位梳理的相关文章

文档流和定位的查漏补缺

文档流:自上而下分成一行一行,每行中从左至右的顺序排列元素.网页大部分对象都占用文档流. 定位: float 浮动比较有用的是,前面的内容设置浮动后,如果不进行清除,后面的标签会跟上来,且标签里面的内容会排在设有浮动标签的后面,但其标签是占有整行的. position position设置了absolute,不对其设置left或top的话是不会改变位置的. 如果设置top负值的话有以下几种方法 margin-top:-10px; position:relative/absolute; top:-

第六十四节,html文档布局元素

html文档布局元素 学习要点:     1.文档元素总汇     2.文档元素解析     本章主要探讨HTML5中文档元素,文档元素的主要作用是划分各个不同的内容,让整个布局清晰明快.让整个布局元素具有语义,进一步替代div. 一.文档元素总汇     文档元素基本没有什么实际作用效果,主要目的是在页面布局时区分各个主题和概念.         元素名称                                 说明          h1~h6       表示标题         

文档流&浮动&定位

文档流指元素在文档中的位置由元素在html里的位置决定,块级元素独占一行,自上而下排列:内联元素从左到右排列脱离文档流的方式: 浮动,通过设置float属性 绝对定位,通过设置position:absolute 固定定位,通过设置position:fixed 定位 1  relative,relative元素框偏移某个距离.元素仍保持其未定位前的形状,它原本所占的空间仍保留.它的主要效果是使元素偏离正常的位置,其他元素不会调整位置来弥补其偏离后留下来的空隙.其与 absolute 不同,其偏离对

脱离标准文档流(2)---定位

定位 三种定位 可以使标准流脱离的定位:绝对定位,固定定位. 相对定位 属性值:relative(相对的)----权当我复习了一边英语单词. 下面是我对于相对定位的理解: 绝对定位在某种程度上相当于灵魂出窍(脑洞大开),也就是说那些被我们通过偏移量所移动的元素,他们的灵魂仍在原来的位置,我们所看到的是实体. 但是客观一点来说的话,就是相对定位无法使标准流脱标,所以我们所移动的元素仍是标准流,标准流的特点就是独自占有一行,一个标签换一次行. 图示如下:       我们可以看出来蓝色块已经不再原处

前端(七)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 文档流本质是 nomal flow (普通流.常规流) 3.BFC(Block Formatting Contxt) 块级格式化上下文,它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干 4.BFC的规则

内联元素的盒子模型与文档流定位padding属性

        内联元素的盒子模型 1.内联元素不能设置width宽度和高度height span{width:200px ; height:200px}   与     span{width:100px ; height:100px}   表现效果相同,由此可见内联元素不可以设置高度和宽度 2.内联元素可以设置水平方向的内边距padding-left或padding-right span{padding-left:20px ; padding-right:200px} 3.内联元素可以设置垂直

文档流、浮动 、定位的概念【转】

原文链接:https://blog.csdn.net/qq_40028324/article/details/80035129 1.文档流 - 所有的元素默认情况下都是在文档流中存在的- 文档流是网页的最底层- 元素在文档流中的特点:- 块元素1.默认宽度是父元素的全部2.默认高度被内容(子元素)撑开3.在页面中自上而下垂直排列- 内联元素1.默认高度和宽度都被内容撑开2.在页面中自左向右水平排列,如果一行不足以容下所有的元素则换到下一行继续从左向右 2.浮动- 使用float来设置元素的浮动-

DOM中关于脱离文档流的几种情况分析

所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版中拿走. 当前所知的脱离文档流的方式有两种:浮动和定位. a.定位属性positon 先看一下定位.看一段对定位各个字段的描述,有助于理解 值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top&q

三种可视化格式模型:普通文档流、相对定位与绝对定位、浮动

在CSS中是有三种定位机制的:普通文档流.浮动和绝对定位.在未指定其它两种定位机制的情况下,所有框都是在普通文档流中定位的. 普通文档流: 普通文档流,顾名思义,就是根据块级元素的标签在HTML里的顺序,像水流一样,从上至下.当然对于行内元素而言,还是在一行中水平排列的. 这里插入一个积累的小知识点. 行内元素可 以在水平(内间距.边框.外边距)方向上修改它们水平尺寸,但是在垂直方向上对行内元素的高度是毫无影响的,还有就是直接定义行内元素的 width/height也是毫无影响.对与行内元素来说