用户定制Web页中元素的排版布局策略

简介:

  在"Web页中的HTML元素的排版布局规则"一文中,我们简述了browser是以怎样的策略来排版布局的,但很多时候默认的排版却不能完全满足我们的需要,所以我们还需要靠自己来定制Web页中HTML元素的排版布局策略。

    我们可以使用这些下css属性来定制页面的显示效果,它们是:clear、float、clip、overflow(又可分别分为overflow-x和overflow-y)、display和visibility。不过属性clipoverflowvisibility不是我们关心的重点,因为它们虽然影响页面的最终显示的效果,可是它们却不能影响browser里元素的布局规则。 

     我们可以查看msdn看看clearfloatdisplay的详细含义,简单说一下呢。这三个css属性都是影响我们在'规则'一文中说道的HTML元素的inline-level和block-level问题的。其中clear和float是相对的两个属性,clear:none是默认值,允许元素两边都有inline-level的box存在;clear:left,不允许元素左边有inline-level的box存在;clear:right,不允许元素右边有inline-level的box存在;clear:both,不允许有inline-level的box存在于一行。float:none是默认值,元素不漂浮;float:left,元素漂浮于对象布局流的右边,float:right,元素飘浮于对象布局流的左边。 

    属性display看起来比较麻烦,因为它有很多的取值,可是实际上我们可以简单的把display属性看成是用来定义box的level方式的,到底是inline的还是block的。比如我们知道div默认是block-level的,我们可以使用<div style="display:inline">...</div>,它就变成inline-level的了,同时它也就遵循inline-level的排版布局策略了。display属性着重的是描述元素的render方式,所以当我们使用display:none时,元素将完全的消失掉,就和html代码中没有这个元素的显示效果一样(当然元素仍然在DHTML树中,可以使用脚本取到)。顺便插一句,display:none和visibility:hidden的区别,元素如果设置了属性后者,虽然也是不会再显示出来了,可是该元素的物理位置却是被browser保留了的,页面中将会显示一个和元素bounds一样的空白区域。 

    布局说完了,再来说一下元素的定位问题,定位是由属性:position、top(还有left、right、bottom,下面简称为TLRB)和z-index来控制的。其中TLRB四个属性是依赖于position的取值而起作用的,position取值为static、absolute和relative。如果postion取static,TLRB将不会起任何的定位作用;position取absolute,TLRB将把其所在的viewport(下面有解释)的左上角作为top和left的(0,0)起点,由此来定位元素;position取relative,TLRB将把元素本来布局流中的位置的左上角坐标作为top和left的(0,0)起点,并由此来定位元素。比如代码:

< div  id ="div1"  style ="border: solid 1px blue; width: 200; height: 200; position: absolute;
    top: 50; left: 50"
>
     < div  id ="div2"  style ="border: solid 1px green; width: 100; height: 100; position: absolute;
         top: 25; left: 25"
>
     </ div >
</ div >

    将显示为:
   
    上面说到的viewport是什么呢?在这个示例中,对于容器元素div来说,div1圈起来的蓝色区域就是div2的viewport,所以div2的position虽然是absolute,但是它的top&left(25,25)却不是相对于上图中的(0,0)。所以在viewport中定位元素时,要仔细却别于position为relative时的情况,虽然代码:

< div  id ="div1"  style ="border: solid 1px blue; width: 200; height: 200; position: absolute;
    top: 50; left: 50"
>
     < div  id ="div2"  style ="border: solid 1px green; width: 100; height: 100; position: relative;
         top: 25; left: 25"
>
     </ div >
</ div >

的显示效果和上图相同,但是元素的定位原理却是不同的。 


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。 

目录
相关文章
|
1月前
|
运维 负载均衡 安全
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
97 0
|
15天前
|
缓存 前端开发 JavaScript
Web应用性能优化策略
Web应用性能优化策略
|
20天前
|
前端开发 开发者 UED
移动优先:响应式设计在现代Web开发中的实践策略
【10月更文挑战第29天】在现代Web开发中,响应式设计已成为不可或缺的实践策略,使网站能适应各种设备和屏幕尺寸。本文介绍了移动优先的设计理念,对比了移动优先与桌面优先的策略,探讨了流式布局与固定布局的区别,详细讲解了CSS媒体查询的使用方法,并强调了触摸和手势支持及性能优化的重要性。
31 1
|
23天前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
61 4
|
22天前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
49 2
|
1月前
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
55 5
|
1月前
|
缓存 前端开发 JavaScript
探索现代Web开发中的前端性能优化策略
【10月更文挑战第5天】探索现代Web开发中的前端性能优化策略
|
1月前
|
缓存 前端开发 JavaScript
构建高性能Web应用:优化前端性能的策略
构建高性能Web应用:优化前端性能的策略
|
2月前
|
存储 前端开发 JavaScript
浅谈Web前端安全策略xss和csrf,及又该如何预防?
该文章详细讨论了Web前端安全中的XSS(跨站脚本攻击)和CSRF(跨站请求伪造)攻击原理及其防范措施,帮助读者了解如何保护Web应用程序免受这两种常见安全威胁的影响。
浅谈Web前端安全策略xss和csrf,及又该如何预防?
|
2月前
|
中间件 API 开发者
深入理解Python Web框架:中间件的工作原理与应用策略
在Python Web开发中,中间件位于请求处理的关键位置,提供强大的扩展能力。本文通过问答形式,探讨中间件的工作原理、应用场景及实践策略,并以Flask和Django为例展示具体实现。中间件可以在请求到达视图前或响应返回后执行代码,实现日志记录、权限验证等功能。Flask通过装饰器模拟中间件行为,而Django则提供官方中间件系统,允许在不同阶段扩展功能。合理制定中间件策略能显著提升应用的灵活性和可扩展性。
40 4
下一篇
无影云桌面