【发布时间】:2022-01-15 19:25:25
【问题描述】:
我在一个容器中有一行项目,这些项目的大小取决于屏幕大小。 总会有项目留在网格之外,最后一个通常只有一半。
我需要做的是完全隐藏任何部分显示的项目。不幸的是,对于某些屏幕尺寸,我没有固定数量的项目,在这种情况下,我需要在我的容器中显示任意数量的项目。 如何做到这一点?
这是我当前代码的示例: 请注意最后一项如何仅部分适合屏幕。如果它不能完全放入我的容器中,我想隐藏它。
如何做到这一点?
const Item = () => {
return (
<div className="item"/>
);
};
const App = () => {
return (
<div>
<div className="container">
{Array.from({ length: 20 }).map((_, index) => (
<Item key={index} />
))}
</div>
<p>
Objective: all items need to be within the container. See how the last
one only fits half way. I would like it to be completely hidden.
</p>
</div>
);
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
.item {
width: 100px;
height: 100px;
background-color: red;
border: 3px solid blue;
}
.container {
padding: 10px;
width: 60%;
overflow: hidden;
border: 3px solid black;
/* CSS grid related properties */
display: grid;
grid-template-columns: repeat(auto-fill, 120px);
grid-auto-rows: 120;
grid-auto-flow: column;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.0/umd/react-dom.production.min.js"></script>
<div id="app"></div>
编辑:这个组合还有另一个复杂之处,那就是我应该在所有隐藏的项目上都有一个按钮,只要按下该按钮就可以滚动到隐藏的项目。 所以基本上我仍然需要将所有项目隐藏在一边,而不是在可见行的下方。
【问题讨论】:
-
你能看看我创建的代码框codesandbox.io/s/charming-fermat-k9jmy?file=/src/styles.css。由于丑陋的黑客
margin: 10px,有点犹豫是否将其作为答案。 -
@SangeetAgarwal 谢谢。这确实部分解决了问题。然而,隐藏的图块隐藏在下面一行中的事实由于其他原因导致了问题。基本上我使用一个为我手动滚动的按钮滚动它们(基本上显示溢出隐藏的任何内容)。我将更新帖子以包含此信息。抱歉,以前没有,我认为它不相关/
标签: javascript css reactjs css-grid