2017-11-18 8 views
1

私はサイズが最初等しい行ごとに3つのdivを、持っていたいフレキシボックスの問題を解決しようとしているが、div要素をホバリングするとき、1つは成長し、他のもの同じ行に収縮する。私はそれを複数の行にわたって試してみるまで、私はそれを解決したと思った。私が欲しいもの兄弟縮小し、フレックス項目がホバーに拡大してください

は、第三のdivをホバリングするとき、それは第一および第二のdivを縮小し、そのまま残りの部分を残しています。私はその部分を理解することはできません。

以下は、私の1列作業ソリューションです。

このレイアウトは複数の行にも適用できますか?

各行を別のコンテナにラップする必要がありますか、これを解決する方法はありますか?

.container { 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    width: 100%; 
 
} 
 

 
.box { 
 
    width: 33%; 
 
    flex: 1; 
 
} 
 

 
.box:hover { 
 
    flex-grow: 3; 
 
}
<div class="container"> 
 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 

 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 

 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 
</div>

See it on CodePen

+0

は、あなただけの2番目の列はホバー上に成長したいですか? – Kushtrim

+0

6つのボックスdiv(3行2列)を持っていて、2番目のdivに移動し、2番目のdivを展開し、div 1と3を縮小し、4〜6をdivsに変更しないでください。 – yayheartbeat

+0

これは多かれ少なかれ可能ですが、主に必要なのは、ホバリングされた要素がどの行かを検出し、その行の要素を拡大/縮小するだけで、_previous sibling_のセレクタはありません。 – LGSon

答えて

0

私は彼らが同じコンテナに整列得るために、私の最善を試してみましたが、彼らはそこにフィットしていないようです。別々の容器に入れておく方が良いでしょう。これにより

、彼らはよく見るし、あなたが個別に適用する必要がある場合には、いくつかの簡単なスタイリングを行うことができます。ここで

Fiddle

.container { 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    width: 100%; 
 
    justify-content: space-between; 
 
} 
 

 
.box { 
 
    width: 30%; 
 
    flex: 1 1 2%; 
 
    transition: all 0.3s ease-in-out; 
 
} 
 

 
.box:hover { 
 
    flex-grow: 2; 
 
}
<div class="container"> 
 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 

 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 

 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 
</div> 
 

 
<div class="container"> 
 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 

 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 

 
    <div class="box"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
     ut labore et dolore magna aliqua. </p> 
 
    </div> 
 
</div>

0

である私は、別の容器内の各行をラップする必要があるか、これを解決する方法はありますか?

あなたは別の容器内の各行をラップする必要があります。

ラッピングが有効なので、フレックスボックスではレイアウトできません

これはラップをトリガすることなく、その兄弟を縮小しながら、単一の行の項目が展開させることができないことを意味します。 兄弟姉妹を包むだけで、兄弟姉妹を縮小させることは何もありません。

flex-wrap: wrapなし行の長さがハードリミットを有します。ホバー上で長い長さのアイテムを与えることができます(私の例ではflex-basis: 100%を使用します)、ラップの心配なしに兄弟を縮小しながら展開できます。

.container { 
 
    display: flex; 
 
} 
 

 
.box { 
 
    flex-basis: 33.33%; 
 
} 
 

 
.box:hover { 
 
    flex-basis: 100%; 
 
} 
 

 

 
/* for demo only */ 
 
.box { 
 
    transition: .5s; 
 
    border: 1px dashed red; 
 
    box-sizing: border-box; 
 
}
<div class="container"> 
 
    <p class="box">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut la bore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
    ut labore et dolore magna aliqua. </p> 
 
    <p class="box">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
    ut labore et dolore magna aliqua. </p> 
 
    <p class="box">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
    ut labore et dolore magna aliqua. </p> 
 
</div> 
 

 
<div class="container"> 
 
    <p class="box">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut la bore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
    ut labore et dolore magna aliqua. </p> 
 
    <p class="box">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
    ut labore et dolore magna aliqua. </p> 
 
    <p class="box">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
 
    ut labore et dolore magna aliqua. </p> 
 
</div>

関連する問題