我正在尝试使用 flexbox 将容器内显示的所有字母均匀地间隔开来。现在,如果我输入像“我喜欢学习代码”这样的句子,所有元素都显示在容器中并且工作正常,但是如果我使用像“冰箱”这样的长词,字母就会从容器中出来。但是我试图将所有字母都保留在容器中,无论单词有多长。我尝试了所有可用的 flexbox 技术,但没有运气。也尝试了容器上的max-width。我错过了什么?下面是代码沙盒中的代码: https://codesandbox.io/s/modern-sun-3u7b3?file=/src/App.jsimport React from "react";import "./styles.css";function App() { // let sentence = "I like learning code"; let sentence = "refrigerator"; const words = sentence.split(" "); return ( <div className="pageContainer"> {words.map((word, i) => ( <div className="row" key={i}> {[...word].map((letter) => ( <p className="letterBorder">{letter}</p> ))} {i === words.length - 1 ? null : <p className="whiteSpaceBorder"></p>} </div> ))} </div> );}export default App;.letterBorder { border: 25px; background: grey; padding: 20px; width: 50px; height: 30px; flex-grow: 1; margin-right: 4px; margin-left: 4px;}.row { display: flex; justify-content: space-evenly; min-width: 100%; align-content: flex-start;}.whiteSpaceBorder { border: 25px; background: orange; padding: 20px; width: 50px; height: 30px; flex-grow: 1; margin-right: 4px; margin-left: 4px;}.pageContainer { border-radius: 1rem; text-align: center; background: lightcyan; height: 40rem; width: 30rem; margin: auto;}
2 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
您的错误是由于 letterBorder 类的硬编码水平填充造成的。
取代
padding: 20px;
跟
padding: 20px 0;
https://codesandbox.io/s/gracious-violet-qg1xt?file=/src/App.js
智慧大石
TA贡献1946条经验 获得超3个赞
这就是 css 属性派上用场的地方。默认情况下,Flexbox 项目都尝试放在一行中。但是,您可以使用 使它们换行。flex-wrapflex-wrap: wrap
将其添加到行类中:
.row {
display: flex;
flex-wrap: wrap; /* Allow items in row to "wrap" to next line if needed */
justify-content: space-evenly;
min-width: 100%;
align-content: flex-start;
}
添加回答
举报
0/150
提交
取消