利用负边距技术制作自适应宽度布局的网页

2016-02-20 00:20 13 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - Web开发 】

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

合理使用负边距技术,可以帮助我们创建很多有意思的布局,比如自适应浏览器宽度的流体布局。国外关于使用负边距创建这类布局的技术文档,我看到的最早是04年 Ryan Brill 发表在 A List Apart 上的 《Creating Liquid Layouts with Negative Margins》 (04年 - -!国内刚小部分人开始关注WEB标准化),本文亦可看做是对其的中文翻译版。

随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。目前国内门户很多都进行了改版,采用目前的主流--960px左右的宽度。

我认为,对于不太复杂的网站,采用百分比进行架构是个不错的主意。自适应布局的应用面还是蛮多的,比如论坛页面、博客页面等。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。

这里需要的用到的技术关键点就一则:负边距。

OK。我们现在开始。假设现在需要给自己的博客重新制作前台,界面的设计已经完成,就差代码架构。我们希望博客的界面可以做到:左侧的主要部分是博客文章内容,这部分需要在不同分辨率浏览器下自适应宽度;而右侧是侧边栏,这部分我们想做成一个固定250px宽,预期效果图如下:

这是个典型的两栏布局,我们来做一个初步的架构

div id="header"顶部区域/div
div id="mainer"
h1使用负边距创建自适应宽度的流体布局/h1
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
/div
div id="sideBar"
h2最新文章/h2
ul
li最新文章一/li
li最新文章二/li
li最新文章三/li
/ul
/div
div id="footer"底部区域/div

查看


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

这是在没有样式表的情况下页面的显示效果。下面我们给它加上基本的样式表

body,p,h1,h2,ul {
margin:0;padding:0;
}
#header {
background-color: #A8A754;
}
#footer {
background-color: #A8A754;
clear: both;
}
#mainer {
width: 100%;
margin-right: -250px;
float: left;
}
#sideBar {
float: right;
width: 250px;
}

定义mainer右边距为-250px,使得右边得以空出侧边栏的宽度,放置侧边栏。加上样式表页面请查看。


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

OK,现在我们看到左侧的内容区域已经为侧边栏空出了相应的空间,使得侧边栏放置在了它应该出现的位置。

我们这时会发现,左侧的文字内容部分却和侧边栏有重叠。这时候我们需要另外的一个DIV层,来将左侧文字部分设置一个足够大的右边距,使其不与侧边栏重叠。并将左侧内容部分与侧边栏部分设置不同背景色,以示区分。

div id="mainer"
div id="main"
h1使用负边距创建自适应宽度的流体布局/h1
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
/div
/div

增加的CSS

#sideBar {
color: #FFF;
background-color: #36361A;
}
#main {
margin-right: 250px;
background-color: #616030;
}

查看


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

这时候我们又发现了一个问题:如果左侧长度继续加长,那么,右侧侧边栏的下部会出现空白。我们希望可以实现视觉上的左右两栏自适应等高。

这里我们可以给外层的mainer DIV设置一个右对齐纵向重复的背静图片,图片的宽度我们设置为250px,即同侧边栏宽度相同。

CSS部分我们加上

#mainer {
background: url(bj1.jpg) repeat-y right bottom;
}

多数时候我们并不想设置全部宽度为浏览器的宽度,多数时候我们会设置小于屏幕宽度的百分比。这种情况下,我们可以在左侧内容及右侧侧边栏外再套一个DIV层,并在侧边栏下加上一个清除浮动的层,来达到我们的目的。这个时候我们的XHTML会是下面这个样子。

div id="header"顶部区域/div

div id="wrapper" class="mid"
div id="mainer"
div id="main"
h1使用负边距创建自适应宽度的流体布局/h1
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
/div
/div

div id="sideBar"
h2最新文章/h2
ul
li最新文章一/li
li最新文章二/li
li最新文章三/li
/ul
/div
div class="clear"/div
/div

div id="footer"底部区域/div

相应的CSS

#wrapper {width: 92%;}
.clearing {clear: both;}
.mid {margin:0 auto;}

查看


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

Ryan Brill 在他的文章里说,外层的wrapper与里面的mainer两个DIV都应该设置背景 background,以便解决IE里的一个BUG。但我这里只设置了mainer DIV的背景,在IE6、IE7、FF里并未发现错误。可能他指的是IE5.x,这里忽略。

掌握了以上的方法,我们会发现制作一个三栏的布局也是很简单的!OK。下面我们把上面的例子变下,我们需要一个三栏的布局,2侧为固定宽度,中部为自适应宽度。这仅需要增加一点DIV。

div id="header" class="mid"顶部区域/div

div id="wrapper" class="mid"
div id="mainer"
div id="main"

div id="leftBar"
h2栏目标题/h2
ul
li文章标题/li
li文章标题/li
li文章标题/li
/ul
/div

div id="inmain"
h1使用负边距创建自适应宽度的流体布局/h1
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
p随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题。采用百分比进行架构是个不错的主意。以往我们进行这类架构都是使用table表格。但,其实使用很小的技术就可以创建出符合WEB标准化的自适应布局。/p
/div

/div
/div

div id="sideBar"
h2最新文章/h2
ul
li最新文章一/li
li最新文章二/li
li最新文章三/li
/ul
/div
div class="clear" /div
/div

div id="footer" class="mid"底部区域/div

以及另外一个背景图片

CSS部分增加:

#main {
margin-right: 250px;
background: url(bj2.jpg) #616030 repeat-y left bottom;
}
#leftBar {
float: left;
width: 150px;
}
#inmain {
margin-left: 150px;
}

现在来看看我们的页面,。


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

OK,大功告成~!!具体应用举例吗,俺的博客页面就是 ^ ^

来源:http://www.tulaoshi.com/n/20160220/1631687.html

延伸阅读
标签: Web开发
在制作网页的过程中,自适应问题是经常遇到,而又最让人头疼的,看了好多种解决的方法,但是都不是万能的。今天遇到这个问题,实在让我挠头,借鉴了 Shark的方法,又给了我一个新思路。当时没仔细看LBS的样式表,今天才发现,.clear用的就是这个方法。接下来,我会做个关于自适应高度问题的汇总,以便今后遇到问题时候更快解决。 为了解决...
标签: Web开发
页面内嵌不同的网页内容时,导致iframe的高度无法与实现内容或浏览器高度相匹配。窗口大小变换时,不能iframe不能进行自动调整。这里,我们利用JAVASCRIPT让IFRAME框架的高度自适应。 首先,写出如下的JS方法。 /**  * 内嵌页面的高度设置  */ function handleFrameLoad() {  var hDoc = getBodyHeight(document); &n...
随着移动端设备的猛涨,现在设计师们做网页也要经常考虑如何适应这些不同分辨率的屏幕了。今天腾讯游戏TGideas的Rukki与我们分享了关于自适应不同分辨率界面的几个技巧,非常实用,建议同学们学习一下。 首先呢来看一张图: 这是2个半月腾讯游戏官网的分辨率数据,可以看出来PC端里1024*768占20%、1920*1080占14%。而这2个分辨率的显示宽...
标签: Web开发
上中下三行布局,上下定高,中间栏自适应浏览器高度,且内容垂直居中。 firefox 2.0 / win ie 6/ win ie 7 /opera 8.5 cn/win safari 测试通过。 对于非ie内核浏览器,通过设定display:table、display:table-row和display:table-cell来模拟表格的表现形式。 最外层#box { display:table; },高度100%,其子层#header/#...
标签: Web开发
自适应高度的问题,采用 Div + CSS 进行三列或二列布局时,事先不知道具体高度,只能根据内容的增减自适应高度,要使两列(或三列)的高度相同,用 Table 很容易实现,但采用 Div + CSS 就显得比较麻烦了。按照一般的做法,大都采用背景图填充或 JS 脚本的方法使高度相同,但这些都不是最好的办法,我认为… 下面介绍采用“隐藏容器溢出”和“...

经验教程

122

收藏

70
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部