flex 容器破坏了边界半径,如何解决这个问题?

Posted

技术标签:

【中文标题】flex 容器破坏了边界半径,如何解决这个问题?【英文标题】:flex container ruining a border-radius, How to fix this? 【发布时间】:2020-12-28 11:16:56 【问题描述】:

我的定位完全符合我的要求,但 58 周围的圆圈应该是一个完美的圆圈,而是根据容器中的内容进行调整。我该如何解决这个问题?

这是https://i.stack.imgur.com/Tb75A.png 的样子 这是我需要它看起来像https://i.stack.imgur.com/LgQFI.png

这里是 JSX

<div className="second-col-container">
          <h2>Air Quality Index</h2>
             <div className="mod-container">
               <span className="index">58</span>

             <div className="para-mod">
               <span className="mod">Moderate</span>
              <div>
                Air quality is acceptable; however, for some pollutants there
                may be a moderate health concern for a very small number of
                people who are unusually sensitive to air pollution.
              </div>
            </div>
          </div>
        </div>

CSS

.second-col-container 
  background-color: white;

  width: 250px;
  grid-area: air-index;
  margin-top: 20px;
  border-radius: 10px;


.second-col-container h2 
  margin-bottom: 20px;
  margin-left: 10px;


.para-mod 
  font-size: small;
  width: 60%;
  color: grey;
  display: flex;
  flex-direction: column;
  margin-left: 10px;


.index 
  margin: 5px 0 0 5px;
  color: black;
  font-size: xx-large;
  border: 3px solid rgb(223, 217, 217);
  border-left-color: rgb(255, 170, 11);
  border-bottom-color: rgb(255, 170, 11);
  padding: 15px;
  border-radius: 100%;


.mod-container 
  display: flex;


.mod 
  font-size: large;

  color: black;

【问题讨论】:

没关系。我没有看到 JSX。我的错。再次点赞。 :) @BobRodes 他们将标记发布为 JSX。类语法是 camelCase。 【参考方案1】:

我会先给圆圈一个固定的heightwidth。然后给它一个border-radius of 50%。这将解决第一个问题(使其成为一个完美的圆圈)。

文本居中的第二个问题。给 span 一个 display: flex 然后使用 align-items: center;justify-content: center; 就可以了。

.index 
    margin: 5px 0 0 5px;
    color: black;
    height: 50px;
    width: 50px;
    position: relative;
    align-items: center;
    justify-content: center;
    display: flex;
    font-size: xx-large;
    border: 3px solid rgb(223, 217, 217);
    border-left-color: rgb(255, 170, 11);
    border-bottom-color: rgb(255, 170, 11);
    /* padding: 15px; */
    border-radius: 50%;

【讨论】:

【参考方案2】:

仅将 display: flex 应用于父 div .mod-container.,包含 2 位数字的 &lt;span class="index"&gt; 元素正在增长以填充其父容器的内容。

接下来,我将.mod-container flexbox 内容以justify-content: center 居中,并使用align-items: flex-start 对齐。这似乎与您想要的图像相匹配。 (如果需要,我可以将类语法更新为 JSX)

.second-col-container 
  background-color: white;
  width: 250px;
  grid-area: air-index;
  margin-top: 20px;
  border-radius: 10px;


.second-col-container h2 
  margin-bottom: 20px;
  margin-left: 10px;


.para-mod 
  font-size: small;
  color: grey;
  display: flex;
  flex-direction: column;
  margin-left: 10px;


.index 
  margin: 5px 0 0 5px;
  color: black;
  font-size: xx-large;
  border-radius: 50%;
  border: 3px solid rgb(223, 217, 217);
  border-left-color: rgb(255, 170, 11);
  border-bottom-color: rgb(255, 170, 11);
  padding: 15px;


.mod-container 
  display: flex;
  justify-content: center;
  align-items: flex-start;
<div class="second-col-container">
  <h2>Air Quality Index</h2>
     <div class="mod-container">
       <span class="index">58</span>

     <div class="para-mod">
       <span class="mod">Moderate</span>
      <div>
        Air quality is acceptable; however, for some pollutants there
        may be a moderate health concern for a very small number of
        people who are unusually sensitive to air pollution.
      </div>
    </div>
  </div>
</div>

【讨论】:

以上是关于flex 容器破坏了边界半径,如何解决这个问题?的主要内容,如果未能解决你的问题,请参考以下文章

图像出现在 UIImageView 角半径边界 swift

边界半径和溢出:隐藏(离子应用程序)

如何使用 flex-grow 使图像填充 flex 项目?

三个div呈品字形排列用css3的flex方式怎么写?

如何为谷歌地图信息窗口设置边界半径

使用flex-parent会破坏单项Flex布局