多列布局通常分成3种:第一种是每列都是固定宽度的;第二种其中1列是自适应宽度,剩余列是固定宽度;第三种是每都是百分比宽度。现在主要来说一下第三种。我们现在有个需求是页面平均分成左右2个部分。
http://matthewjamestaylor.com/blog/perfect-2-column-double-page.htm
已经有了一个解决方案。但是我觉得他的html结构和css还是太复杂了,并且使用position:relative以及float等属性,这些属性在
ie6下会导致影响它们的父元素以及子元素的表现。比如relative的元素在ie6下一定要把他的每层上级父元素都设置为relative,就像感染
了病毒一样。
接下来就说说我的方案吧。我这里是主要是使用了display:inline-block的布局。
<style>
.u {
display: inline-block;
zoom: 1; *display: inline; /* IE < 8: fake inline-block */
}
.u-1-2 {
width: 50%;
}
#content_a {
height: 100px;
background-color: #336699;
}
#content_b {
height: 50px;
background-color: #339966;
}
</style>
<div>
<div id="d1" class="u u-1-2">
<div id="content_a">
</div>
</div>
<div id="d2" class="u u-1-2">
<div id="content_b">
</div>
</div>
</div>
classname:u 定义了inline-block,classname:u-1-2定义了50%的宽度。所以d1和d2两个元素合在一起是50%,应该就是并排在一起的2个div了。
但是实际上呢?2个元素还是垂直排列的。
为什么呢?注意看dom结构里面d1和d2之间其实是有空白字符的,有换行符和tab缩进。所以浏览器在解析的时候也计算了这些字符的宽度。所以d1、d2再加上这些宽度总宽度就超过了100%所以导致了换行。所以接下来我们就把空白字符去掉。我使用了注释来保留缩进,这样比较容易排列。
<div>
<div id="d1" class="u u-1-2">
<div id="content_a">
</div>
</div><!-- 避免空白元素
--><div id="d2" class="u u-1-2">
<div id="content_b">
</div>
</div>
</div>
这样,我们在firefox上就得到了想要的效果。
这样做已经能够在ie8,firefox,safari,chrome下显示正常了。但是在ie6和ie7下还是会换行。
经过不断的尝试,发现只要把width:50%改成width:49.999999%就能在ie6和ie7下面实现效果。然后再美化一下让d1和d2垂直居上对齐,这个效果就完成了。
最后的代码如下:
<style>
.u {
display: inline-block;
zoom: 1; *display: inline; /* IE < 8: fake inline-block */
vertical-align: top;
}
.u-1-2 {
width: 49.9999999%;
}
#content_a {
height: 100px;
background-color: #336699;
}
#content_b {
height: 50px;
background-color: #339966;
}
</style>
<div>
<div id="d1" class="u u-1-2">
<div id="content_a">
</div>
</div><!-- 避免空白元素
--><div id="d2" class="u u-1-2">
<div id="content_b">
</div>
</div>
</div>
效果如下:
- 大小: 17.9 KB
- 大小: 17.5 KB
- 大小: 16 KB
分享到:
相关推荐
标题"使用百分比的布局方式"揭示了这个话题的核心,即如何在WPF中实现基于百分比的布局,使元素能够在窗口大小改变时按比例调整自身大小。描述中提到的"Grid比重与Binding的方式"是实现这一目标的两种主要技术。 ...
4. **百分比单位**:在布局文件中使用百分比而不是固定像素值,可以使元素的大小随容器大小变化而变化,从而实现更动态的布局。 5. **布局权重**:在某些框架或平台上,如Android的LinearLayout,可以通过分配权重...
本文将深入探讨“流式布局”这一主题,它是一种基于百分比的布局方式,能够灵活适应不同屏幕尺寸,实现响应式设计。 流式布局的核心思想是利用百分比而非固定像素来定义元素的宽度,这样可以确保页面在不同分辨率和...
18. **多列滚动同步布局**:在多列布局中,当用户滚动某一列时,其他列也同步滚动,提供一致的浏览体验。 19. **视口单位布局**:使用vw、vh单位,让元素大小与视口尺寸关联,实现自适应设计。 20. **百分比布局**...
3. 布局模式切换:响应式设计需要根据屏幕尺寸调整布局,如在小屏幕上使用单列布局,在大屏幕上使用多列布局。 四、CSS预处理器 1. SASS/LESS:这些预处理器扩展了CSS的功能,如变量、嵌套规则、混合(mixins)、...
例如,小屏幕设备上可能需要堆叠布局,大屏幕则可以使用多列布局。 在这个项目中,我们可以学习如何使用JavaScript来实现这些功能,并结合HTML5和CSS增强用户体验。HTML5的新特性,如`<section>`、`<article>`等...
`TableRow`是表格布局的行,可包含多个列。 5. **网格布局(GridLayout)**:类似于表格布局,但它允许更灵活的行和列配置,可以设置每行和每列的宽度和高度。 6. **约束布局(ConstraintLayout)**:这是Android ...
4. **栅格布局**:栅格布局类似于网格布局,但更强调列的排列,如960 Grid System,它可以创建多列布局,适用于复杂的网站设计。 5. **响应式图片**:通过CSS的`object-fit`属性或HTML的`srcset`和`sizes`属性,...
8. **浮动与清除**:在早期的Div+CSS布局中,浮动(float)常用于创建多列布局,但可能导致父元素高度塌陷的问题。因此,理解和使用clear属性来清除浮动是必要的。 9. **响应式设计**:随着移动设备的普及,响应式...
3. **浮动布局**:浮动(float)是早期常用的布局方式,通过设置元素的`float:left`或`float:right`使其在父元素内浮动,常用于创建多列布局。 4. **定位(positioning)**:通过`position`属性(如`static`、`relative...
首先,让我们讨论一下基本的三列布局。通常,这种布局可以通过CSS来实现,尤其是当涉及到流式布局(fluid layout)时,我们可以利用百分比单位来定义宽度。例如,如果我们想要创建三个等宽的列,每个列占总宽度的...
9. **浮动(Float)**:浮动最初用于创建图文混排,但现在更多地用于创建多列布局。`float: left;` 或 `float: right;` 可以让元素向左或向右浮动,从而让其他元素环绕其周围。 10. **Flexbox布局**:Flexbox是CSS3...
7. **百分比布局(PercentLayout)**:允许子视图的大小基于父视图的百分比,适应不同屏幕尺寸。 8. **折叠布局(CoordinatorLayout)**:适用于创建具有滚动行为和相互协作的视图,如底部导航栏(BottomNavigation...
在40种布局中,可能会涵盖单列、双列、多列布局,固定宽度与自适应宽度的组合,顶部导航、侧边栏、底部栏等组件的排列方式,以及各种创新的视觉效果。通过学习和实践这些布局,开发者能够提升对页面布局的理解,提高...
栅格布局是基于网格的布局系统,通常由等宽的列组成,用于组织内容和保持视觉一致性。栅格系统可以帮助设计师创建结构清晰、易于阅读的页面,常见于新闻网站和杂志风格的布局。 6. 混合布局(Hybrid Layout) 混合...
4. **栅格布局**:栅格系统是基于行和列的布局,灵感来源于印刷设计。在HTML中,可以使用`<div>`元素创建行和列,然后利用CSS控制每个单元格的宽度和间距。Bootstrap框架就是一个广泛应用的栅格系统实例。 5. **...
通过设置断点,我们可以为特定的屏幕尺寸定义不同的布局模式,例如,窄屏设备可能显示一列布局,而宽屏设备则显示多列布局。 3. 灵活的图片与媒体:在响应式设计中,图片和媒体也需要适应不同屏幕尺寸。通常使用`...
这为创建多列布局、导航菜单、卡片式布局等提供了便利。关键属性如`display: flex;`用于开启flex容器,`flex-grow`、`flex-shrink`和`flex-basis`控制子元素的伸缩行为,而`align-items`和`justify-content`则用于...
7. 多列布局:CSS3的`column-count`和`column-gap`属性可以创建多列布局,适用于杂志样式的设计。 8. 响应式布局:通过媒体查询(`@media`),可以根据设备特征如屏幕宽度调整布局。这有助于实现移动优先的Web设计...