《CSS3实战》笔记--弹性盒模型(二)

通过阅读和学习书籍《CSS3实战》总结

《CSS3实战》/成林著.—北京机械工业出版社2011.5

box-flex属性

box-flex属性能够灵活地控制子元素在盒子中的显示空间。注意,显示空间包括子元素的宽度和高度,而不只是子元素所在栏目的宽度,也可以说是子元素在盒子中所占的面积。该属性在弹性布局中非常重要,它解决了传统设计中习惯使用百分比定义弹性布局的弊端。box-flex属性的基本语法:

box-flex:<number>

取值说明:

<number>属性值是一个整数或者小数。当盒子中包含多个定义了box-flex属性的子元素时,浏览器将会把这些子元素的box-flex属性值相加,然后根据他们各自的值占总值的比例来分配盒子剩余的空间。注意,box-flex属性只有在盒子拥有的确定的空间大小之后才能正确解析。在设计中,较稳妥的做法是为了盒子定义具体的widthheight属性值。

实战体验:自适应栏目宽度设计

??在传统的网页设计中,如果要把一个栏目分成三栏,比较简单的做法是把三个子元素的宽度都设置为33.3%。这种做法无法把父元素的宽度完全填充,当父元素的宽度足够大的时候,用户会看到未填充的空白区域。但是,如果为子元素设置了固定宽度值,弹性布局会变得更为复杂。如果使用box-flex属性,这个问题就会迎刃而解。

html代码:

<body>
<h1><img src="images/web3_13.gif" /></h1>
<div id="box">
    <!--左侧栏目-->
    <div id="box1"><img src="images/web3_01.gif" /></div>
    <!--中间栏目-->
    <div id="box2">
        <h2><img src="images/web3_02.gif" /></h2>
        <div><img src="images/web3_04.gif" /></div>
        <div><img src="images/web3_05.gif" /></div>
        <div><img src="images/web3_06.gif" /></div>
        <div><img src="images/web3_07.gif" /></div>
    </div>
    <!--右侧栏目-->
    <div id="box3">
        <h2><img src="images/web3_12.gif" /></h2>
        <div><img src="images/web3_08.gif" /></div>
        <div><img src="images/web3_09.gif" /></div>
        <div><img src="images/web3_10.gif" /></div>
        <div><img src="images/web3_11.gif" /></div>
    </div>
</div>
</body>

CSS3代码:

/*这是一个三栏布局的页面,其中左侧栏目的宽度是固定的,而中间和右侧栏目的宽度是弹性的*/
<style>
body{
    margin:0;
    padding:0;
    text-align:center;
}
h1,h2{margin:2px;}
#box{
    margin:auto;
    text-align:left;
    width:1002px;
    overflow:hidden;
}
/*定义box元素盒形显示,并设置子元素水平布置*/
#box{
    display:box;
    display:-moz-box;
    display:-webkit-box;
    box-orient:horizontal;
    -moz-box-orient:horizontal;
    -webkit-box-orient:horizontal;
}
/*定义盒子左侧栏目的宽度为固定显示*/
#box1{width:201px;}
#box2,#box3{
    border:1px solid #CCC;
    margin:2px;
}
/*定义盒子内中间栏目的宽度为盒子剩余空间的2/3*/
#box2{
    box-flex: 4;
    -moz-box-flex: 4;
    -webkit-box-flex: 4;
}
/*定义盒子内中间栏目的宽度为盒子剩余空间的1/3*/
#box3{
    box-flex:2;
    -moz-box-flex:2;
    -webkit-box-flex:2;
}
#box2 div,#box3 div{
    display:inline;
}
</style>

演示效果:

弹性空间的实现和分配

??在默认情况下,子元素并不具有弹性,它会竟可能的宽,以便使其所包含的内容可见,并且不会有任何溢出。如果要改变它的尺寸,则可以使用width和height属性来实现,当然也可以使用min-height,min-width,max-height,max-width等属性来限制尺寸。

??当box-flex属性至少大于0时,它会变得富有弹性。当子元素具有弹性时,可以通过下面的方式来改变它的尺寸:

  • 使用width,height,min-height,min-width,max-height,max-width等属性来定义尺寸。
  • 使用盒子的尺寸来限制子元素的弹性尺寸。
  • 借助盒子富余所有空间来限制元素的弹性尺寸。

??如果子元素没有声明大小,那么其尺寸将完全取决于盒子的大小,即子元素的大小等于盒子的大小乘以它的box-flex属性值在所有子元素的box-flex属性值总和中的百分比。使用公式表示如下:

子元素的尺寸=盒子的尺寸*子元素的box-flex属性值/所有子元素的box-flex属性值的和

??如果一个或多个子元素声明了具体的尺寸,那么其大小将计入其中,余下的弹性盒子将按照上面的原则分享剩余的可利用空间。

??由于受内部图片大小的支撑,导致子元素的空间总是大于盒子的 富余空间,这时将出现解析异常。

??box-flex属性对子元素的布局影响

HTML代码:

<body>
<h1><img src="images/web3_13.gif" /></h1>
<div id="box">
    <!--左侧栏目-->
    <div id="box1"><img src="images/web3_01.gif" /></div>
    <!--中间栏目-->
    <div id="box2"></div>
    <!--右侧栏目-->
    <div id="box3"></div>
</div>
</body>
  • 中间和右侧各占一半剩余的空间

    CSS3代码:

#box2{
    box-flex: 2;
    -moz-box-flex: 2;
    -webkit-box-flex: 2;
    background:#CCF;
}
#box3{
    box-flex: 2;
    -moz-box-flex: 2;
    -webkit-box-flex: 2;
    background:#FC0;
}

演示效果:

  • 中栏占1/5的空余空间,右栏占4/5空余的空间

    CSS3代码:

#box2{
    box-flex: 0.5;
    -moz-box-flex: 0.5;
    -webkit-box-flex: 0.5;
    background:#CCF;
}
#box3{
    box-flex: 2;
    -moz-box-flex: 2;
    -webkit-box-flex: 2;
    background:#FC0;
}

演示效果:

  • 中间弹性显示,占据所有空余空间,右栏固定大

    CSS3代码:

#box2{
    box-flex: 0.5;
    -moz-box-flex: 0.5;
    -webkit-box-flex: 0.5;
    background:#CCF;
}
#box3{
    width:196px;
    background:url(images/web3_03.gif) no-repeat;
}

演示效果:

  • 中栏失去弹性(当设置为0或者复制时),收缩显示为一条线,右栏自动左移

    CSS代码:

#box2{
    box-flex: 0;
    -moz-box-flex: 0;
    -webkit-box-flex: 0;
    background:#CCF;
}
#box3{
    width:196px;
    background:url(images/web3_03.gif) no-repeat;
}

演示效果:

时间: 2024-08-06 20:07:19

《CSS3实战》笔记--弹性盒模型(二)的相关文章

CSS3实战开发: 弹性盒模型之响应式WEB界面设计

各位网友大家好,如果你已经阅读过我先前写的关于CSS3弹性盒模型的实例演示,相信你对CSS3弹性盒模型属性知识点应该已经有了一个非常深刻的映像. 从本篇文章开始,我将带领大家,手把手地教大家如何来开发一个适合移动端浏览器的弹性盒模型的响应式页面.同时实战开发中的案例代码可以作为你项目中的精简框架了. 当你学习完成<CSS3实战开发: 弹性盒模型之响应式WEB界面设计>这个系列教程之后,相信你对目前比较流行的前端轻量级框架 Bootstrap等会有一个深刻的认识. Bootstrap(弹性流体布

《CSS3实战》笔记--弹性盒模型(三)

通过阅读和学习书籍<CSS3实战>总结 <CSS3实战>/成林著.-北京机械工业出版社2011.5 box-pack和box-align属性 ??当弹性元素和非弹性元素混合排版时,有可能会出现所有子元素的尺寸大小或小于盒子的尺寸,从而出现盒子空间不足或者富余的情况,这时就需要一种方法来管理盒子的空间.如果子元素的总尺寸小于盒子的尺寸,则可以使用box-align和box-pack属性进行管理. ??box-pack属性可以在水平方向上对盒子的富余空间进行管理,该属性的基本语法如下:

CSS3中的弹性流体盒模型技术详解(一)

从这篇文章开始,会利用几个篇幅,我将跟大家分享 从CSS1到CSS3都是如何实现页面布局的(当然,所指的范畴是利用CSS技术). 由于盒子模型技术内容比较多,这篇文章我将着重讲解知识点. 下一篇文章,我会带领大家开发一个兼容 pc端浏览器和 移动端浏览器的弹性布局web界面的实例.希望大家能从中领受到CSS3在布局方面的强大功能. 好了,长话短说,现在开始我们的<CSS3中的弹性流体盒模型技术详解>之旅吧! 在讲解CSS3中新增的弹性布局属性之前,我们先回顾一下CSS1 和 CSS2中都已经定

CSS3中的弹性流体盒模型技术详解

先回顾一下CSS1 和 CSS2中都已经定义了哪些布局方面的属性,这样也会增加我们理解弹性布局. 其实我们现在有很多一部分人,你们刚刚接触CSS层叠样式表,或者接触有一段时间了,但是却没有很好的去消化与理解.可能平时你们还一直在使用table,然后通过不断了合并单元格来实现网页布局.希望我今天的这篇文章能彻底改变大家的观念. Q:如何理解盒子模型? A:大家可以想一想,在现实生活中,如果我们拿一个盒子来装东西,那么盒子里面的东西是不是跟这个盒子之间会有空隙呢?站在里面物品的角度,则它们之间的间隙

CSS3中的弹性流体盒模型技术详解(二)

在上一篇文章<CSS3中的弹性流体盒模型技术详解(一)>里,我给大家列出了,从css1到css3各版本中盒子模型的基本元素.本篇我会把余下的属性进行详细讲解. box-pack 作用:用来规定子元素在盒子内的水平空间分配方式 box-pack 语法:box-pack: start | end | center | justify; start 对于正常方向的框,首个子元素的左边缘吸附在盒子的左边框显示 对于相反方向的框,最后子元素的右边缘吸附在盒子的右边框显示 end 对于正常方向的框,最后子

CSS3弹性盒模型flexbox完整版教程

文章目录 基础知识 属性介绍 display: flex | inline-flex; (适用于父类容器元素上) 请注意: flex-direction (适用于父类容器的元素上) flex-wrap (适用于父类容器上) flex-flow (适用于父类容器上) justify-content (适用于父类容器上) align-items (适用于父类容器上) align-content (适用于父类容器上) order (适用于弹性盒模型容器子元素) flex-grow (适用于弹性盒模型容

CSS3弹性盒模型之box-orient &amp; box-direction

Css3引入了新的盒模型——弹性盒模型,其实上一篇文章已经讲到了一个box-flex,今天来讲讲另外的两个弹性盒模型属性box-orient 和 box-direction. 1.box-origent: 水平或垂直分布. box-origent有两个值:horizional(水平)和vertical(垂直),意思就是元素的排列方式! css代码如下: body {display: -webkit-box; -webkit-box-orient: horizional; } 水平排列方式如下:

CSS3弹性盒模型,Flex布局教程

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. CSS3中引入flex的弹性盒模型,这是一个可以让你告别浮动.完美实现垂直水平居中的新特性. 尽管目前css3在PC端上的兼容性还不是那么完美,但是在移动端已基本实现兼容. 网络上有很多关于flex布局很好的教程.总结的也很完美,我就直接收藏了,以备查询 详解css3弹性盒模型(Flexbox) 移动端开发小记 – Flexbox

CSS3弹性盒模型与布局

一.弹性盒模型 1.注意:在使用弹性盒模型的时候,父元素必须要加display:box 或 display:inline-box,同时要加浏览器内核前缀 Box-orient 定义盒模型的布局方向 Horizontal 水平显示 vertical 垂直方向 box-direction 元素排列顺序 Normal 正序 Reverse 反序 box-ordinal-group 设置元素的具体位置 Box-flex 定义盒子的弹性空间 子元素的尺寸=盒子的尺寸*子元素的box-flex属性值 / 所