代码如下。一个id为container的div包含三个子div,第一个div宽度设置固定200.剩下两个用box-flex属性设置为1;3,为什么最后显示的宽度和预期不一样?col1宽度是200.整个container是600. col2和col3的flex比例是1:3,那么col2应该是(600-200)*1./4应该是100.,同理col3应该是300才对。为什么最后确是164的236?
<div id="container">
<div id="col1">我是第一列的内容</div>
<div id="col2">我是第二列的内容<br/>我是第二列的内容<br/>我是第二列的内容<br/>我是第二列的内容<br/>我是第二列的内容<br/></div>
<div id="col3">我是第三列的内容</div>
*{ margin:0; padding:0;}
#container{ width:600px; background: #F93;display:box;display:-moz-box;display:-webkit-box; box-orient:horizontal; -moz-box-orient:horizontal;-webkit-box-orient:horizontal; }
#col1{ background: #FCC; width:200px;
}
#col2{ background:#F63;box-flex:1;-webkit-box-flex:1;-moz-box-flex:1;
}
#col3{ background:#690;box-flex:3;-webkit-box-flex:3;-moz-box-flex:3;
}
下面图片是在chrome下显示的实际宽度
请注意那个提示宽度。
======================
处理办法:
解决办法,CSS代码修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#col 2 {
background : #F63 ;
box-flex: 1 ;
-webkit-box-flex: 1 ;
-moz-box-flex: 1 ;
width : 0% ; /* 加上这行代码 */
} #col 3 {
background : #690 ;
box-flex: 3 ;
-webkit-box-flex: 3 ;
-moz-box-flex: 3 ;
width : 0% ; /* 加上这行代码 */
} |
所有需要按照比例分解的列,都加上 width: 0%; 已经有固定值的列不需要加,原理不懂。
反正这个应该是CSS3新属性 box-orient 没有完善的原因。
相关推荐
传统的盒模型(W3C盒模型)和IE盒模型在计算元素宽度时有所不同,但弹性盒模型(Flexbox)则提供了一种统一且更为智能的处理方式。它允许开发者通过调整容器和子元素的属性来控制布局的顺序、大小和位置,从而实现更...
1)弹性盒也叫伸缩布局盒模型 它是**<span>css3**引入的一种新的布局模式——**<span>flexbox**布局,即伸缩布局盒模型,用来提供一个更有效的方式制定、调整和分布一个容器里的项目布局。相比之前的布局方式,更...
CSS 盒子模型详解 在网页设计中,我们经常听到的一些属性名,如内容(content)、填充(padding)、边框(border)和边界(margin),这些属性组成了 CSS 盒子模型。这个模型可以被类比到我们日常生活中的盒子上,...
- **弹性**: CSS盒子模型具有一定的“弹性”,当内容超出盒子大小时,盒子能够自动扩展以适应内容。 - **嵌套**: 盒子模型支持嵌套,即一个盒子可以包含另一个盒子,这种嵌套关系有助于构建复杂的网页布局。 - **...
相反,如果为子元素设置固定宽度,则布局的弹性会降低,因为任何父容器尺寸的改变都可能导致布局错乱。使用box-flex属性,我们可以让中间栏占据剩余空间的2/3,而右侧栏占据剩余空间的1/3,这样就能保持布局的适应性...
一、css实现左侧宽度固定右侧宽度自适应 1、定位 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>自适应</title> <style> *{ padding: 0; ...
弹性盒子本身就是并排的,我们设置宽度即可。 用一个容器container包裹三栏,设置comtainer容器的display属性为flex,左右栏设置宽度为300px,中间栏设置flex:1,这里的1表示宽度比例,具体数值取决于其它盒子的flex...
此外,盒子模型在CSS布局技术中扮演着核心角色,如Flexbox(弹性盒布局)和Grid(网格布局)都是基于盒子模型原理进行扩展的。学习并理解盒子模型,将有助于开发者更好地理解和应用这些先进的布局技术。 总之,HTML...
JavaScript Web中的Flex弹性盒子模型(Flexbox)是一种强大的布局模式,它使得在不同屏幕尺寸和设备上创建响应式和灵活的网页布局变得简单。在Web开发中,Flexbox解决了传统CSS布局方式(如浮动和定位)无法完美解决...
在网页设计领域,CSS(Cascading Style Sheets)盒子模型是理解页面布局的关键。这个模型定义了元素如何占据空间并与其他元素相互作用。本篇文章将深入解析CSS盒子模型,并通过实例探讨如何使用div布局,帮助你彻底...
1. 盒子模型:这是CSS的基础,涵盖了元素的宽度、高度、内填充(padding)、边框(border)和外边距(margin),文件"01-盒子模型.html"对此进行了讲解。 2. 边距:文件"03-margin.html"专门讨论了如何使用CSS设置...
例如,如果一个父容器有三个子元素,分别设置了box-flex值为1、2、2,则三个子元素会占据父容器宽度的1/5、2/5和2/5。 在没有设置box-flex属性的情况下,元素默认并不具有弹性,它们将尽可能展开以使内容可见,并...
**CSS3弹性盒模型**,也称为Flexbox,是一种现代的布局模式,它允许开发者更加灵活地处理元素的排列和对齐方式,特别是在响应式设计中。本文将深入讲解两个关键属性:`box-pack` 和 `box-align`,以及它们在处理弹性...
7. CSS3模块:如Flexbox(弹性盒子布局)和Grid(网格布局)提供了更为先进的布局解决方案。 这个"html5+css3源代码"压缩包中,你将能找到各种实际应用的代码示例,包括但不限于上述提到的HTML5新特性及CSS3的新...
- **Flexbox**(弹性盒子布局模块):Flexbox允许我们在一行或一列中灵活地排列元素,无论元素数量如何,都可以轻松实现等宽或自适应宽度的布局。 - **Grid布局**:CSS Grid提供了二维布局系统,可以更精细地控制...
开启 Flex 弹性盒子布局可以通过将元素的 display 属性设置为 flex 或 inline-flex。例如: ``` .box { display: flex; } ``` 或 ``` .box { display: inline-flex; } ``` Webkit 内核的浏览器需要加上 -webkit ...
2. CSS 弹性盒子:在 CSS 中,可以使用 display:flex 属性来设置该盒子为弹性盒子。弹性盒子的主要特点是可以根据屏幕尺寸自动调整大小。 3. CSS 盒子模型:在 CSS 中,每个盒子都有一个盒子模型,包括内容区域、内...
* justify-content:设置弹性盒子元素在主轴(横轴)方向上的对齐方式。 * align-items:设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。 * flex-direction:指定弹性容器的主轴方向。 * flex-wrap:设置弹性盒子...
每个弹性元素的大小等于`box-flex`值与所有子元素`box-flex`值之和的比例,即:`子盒子大小 = 父盒子大小 * 子盒子的 box-flex / 所有子盒子的 box-flex 值的和`。 ### 4. 示例分析 案例1展示了如何使用`box-flex`...
传统流式布局是根据内容大小来决定容器的尺寸,而弹性盒子模型则是先确定容器的大小,然后根据容器大小来合理分配内部子元素的空间。这一机制特别适合于响应式设计,能够更好地适应不同设备和屏幕尺寸的变化。 下面...