gpt4 book ai didi

html - CSS 网格 : Pushing a div to the first column and making it span 100% on hover

转载 作者:行者123 更新时间:2023-11-28 00:43:50 25 4
gpt4 key购买 nike

我开始使用 CSS3 网格开发网页,但偶然发现了一个我似乎找不到解决方案的问题。

基本上我有一个容器 div,我按如下方式填充:

#pages {
margin-top: 20px;
display: grid;
grid-template-columns: repeat(auto-fit,minmax(30%,1fr));
grid-template-rows: repeat(auto-fit, minmax(300px, auto));
justify-items: stretch;
grid-gap: var(--gridgap);
grid-column: 1 / 1;
grid-row: 2;
color: black;
}

HTML 看起来像这样:

<div id="pages">
<article class="pagecard">
<div class="cardheader">
<h1> Page1 </h1>
</div>

<div class="carddesc">
<p> orem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has</p>
</div>
</article>

<article class="pagecard">
<div class="cardheader">
<h1> Page2 </h1>
</div>
<div class="carddesc">
<p> Description test</p>
</div>
</article>

<article class="pagecard">
<div class="cardheader">
<h1> Page3 </h1>
</div>
<div class="carddesc">
<p> Description test</p>
</div>
</article>

...

通常这会导致每行 3 个容器。我想要做的是让一个容器在悬停时跨越整行。

我试过这样做:

.pagecard:hover{
grid-column: 1 / -1;

这似乎适用于第 1 列中的元素。当鼠标悬停在它上面时,它将跨越整行,并且所有其他元素都被正确地推到下一个。

但是,当我尝试将鼠标悬停在第 1 行第 2 列的元素上时,而不是定位到第 1 列然后拉伸(stretch),将元素向左推到下一行,元素本身跳到下一行。由于这种效果,它失去了悬停并开始来回“跳跃”。

这是否可以使用纯 CSS 和 HTML 解决?

基本上,当鼠标悬停在网格中的第 2 项上时:

1 2 3

4 5 6

结果应该是

2 2 2

1 3 4

6

希望任何人都可以指出我正确的方向。

提前致谢!

编辑:

我想这可以通过计算单元格的行然后将 grid-row: currentRow 附加设置为 grid-column 来使用 javascript 解决。但是,如果有仅 CSS 的解决方案,我很感兴趣!

最佳答案

恐怕你的 css 有设计问题。你说

Basically, when hovering over item #2 in a grid looking like:

1 2 3

4 5 6

It should result in

2 2 2

1 3 4

6

现在,如果您的鼠标移动并悬停在 1(第二行)上,第一行中的 2 2 2 将替换为 1 1 1,第二行中的 1 将替换为 2。然后您将得到

1 1 1

2 3 4

这会导致闪烁,因为您的鼠标“悬停”在数字 1 上,因此触发悬停在 1 上,然后发生切换,您的鼠标现在悬停在 2 上,然后悬停在 1 上,等等。

见下文。

#pages {
margin-top: 20px;
display: grid;
grid-template-columns: repeat(auto-fit,minmax(30%,1fr));
grid-template-rows: repeat(auto-fit, minmax(300px, auto));
justify-items: stretch;
grid-gap: var(--gridgap);
grid-column: 1 / 1;
grid-row: 2;
color: black;
}

#pages>article{
border: 1px solid black;
}

.pagecard:hover{
grid-column: 1 / 4;
grid-row: 1;
}
<head>
<meta name="viewport" content="width=device-width; initial-scale=1.0;">

<link rel="stylesheet" type = "text/css" href="./stylesheets/style.css">
</head>

<body>
<div id="pages">
<article class="pagecard">
<div class="cardheader">
<h1> Page1 </h1>
</div>

<div class="carddesc">
<p> orem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has</p>
</div>
</article>

<article class="pagecard">
<div class="cardheader">
<h1> Page2 </h1>
</div>
<div class="carddesc">
<p> Description test</p>
</div>
</article>

<article class="pagecard">
<div class="cardheader">
<h1> Page3 </h1>
</div>
<div class="carddesc">
<p> Description test</p>
</div>
</article>

<article class="pagecard">
<div class="cardheader">
<h1> Page4 </h1>
</div>

<div class="carddesc">
<p> orem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has</p>
</div>
</article>

<article class="pagecard">
<div class="cardheader">
<h1> Page5 </h1>
</div>
<div class="carddesc">
<p> Description test</p>
</div>
</article>

<article class="pagecard">
<div class="cardheader">
<h1> Page6 </h1>
</div>
<div class="carddesc">
<p> Description test</p>
</div>
</article>


</div>
</body>

关于html - CSS 网格 : Pushing a div to the first column and making it span 100% on hover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53653779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com