CSS等高柱

时间:2015-11-19 20:34:48

标签: html css css3 flexbox css-tables

我想在我的css表中使用百分比。不幸的是,它对我没用。

这段代码有什么问题?我应该使用flexbox而不是table吗?

我想使用表格,因为我想要相同的高度列。



ul {
  list-style: none;
  margin: 0;
  display: table;
  table-layout: fixed;
  width: 100%;
}

li {
  width: 50%;
  display: table-cell;
}

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
</ul>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:8)

Flexbox等高度列

<强> HTML

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
</ul>

<强> CSS

ul { display: flex; }

使用上面的简单代码,您可以将任意数量的内容放入列表项中,并且所有列表项都具有相同的高度。

DEMO

注意:

浏览器支持: 所有主流浏览器except IE < 10都支持Flexbox。最近的一些浏览器版本,例如Safari 8和IE10,需要vendor prefixes。要快速添加前缀,请使用Autoprefixerthis answer

中的更多详细信息

答案 1 :(得分:2)

以下是使用ul / li元素的示例,2列使用百分比且高度相等。

由于表格更喜欢表格/行/单元格布局,我稍微重构了你的html。

&#13;
&#13;
* {
    margin: 0;
}
html, body {
    height: 100%;
}
.table {
  display: table;
  width: 90%;
  height: 60%;
  padding-top: 5%;
  margin: 0 auto;
}
ul {
  display: table-row;
  list-style: none;
  margin: 0;
}

li {
  display: table-cell;
  width: 50%;
  border: 1px solid #999;
}
&#13;
<div class="table">
  <ul>
    <li>1</li>
    <li>2</li>
  </ul>
  <ul>
    <li>3</li>
    <li>4</li>
  </ul>
  <ul>
    <li>5</li>
    <li>6</li>
  </ul>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我正在回答对@Michael_B不同的问题的解释。在func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { let oldString = textField.text as NSString let candidate = oldString.stringByReplacingCharactersInRange(range, withString: string) var error: NSError? let regex = NSRegularExpression(pattern: "^\\d{0,2}(\\.\\d?)?$", options: 0, error: &error) return regex?.firstMatchInString(candidate, options: 0, range: NSRange(location: 0, length: candidate.length)) != nil } 元素上使用width: 50%;的初始样式,我认为所需的结果是将六个列表项分为2列和3行。使用CSS表格无法轻易解决这种情况,但使用flexbox则相对简单。

li
ul {
  list-style: none;
  margin: 0;
  width: 100%;
  /*kills the irritating intial padding on uls in webkit*/
  -webkit-padding-start: 0;
  display: flex;
  flex-flow: row wrap;
  /*stretch is the default value, but it will force items to stretch to match others in their row*/
  align-items: stretch;
  /*below properties just emphasize the layout*/
  padding: 2px;
  background-color: green;
}
li {
  /*forces border-width and padding to be part of the declared with (50% in this case)*/
  box-sizing: border-box;
  width: 50%;
  /*list-item, inline-block, and block work equally well*/
  display: list-item;
  /*below properties just emphasize the layout*/
  border: white 2px solid;
  background-color: lightgreen;
}
/*I set this property to show what happens if 1 item has a different height*/

li:nth-child(3) {
  height: 40px;
}