html弹性盒子布局,实例讲解CSS3中的box-flex弹性盒属性布局

box-flex是css3新添加的盒子模型属性,它的出现打破了我们经常使用的浮动布局,实现垂直等高、水平均分、按比例划分。但是它有一定的局限性,在firefox、chrome这浏览器下需要使用它们的私有属性来定义:firefox(-moz)、chrome(-webkit)。

一、box-flex属性box-flex主要让子容器针对父容器的宽度按一定规则进行划分。

CSS Code复制内容到剪贴板

111
222
333

.box {

display:box;

display:-webkit-box;

display:-moz-box;

background-color:#fff;

width:500px;

height:100px;

border:1pxsolid#333;

margin:0auto;

}

.col_1 {

box-flex:1;

-moz-box-flex:1;

-webkit-box-flex:1;

background-color:#ffc;

}

.col_2 {

background-color:#ccf;

box-flex:2;

-moz-box-flex:2;

-webkit-box-flex:2;

}

.col_3 {

background-color:#fcf;

box-flex:2;

-moz-box-flex:2;

-webkit-box-flex:2;

}

3c78a57428b83436273438ecb3f80a7f.png

注意:

父容器必须定义为display:box,其子容器才可以进行划分(如果定了display:box则该容器为内联元素,使用margin:0 auto让其居中在firefox下无效,需要通过父容器的text-align:center;来控制。但在chrome下是可以的)

上面所讲到的例子中,三个子块分别设置了1、2、2,也就是把这个父容器分成5份,分别占据了父结构宽度的1/5(100px)、2/5(200px)、2/5(200px)。

以上是按比例数来进行划分的,如果其中一个或多个子容器设置了固定宽度,其它子容器没有设置,那么设置宽度的按宽度来算,剩下的部分再按上面的方法来计算。

CSS Code复制内容到剪贴板

.col_3 {

background-color:#fcf;

width:50px;/*设置宽度为50px*/

}

c466daf36e7c89e9e53554730664568d.png

当子容器中需要有间隔的时候,他们平分的宽度需要减去中间的margin,然后再按比例平分。

CSS Code复制内容到剪贴板

.col_2 {

background-color:#ccf;

box-flex:2;

-moz-box-flex:2;

-webkit-box-flex:2;

margin:020px;

}

f402ee36694587bcac33e9544898ae92.png

二、box属性上面讲到的是如何将box-flex如何对父容器的宽度进行划分,现在来说一下父容器里面的box属性包括哪些。

box-orient, box-direction, box-align, box-pack, box-lines

1、box-orientbox-orient用来确定父容器里子容器的排列方式是水平还是垂直,可选属性如下:

horizontal | vertical | inline-axis | block-axis | inherit

horizontal和inline-axis属性其效果表现一致,都可以将容器水平排列,在默认情况下也呈现水平排列的样式。当父容器设置高度时,在firefox下面其子容器的高度无效,但chroma下面则有效。

CSS Code复制内容到剪贴板

.col_1 {

height:50px;

}

.col_2 {

height:80px;

}

6d3cacd32c550b729db7f58143e3c52b.png

如果你容器不设置高度,子容器的高度值才生效,在firefox下面他们的高度取其中的最大值。而chrome下面设置高度的子容器为自己的高度,未设置的其高度和最大值的高度一样,其实就是和父容器的高度一致。

CSS Code复制内容到剪贴板

.box {

/*未设置高度*/

}

.col_1 {

height:50px;

}

.col_2 {

height:80px;

}

.col_3 {

/*未设置高度*/

}

989aea3e0149112e97c27da00e99ef7a.png

9452128e631ea82cb976f6d8d23cbb73.png

vertical和block-axis属性效果表现一致,都可将子容器垂直排列。他们是对父容器的高度进行分配。如果子容器设置了宽度,也是谷歌下面有效,火狐无效,其它都与horizontal表现一致。

8b17413004c78964d49879cc2584bc50.png

b40f552f2c3ca8693d86907247304993.png

2、box-directionbox-direction用来确定父容器里面的子容器排列顺序,具有以下属性:

normal | reverse | inherit

normal是默认值,如上面测试结果。

reverse表示反转,其表现方式跟normal相反,呈现为3、2、1

4f53c2798aecf8a1075db2c5a759a0c9.png

3、box-alignbox-align表示父容器里面子容器的垂直对齐方式,属性值为:

start | end | center | baseline | stretch

start、baseline展示效果

33339adc57b2686538f5b708f60189ad.png

end展示效果

535d460e097e3a478c1fcf9276c91be6.png

center展示效果

aa8e53a9a134996de9c75b6fd6699ea5.png

stretch展示效果,(谷歌下面如start)

dc64ba8ae0199e4a7e852f465a598911.png

4、box-packbox-pack表示父容器里面子容器的水平对齐方式,可选参数如下所示:

start | end | center | justify

css代码

CSS Code复制内容到剪贴板

.box {

display:box;

display:-webkit-box;

display:-moz-box;

background-color:#fff;

width:500px;

border:1pxsolid#333;

margin:0auto;

height:100px;

-webkit-box-pack:start;

-moz-box-pack:start;

box-pack:start;

}

.col_1,.col_2,.col_3{

width:100px;

}

start:在box-pack表示水平居左对齐,如下所示:

3c77b384f78edf0c6821441528961015.png

end:在box-pack表示水平居右对齐,如下图所示

af7a52824a4db4b9d83ae0d7f1e30a84.png

center:在box-pack表示水平居中对齐,如下图所示

47e891f859549d4e746b19f2ee687fc3.png

justify:在box-pack表示两边对齐试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用 CSS Box Orient 布局的示例: HTML 代码: ```html <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> </div> ``` CSS 代码: ```css .container { display: flex; flex-wrap: wrap; gap: 10px; box-orient: horizontal; box-pack: center; box-align: center; height: 200px; background-color: #f1f1f1; } .item { width: 80px; height: 80px; background-color: #333; color: #fff; display: flex; justify-content: center; align-items: center; font-size: 24px; } ``` 解释: - `display: flex;` 启用 Flexbox 布局。 - `flex-wrap: wrap;` 让子元素在一行放不下时换行。 - `gap: 10px;` 为子元素之间添加间距。 - `box-orient: horizontal;` 指定主轴方向为水平方向。 - `box-pack: center;` 指定在主轴方向上如何对齐子元素,这里是居对齐。 - `box-align: center;` 指定在交叉轴方向上如何对齐子元素,这里是居对齐。 - `height: 200px;` 指定容器的高度。 - `background-color: #f1f1f1;` 设置容器的背景色。 - `.item` 类是子元素的样式。 - `width: 80px;` 设置子元素的宽度。 - `height: 80px;` 设置子元素的高度。 - `background-color: #333;` 设置子元素的背景色。 - `color: #fff;` 设置子元素的文本颜色。 - `display: flex;` 让子元素也启用 Flexbox 布局。 - `justify-content: center;` 指定子元素在主轴方向上如何对齐,这里是居对齐。 - `align-items: center;` 指定子元素在交叉轴方向上如何对齐,这里是居对齐。 - `font-size: 24px;` 设置子元素的字体大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值