【发布时间】:2011-01-22 00:12:25
【问题描述】:
我经常需要在左侧列出各种大小的图像,右侧为文本,如下所示:
alt text http://www.deviantsart.com/upload/7s01l5.png
17 年来,我用 HTML 表格 解决了这个问题,如下所示:
<html>
<style>
* { margin: 0; padding: 0 }
body {
padding: 20px;
}
#content {
width: 600px;
padding: 20px;
margin-left: auto;
margin-right: auto;
background: green;
}
.item {
margin: 0 0 20px 0;
}
.itemIcon {
float:left;
}
.itemBody {
float:right;
}
.clear {
clear: both;
}
</style>
<body>
<div id="content">
<div class="item">
<div class="itemIcon">
<img src="icon.png" alt=""/>
</div>
<div class="itemBody">
<h1>This is the first item</h1>
<p>Aliquid aliquam fabulas duo an, eu delenit intellegebat has, in sit commodo aliquip. Inermis neglegentur vis an, ea mei habeo animal verterem. Cum vivendo intellegam disputando id, usu id dicta harum convenire. Cibo corpora ut pri, sed legere probatus aliquyam no, vidisse suscipiantur eu mea. Modus etiam concludaturque pro an, ut latine quaeque per. Harum ignota mnesarchum pri ad, duo et diam oblique epicurei, pri ne vivendo omnesque epicurei.</p>
</div>
<br class="clear"/>
</div>
<div class="item">
<div class="itemIcon">
<img src="bigIcon.png" alt=""/>
</div>
<div class="itemBody">
<h1>This is the second item</h1>
<p>Aliquid aliquam fabulas duo an, eu delenit intellegebat has, in sit commodo aliquip. Inermis neglegentur vis an, ea mei habeo animal verterem. Cum vivendo intellegam disputando id, usu id dicta harum convenire. Cibo corpora ut pri, sed legere probatus aliquyam no, vidisse suscipiantur eu mea. Modus etiam concludaturque pro an, ut latine quaeque per. Harum ignota mnesarchum pri ad, duo et diam oblique epicurei, pri ne vivendo omnesque epicurei.</p>
</div>
<br class="clear"/>
</div>
<div class="item">
<div class="itemIcon">
<img src="icon.png" alt=""/>
</div>
<div class="itemBody">
<h1>This is the first item</h1>
<p>Aliquid aliquam fabulas duo an, eu delenit intellegebat has, in sit commodo aliquip. Inermis neglegentur vis an, ea mei habeo animal verterem. Cum vivendo intellegam disputando id, usu id dicta harum convenire. Cibo corpora ut pri, sed legere probatus aliquyam no, vidisse suscipiantur eu mea. Modus etiam concludaturque pro an, ut latine quaeque per. Harum ignota mnesarchum pri ad, duo et diam oblique epicurei, pri ne vivendo omnesque epicurei.</p>
</div>
<br class="clear"/>
</div>
</div>
</body>
</html>
每次我尝试切换到 浮动 div 时,由于某种原因它失败,这是我的当前尝试:
alt text http://www.deviantsart.com/upload/tuvquv.png
我必须对这段代码进行哪些更改,以使这个 div 解决方案看起来像 table 解决方案?
<html>
<style>
* { margin: 0; padding: 0 }
body {
padding: 20px;
}
#content {
width: 600px;
padding: 20px;
margin-left: auto;
margin-right: auto;
background: green;
}
.item {
margin: 0 0 20px 0;
}
.itemIcon {
float:left;
}
.itemBody {
float:right;
}
.clear {
clear: both;
}
</style>
<body>
<div id="content">
<div class="item">
<div class="itemIcon">
<img src="icon.png" alt=""/>
</div>
<div class="itemBody">
<h1>This is the first item</h1>
<p>Aliquid aliquam fabulas duo an, eu delenit intellegebat has, in sit commodo aliquip. Inermis neglegentur vis an, ea mei habeo animal verterem. Cum vivendo intellegam disputando id, usu id dicta harum convenire. Cibo corpora ut pri, sed legere probatus aliquyam no, vidisse suscipiantur eu mea. Modus etiam concludaturque pro an, ut latine quaeque per. Harum ignota mnesarchum pri ad, duo et diam oblique epicurei, pri ne vivendo omnesque epicurei.</p>
</div>
<br class="clear"/>
</div>
<div class="item">
<div class="itemIcon">
<img src="bigIcon.png" alt=""/>
</div>
<div class="itemBody">
<h1>This is the second item</h1>
<p>Aliquid aliquam fabulas duo an, eu delenit intellegebat has, in sit commodo aliquip. Inermis neglegentur vis an, ea mei habeo animal verterem. Cum vivendo intellegam disputando id, usu id dicta harum convenire. Cibo corpora ut pri, sed legere probatus aliquyam no, vidisse suscipiantur eu mea. Modus etiam concludaturque pro an, ut latine quaeque per. Harum ignota mnesarchum pri ad, duo et diam oblique epicurei, pri ne vivendo omnesque epicurei.</p>
</div>
<br class="clear"/>
</div>
<div class="item">
<div class="itemIcon">
<img src="icon.png" alt=""/>
</div>
<div class="itemBody">
<h1>This is the first item</h1>
<p>Aliquid aliquam fabulas duo an, eu delenit intellegebat has, in sit commodo aliquip. Inermis neglegentur vis an, ea mei habeo animal verterem. Cum vivendo intellegam disputando id, usu id dicta harum convenire. Cibo corpora ut pri, sed legere probatus aliquyam no, vidisse suscipiantur eu mea. Modus etiam concludaturque pro an, ut latine quaeque per. Harum ignota mnesarchum pri ad, duo et diam oblique epicurei, pri ne vivendo omnesque epicurei.</p>
</div>
<br class="clear"/>
</div>
</div>
</body>
</html>
【问题讨论】:
-
回头看看你希望图像容器的高度向下推(ala 100% 高度与溢出:隐藏在它的父级上)......没有纯 CSS 方式来做到这一点(没有黑客攻击)。由于我不喜欢黑客可能不仅仅是非语义标记,因此我删除了我的答案:P
-
我不知道蒂莫西,我的例子似乎有效,尽管我承认我只在 IE7 和 Firefox 中查看过@它。我的解决方案的唯一缺点是必须根据每个图像设置填充/边距。
-
那么,如果 div 已经使用了 17 年的表格,为什么还要切换到 div 呢?仅仅因为每个人都嘲笑使用表格进行布局并不意味着它是错误的,我认为使用 div 只是“要做的事情”,但这并不意味着它总是最好的解决方案。
标签: html css html-table css-float