使用表可以实现此行为,例如此代码:
<style>
table {
table-layout:fixed;
width:100%;
}
td {border:1px solid red;}
</style>
<table>
<tr>
<td>Hello</td>
<td>WWWWWWWWWWWWWWWWWWWWWW</td>
</tr>
</table>
这将是我想要的输出:
|Hello |WWWWWWWWWWWWWWWWWWWWWW|
但是如果它不适合屏幕宽度,这个解决方案不会将内部元素(在本例中为tds)包装到新行! 所以我想用div和css做这个。如果我使用:
<style>
#eq > div {
width: 400px;
float: left;
}
</style>
<div id="eq">
<div>Hello</div>
<div>WWWWWWWWWWWWWWWWWWWWWW</div>
</div>
当然它的工作原理和输出相同,但当然#eq中的文本和元素数量是可变的!因此,如果文本“WWWWWWWWWWWWWWWWWWWWWW”将更改为“lol”,则元素将是荒谬的宽。另一方面,如果我将其更改为更长的文本,则定义的宽度,所有其他更小元素的宽度将更小。 所以最后一个问题是: 如何使所有元素的宽度与最宽的元素一样宽,并且能够使用纯html&amp; amp; css并且没有手动指定宽度?
答案 0 :(得分:2)
答案 1 :(得分:0)
对于聚会来说有点晚了,但是我已经发布了一个JSFiddle,这个解决方案对我来说非常有用,无论是否有Javascript:
http://jsfiddle.net/jpgringo/LTEsZ/7/
HTML:
foobar的
Wampeter,Foma,Granfalloons
=========================================
CSS:
body {
font-family:Verdana, Arial, sans-serif;
font-size:10px;
}
#myContentSection {
display:table;
width:100%;
}
#myContentSection .content {
display:table-row;
}
#myContentSection .subsection {
display:table-cell;
border:solid 1px gray;
/* the next line is optional, but gives equal-width columns if you know the
number of columns ahead of time */
width:33%;
padding:4px 8px;
}
========================================
(可选)JS:
var sectionID = 'myContentSection';
var subsectionClass = 'subsection';
var contentSection = document.getElementById(sectionID);
var colCount = contentSection.getElementsByClassName('subsection').length;
console.log('# of columns:', colCount);
var width = Math.floor(100/colCount);
console.log('column width: ', width,'%');
var css = '#' + sectionID + ' .' + subsectionClass + ' { width: ' + width + '%; }';
var style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
document.head.appendChild(style);