html - 如何调整内联 block 布局中元素之间的空间?

标签 html css

我试图在不使用网格或 flexbox 的情况下创建布局,我正在使用 display: inline-block 来实现这一点,但我在调整空间方面遇到了问题。

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.wrapper {
  text-align : justify;
}

.wrapper > div {
  display: block;
  margin-top: 5px;
}

.header {
  background: lightgreen;
  margin-top: 0;
}

.footer {
  background: #eee;
}

.main > div {
  display: inline-block;
  width: 49%;
  height: 20vh;
  background: #eee;
}
<div class="wrapper">
    <div class="header">header</div>
    <div class="main">
       <div class="item">item1</div>
       <div class="item">item2</div>
       <div class="item">item3</div>
       <div class="item">item4</div>
    </div>
    <div class="footer">footer</div>
 </div>

enter image description here

我试图在 flexbox 中实现与 justify-content: space-between 相同的效果 但是我得到的元素在布局中没有很好地对齐。

我可以修复 item4 周围的空格,但使用 margin-left 但我不喜欢这个解决方案。

最佳答案

添加一个隐藏元素以触发最后一行的justify 对齐,但您需要使用负数margin-bottom 来删除添加的额外行。

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.wrapper {
  text-align : justify;
}

.wrapper > div {
  display: block;
  margin-top: 5px;
}

.header {
  background: lightgreen;
  margin-top: 0;
}

.footer {
  background: #eee;
}

.main > div {
  display: inline-block;
  width: 49%;
  height: 20vh;
  background: #eee;
}
.main:after {
  content:"";
  display:inline-block;
  width:5%;
  height:50px; /* we consider a bigger value than the line-height*/
}
.main {
  margin-bottom:-50px; /*the same value defined in the pseuo element*/
}
<div class="wrapper">
    <div class="header">header</div>
    <div class="main">
       <div class="item">item1</div>
       <div class="item">item2</div>
       <div class="item">item3</div>
       <div class="item">item4</div>
    </div>
    <div class="footer">footer</div>
 </div>

或者使用 font-size:0 技巧来避免额外的行:

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.wrapper {
  text-align : justify;
}

.wrapper > div {
  display: block;
  margin-top: 5px;
}

.header {
  background: lightgreen;
  margin-top: 0;
}

.footer {
  background: #eee;
}

.main > div {
  display: inline-block;
  width: 49%;
  height: 20vh;
  background: #eee;
  font-size:initial;
}
.main:after {
  content:"";
  display:inline-block;
  width:5%;
}
.main {
  font-size:0;
}
<div class="wrapper">
    <div class="header">header</div>
    <div class="main">
       <div class="item">item1</div>
       <div class="item">item2</div>
       <div class="item">item3</div>
       <div class="item">item4</div>
    </div>
    <div class="footer">footer</div>
 </div>

关于html - 如何调整内联 block 布局中元素之间的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55210881/

相关文章:

html - 来自 bootstrap nav-pills 的图像顶部的文本

html - 网站崩溃 Iphone Safari

javascript - 根据开始和结束位置突出显示字符串中的子字符串

html - div 外的段落链接使其向右浮动后

html - 网站没有填满 iPad 的屏幕

html - Google reCAPTCHA的形式一团糟

asp.net - 遍历asp.net页面上的所有控件

css - 防止悬停在绝对定位的 child 上以传播给 parent

javascript - 在鼠标悬停时将 $(this) 传递给 setTimeout 函数

html、正文和 div 设置为 100% 宽度,但它仍然没有占用全部 100%