关注前端开发
关注用户体验

CSS3布局体验:灵活的盒子模型

CSS3标准里引入了一些新的盒子模型参数,在CSS2的基础上,我们将能更灵活地调整页面上各个容器的大小和位置,对建立自适应布局的页面带来很大的好处。

CSS3为开发人员带来了很多期待已久的炫目功能,同时在CSS2的基础中,它也增加了一些新的盒子模型参数。通过学习和测试,可以发现这种新的盒子模型布局对建立自适应布局的页面带来很大的好处。在这篇文章中,所有 例子都基于以下HTML代码:

<body>

<dividdivid=”box1″>1</div>

<dividdivid=”box2″>2</div>

<dividdivid=”box3″>3</div>

</body>

容器的排列

在通常的情况下,页面上所有容器的顺序都按照载入的顺序排列。而使用CSS3提供的功能后,我们可以在不改变HTML结构的前提下随意改变容器显示的位置,这样不但给排版带来极大的方便,我们也可以利用这些功能进行流量整形。在 需用使用灵活盒子模型(FlexibleBoxModule)的时候,我们需要先把其父容器的Display属性设置为box或者inline-box。

水平分布和垂直分布

我们可以通过box-orient属性指定容器的分布轴,当这个属性的值为vertical时其子容器将垂直分布(也可以为block- axis),当值为horizontal时其子容器讲水平分布(也可以为inline-axis)。在本文的第一个例子里我们使用以下的CSS:

#exemple1.content{
-moz-box-orient:horizontal;
-webkit-box-orient:horizontal;
box-orient:horizontal;
}
#exemple1.boite{
-moz-box-flex:1;
-webkit-box-flex:1;
box-flex:1;
}

具体的效果可以看这个DEMO,三个子Div容器都横向并列了。

注:这个效果在CSS2里理论上也可以通过Display:inline;实现,但由于某些浏览器的BUG,没人会这样做。

反序排列

box-direction属性可以让我们随意改变容器的显示顺序。我们知道,在默认的情况下,block级元素是按照加载顺序从上到下排 列,inline级元素是从左到右排列的,但现在通过box-direction属性我们可以让最后加载的block级元素显示在最顶部,最后加载的 inline级元素显示在左边。

但在使用这个属性的时候要注意它可能会改变元素的某些属性,产生一些不能控制的效果。在第二个例子里,我们使用以下的CSS:

#exemple2.content{
-moz-box-orient:vertical;
-moz-box-direction:reverse;
-webkit-box-orient:vertical;
-webkit-box-direction:reverse;
box-orient:vertical;
box-direction:reverse;
}
#exemple2.boite{
-moz-box-flex:1;
-webkit-box-flex:1;
box-flex:1;

}

我们不但可以让一组同级容器反序排列,而且还可以让它们按自己喜欢的顺序排列,box-ordinal-group属性可以帮我们做到这一点。 通过box-ordinal-group为各个容器指定一个序号,默认情况下他们将会按照序号递增的顺序排列。要注意的是:没有指定序号的容器默认都为 1,并且序号相同的元素将按照加载顺序排列。大家可以看一下下面的CSS:

#exemple3.content{
-moz-box-orient:vertical;
-moz-box-direction:reverse;
-webkit-box-orient:vertical;
-webkit-box-direction:reverse;
box-orient:vertical;
box-direction:reverse;
}
#exemple3.boite{
-moz-box-flex:1;
-webkit-box-flex:1;
box-flex:1;
}
#exemple3.v1{
-moz-box-ordinal-group:2;
-webkit-box-ordinal-group:2;
box-ordinal-group:2;
}
#exemple3.v2{
-moz-box-ordinal-group:2;
-webkit-box-ordinal-group:2;
box-ordinal-group:2;
}
#exemple3.v3{
-moz-box-ordinal-group:1;
-webkit-box-ordinal-group:1;
box-ordinal-group:1;
}

效果大家可以看这个DEMO。可以发现,在不改变HTML结构的情况下,容器的排列顺序改变了。
按指定顺序排列

在上面的CSS里,我把第一和第二个容器的序号都定为2,第三个容器序号为1,因此最终效果应该是v3排在第一,v1和v2则根据加载顺 序,v1排在v2前面。效果可以看这个DEMO。

后记

CSS3真的非常强大,我相信在它普及以后,我们做网页的时候将可以减少大量的JavaScript。

未经允许不得转载:大前端 » CSS3布局体验:灵活的盒子模型
分享到:更多 ()

评论 15

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #8

    不是原创就把链接地址附上吧!而且你这代码也有问题。

    丶丶壹5年前 (2013-01-25)回复
  2. #7

    I think you have remarked some very interesting details , thankyou for the post.

    payday loans wisconsin6年前 (2011-03-25)回复
  3. #6

    Are you considering interchanging backlinks?

    Suzie Barn6年前 (2011-03-09)回复
  4. #5

    great site u have here

    Alejandrina Mcclerkin6年前 (2011-03-08)回复
  5. #4

    The only place you’ll find success before work is in the dictionary

    buy cheap Tegretol6年前 (2011-03-07)回复
  6. #3

    It’s well known that cash makes people autonomous. But what to do if someone has no cash? The one way only is to get the mortgage loans and term loan.

    RodgersHilda306年前 (2011-03-06)回复
  7. #2

    @bolo:不是原创,感觉挺好就拿来分享了,有什么问题吗?

    k27年前 (2010-09-10)回复
  8. #1

    你敢说这文章是大前端原创的?真不要脸

    bolo7年前 (2010-09-10)回复

themebetter 国内更好的WordPress主题服务商

立即前往