我製作了一個 JSFiddle 來重現這個問題。
我試圖讓一個網格元素在懸停時增長,但它會導致這個奇怪的問題,它會進入另一個網格元素下方,然後跳到我期望的方式。
為什麼會發生這種情況?有辦法解決嗎?
.container { height: 100vh; width: 100vw; display: grid; grid-template: 1fr / 1fr 1fr; margin: 1em; grid-gap: 1em; } .box { height: 100%; width: 100%; transition: width 0.5s; } .one { background: pink; } .two { background: red; } .box:hover { width: 60vw; }
<div class="container"> <div class="box one"></div> <div class="box two"></div> </div>
P粉6137352892023-09-14 13:20:25
我寫了一篇關於這種效果的詳細文章,我邀請您閱讀以了解如何使用CSS 網格實現這種效果:https://css-tricks.com/zooming-images-in -a-grid-layout/
.container { height: calc(100vh - 2em); display: grid; grid-template-columns: auto auto; margin: 1em; gap: 1em; } .box { width: 0; min-width: 100%; transition: width 0.5s; } .box:hover { width: 40vw; /* read the article to understand the math behind setting this value */ } .one {background: pink;} .two {background: red;} body { margin: 0; }
<div class="container"> <div class="box one"></div> <div class="box two"></div> </div>
P粉1896062692023-09-14 11:33:00
您可以將 Flexbox 與 flex
簡寫屬性:
.container { display: flex; gap: 1em; margin: 1em; } .box { flex: 1; /* This makes boxes take equal space by default */ transition: 0.5s; } .box:hover { flex: 2; /* A hovered box expands twice as fast as a non-hovered */ }
嘗試一下:
.container { display: flex; gap: 1em; margin: 1em; } .box { flex: 1; transition: 0.5s; } .box:hover { flex: 2; } /* Demo only */ body { margin: 0; } .container { height: 100vh; } .box { height: 100%; } .one { background: pink; } .two { background: red; }
<div class="container"> <div class="box one"></div> <div class="box two"></div> </div>