当今的WEB应用要适应各种不同的大小的显示器,很多HTML元素支持百分比,可以完成比例布局。但实际的布局不只有百分比,也有固定大小的部分,单纯使用百分比是无法实现的。通常要实现这一布局自适应,传统的方法是用frame来实现,但是会存在页面加载不一致、搜索引擎收录困难等问题。现在一般用CSS或javascript技术来实现,有时还需要两者结合使用。
CSS实现布局主要是靠CSS的绝对定位和边距设置,来看HTML内容:
<body>
<div id="framecontentLeft">left</div>
<div id="framecontentTop">top</div>
<div id="maincontent">content</div>
</body>
三个div标签分别是左边和上边的固定大小部分和可变大小的内容区域。加在以上元素上的样式表如下:
body{
margin: 0;padding: 0;border: 0;overflow: hidden; height: 100%; max-height: 100%;
}
#framecontentLeft, #framecontentTop{
position: absolute; top: 0; left: 0; width: 200px; height: 100%; overflow: hidden;
background-color: navy; color: white;
}
#framecontentTop{
left: 200px; right: 0;width: auto;height: 120px; overflow: hidden;
background-color: blue; color: white;
}
#maincontent{
position: fixed; left: 200px; top: 120px; right: 0; bottom: 0; overflow: auto;
background: #fff;
}
上面的样式指定了页面的大小显示区的100%,对左边设置了宽度,对上边设置了高度,对内容区设置了左边距和上边距,都采用绝对定位。如果要继续在内容区中使用百分比,需要把定位方式设置为fixed。大多数现现代浏览器都支持以上样式,fixed和max-height这样的属性IE6不支持,需要添加以下样式:
* html body{ padding: 120px 0 0 200px; }
* html #maincontent{ height: 100%; width: 100%; }
* html #framecontentTop{ width: 100%;}
实现中没有采用css表达式是考虑性能问题将来的浏览器可能不支持。以上方式不支持嵌套,但内容区可以使用百分比。如果内容区有固定大小的元素,还有需要大小自适应的元素,建议使用javascript来计算并设置元素的高度和宽度。
以CSS方式实现比较简洁,不影响性能,如果是特别复杂的嵌套布局,可以采用javascript布局组件。当前可以选择jquery UI.Layout plug-in 和jLayout。它们的缺点是前者要引入30多K的脚本文件,后者只有几K但是需要页面是XHTML规范。在项目中具体采用哪种方式,要根据非功能性需求来进行选择。
分享到:
相关推荐
Javascript,Html,Css,Frame,Frameset框架整合的菜单,左则菜单可以收缩,上面菜单有并排的子菜单!
而国外也开始有很多的CSS Frame出现。css框架已经是我们必须研究解决的一个问题。如果更快速、有效、可扩展的去书写站点的CSS代码。这里为大家介绍一个CSS框架 – Elements 下载地址:...
通过Dreamweaver.CS3学习HTML+DIV+CSS教学PPT第10章__网页框架Frame
DIV+CSS实现的框架,兼容IE6,7,8,9。效果如同用frameset,支持左侧缩进,左侧内容溢出会出现滚动条
1、动态加载js,css文件(用原生js和jquery) iframe结构: frame0(父) frame2(子) frame3(子) frame2中触发事件,动态的向frame3中 加载js、css文件和 dom元素? *同级之间可以调用,可以 通过 子-父-子 的方式...
一个 CSS3 帧动画 demo DEMO地址:
- UniGroupBox: CSS frame margin bug (IE) - TUniLabel: AutoSize problem - UniFileUpload: several changes - UniFileUpload: File names containing Unicode chars are returned correctly - Change color of ...
利用HTML+CSS3技术设计一个简单的用户信息管理系统 二、实验内容 1.使用图像标签,创建一个使用图标...7.使用框架集(frameset标签、frame标签和CSS)或DIV+CSS布局完成项目首页,然后点击菜单时,始终跳转到框架集中。
link href="css/style.css" type="text/css" rel="stylesheet" /> [removed] function ShowHideLeft(id){ var imgid=document.getElementById("aimg"); if (parent.document.getElementById('pageframe').cols==...
Chrome Frame 是 Google 推出的一个针对 IE 6,7,8 开发的免费开源的浏览器插件,它可以让IE浏览器使用上webkit 内核。使用该插件后,用户的 IE 将获得和Chrome浏览器一样的高性能和丰富的功能,例如高速的...
Frame.css
NULL 博文链接:https://jsufly.iteye.com/blog/648867
Dreamweaver学习HTML+DIV+CSS教学PPT第10章__网页框架Frame.pptx
React框架 在iframe中对组件进行React以实现独立CSS样式安装npm install react-frame --saveyarn add react-frame演示版用法< Frame styleSheets = { [ 'frame1.css' ] } css = { 'body{background-color:#eee;}'...
在使用css 的animations 属性时,首次加载循环会出现白色的间隙,看着有点像页面有刷新的感觉,后面每次循环就不会再有这个问题 问题演示 //html <div class=first> //less .container { width: 100vw; ...
霓虹灯架HTML和CSS
经典的系统框架,集成了很多CSS样式内容,下载可直接使用。
“ animation-frames-timing-function”目录包含一个简单的示例,演示了CSS动画和过渡可用的steps()计时功能与新的frame()计时功能之间的区别。 。 您还可以找到显示和相同的计时功能的版本。 “ counter-...
安装使用npm install安装 framebusting 使用node index.js 3001启动良好的服务器使用node index.js 3002启动坏服务器浏览到然后浏览到。结果好的站点上的页面提供X-Frame-Options标头设置为sameorigin 。 当坏站点...
FRAME是一个简单,响应Swift的样板,并且是面向未来的基本UI框架。 它结合了强大的网格系统和各种JavaScript实用程序类。 npm install frame-ui bower install frame-ui #有关文档,请转到 高级用法 运行npm ...