连续 2 列,百分比宽度

2 columns in a row, percentage width

我在将 2 列排列成一行时遇到问题。 第一列宽度为 2%,第二列宽度为 98%。 我怎样才能让他们工作? 我试过了 float:left;但这似乎不是一个正确的方法。

代码笔:https://codepen.io/rae0724/pen/gWGvxG

<div class="moonsun">
  <div class="moon">Moon<br><br></div>
  <div class="sun">Sun<br><br><br><br><br><br></div>
</div>

.moonsun {
  width: 100%;
}

.moon {
  width: 2%;
  background: yellow;
  display:inline-block;
  margin:0;
  padding:0;
}

.sun {
  width: 98%;
  background: red;
  display:inline-block;
  margin:0;
  padding:0;
}

试试这个:

.moonsun {
  width: 100%;
  display: flex;
}

.moon {
  width: 2%;
  background: yellow;
  display:inline-block;
  margin:0;
  padding:0;
}

.sun {
  width: 98%;
  background: red;
  display:inline-block;
  margin:0;
  padding:0;
}
<div class="moonsun">
  <div class="moon">Moon<br><br></div>
  <div class="sun">Sun<br><br><br><br><br><br></div>
</div>

inline-block 将空白 space 算作一个内容,这就是为什么它没有设置为 100% 宽度的原因。要设置这些元素,您可以使用以下方法

.moonsun {
  width: 100%;
}

.moon {
  width: 2%;
  background: yellow;
  display:inline-block;
  margin:0;
  padding:0;
}

.sun {
  width: 98%;
  background: red;
  display:inline-block;
  margin:0;
  padding:0;
}
<div class="moonsun">
  <div class="moon">Moon<br><br></div><!--
  --><div class="sun">Sun<br><br><br><br><br><br></div>
</div>

.moonsun {
  width: 100%;
  font-size: 0px;
}

.moon {
  width: 2%;
  background: yellow;
  display:inline-block;
  margin:0;
  padding:0;
  font-size: 16px;
}

.sun {
  width: 98%;
  background: red;
  display:inline-block;
  margin:0;
  padding:0;
  font-size: 16px;
}
<div class="moonsun">
  <div class="moon">Moon<br><br></div>
  <div class="sun">Sun<br><br><br><br><br><br></div>
</div>

.moonsun {
  width: 100%;
  display: flex;
}

.moon {
  width: 2%;
  background: yellow;
  display:inline-block;
  margin:0;
  padding:0;
}

.sun {
  width: 98%;
  background: red;
  display:inline-block;
  margin:0;
  padding:0;
}
<div class="moonsun">
  <div class="moon">Moon<br><br></div>
  <div class="sun">Sun<br><br><br><br><br><br></div>
</div>

使用display:flex你可以很容易地做到这一点。您的代码中存在问题,因此 我建议您使用这种方法。另外 word-break:break-all 调整 2% div 中的文本 因为它的宽度可能很小。

.moonsun {
  width: 100%;
  display: flex;
}

.moon {
  width: 2%;
  background: yellow;
  margin: 0;
  padding: 0;
  flex: 1;
  word-break: break-all
}

.sun {
  width: 98%;
  background: red;
  margin: 0;
  padding: 0;
}
<div class="moonsun">
  <div class="moon">Moon<br><br></div>
  <div class="sun">Sun<br><br><br><br><br><br></div>
</div>