【问题标题】:how to get list items always same height? [duplicate]如何让列表项总是相同的高度? [复制]
【发布时间】:2017-07-24 04:45:47
【问题描述】:

我有一个包含不同大小的不同列表项的菜单。菜单中的项目是动态调整大小的,所以如果我调整视口大小,它们会缩小。

我怎样才能使它们始终保持相同的高度?取最大列表项的高度。

body{
background-color: darkslategrey;
  color: white;
}
ul {
  height: 100px;
  list-style: none;
}
span div {
  width: 5rem;
}
li {
  display: inline-block;
  text-align: center;
  border: 1px solid cyan;
/*   transform: skewX(30deg); */
  margin: 0;
  padding: 8px 18px;
 
}
li span {
  display:inline-block;
/*   transform: skewX(-30deg); */
}
p {
  margin: 0;
}
h1 {
  margin: 0;
}
.c {
  font-size: 4rem;
}
<ul>
  <li><p>babboon</p></li>
  <li>
    <span>
      <div><h1>A</h1></div>
        <p>anton</p>
      </span>     
  </li>
  <li>
    <span>
      <div><h1>B</h1></div>
        <p>Bert</p>
      </span>     
  </li>
  <li>
    <span>
      <div><h1 class="c">C</h1></div>
        <p>conner</p>
      </span>     
  </li>
</ul>

【问题讨论】:

  • 你试过了吗:ul{display:flex;}
  • 我强烈推荐使用 flexbox,正如@gcyrillus 所建议的那样
  • 我个人会使用 flex display 或 flex-box。
  • @GCyrillus 改变了骗局,这种问题在这里发了很多次
  • @GCyrillus 有时搜索不是很好,不得不使用谷歌搜索:)

标签: html css


【解决方案1】:

你可以看看https://css-tricks.com/snippets/css/a-guide-to-flexbox/

body{
background-color: darkslategrey;
  color: white;
}
ul {
  list-style: none;
  display:flex;
}
span div {
  width: 5rem;
}
li {
  /*display: inline-block;*/
  /* flex can be imbricated and use to position children */
  display:flex;
  align-items:center;
  justify-content:center;
  /* end flex example ... follow the tutorial ;) */
  text-align: center;
  border: 1px solid cyan;
/*   transform: skewX(30deg); */
  margin: 1px;
  padding: 8px 18px;
 
}
li span {
  display:inline-block;
/*   transform: skewX(-30deg); */
}
p {
  margin: 0;
}
h1 {
  margin: 0;
}
.c {
  font-size: 4rem;
}
<ul>
  <li><p>babboon</p></li>
  <li>
    <span>
      <div><h1>A</h1></div>
        <p>anton</p>
      </span>     
  </li>
  <li>
    <span>
      <div><h1>B</h1></div>
        <p>Bert</p>
      </span>     
  </li>
  <li>
    <span>
      <div><h1 class="c">C</h1></div>
        <p>conner</p>
      </span>     
  </li>
</ul>

对于旧版浏览器,您还可以使用 display:table 选项:

body{
background-color: darkslategrey;
  color: white;
}
ul {
  list-style: none;
  display:table;
  border-spacing:1px;
}
span div {
  width: 5rem;
}
li {
  /*display: inline-block;*/
  display:table-cell;
  vertical-align:middle;
  text-align: center;
  border: 1px solid cyan;
/*   transform: skewX(30deg); */
 /* margin: 1px; border-spacing will do the job */
  padding: 8px 18px;
 
}
li span {
  display:inline-block;
/*   transform: skewX(-30deg); */
}
p {
  margin: 0;
}
h1 {
  margin: 0;
}
.c {
  font-size: 4rem;
}
<ul>
  <li><p>babboon</p></li>
  <li>
    <span>
      <div><h1>A</h1></div>
        <p>anton</p>
      </span>     
  </li>
  <li>
    <span>
      <div><h1>B</h1></div>
        <p>Bert</p>
      </span>     
  </li>
  <li>
    <span>
      <div><h1 class="c">C</h1></div>
        <p>conner</p>
      </span>     
  </li>
</ul>

【讨论】:

  • 赞成,但您可以删除 li 上的 inline-block
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多