2017-11-07 10 views
0

私はSortable.jsを使用していると私は次のような問題を抱えている:スキップ隠し要素:第一子セレクタ

私はソートしたい項目のリストを持っている、と私はすべき最初の要素を必要とします他の3つすべてよりも広い。

これを行うために、私は次のCSSを持っている:

#produto_img { 
    display: -webkit-box; 
    display: -ms-flexbox; 
    display: flex; 
    -ms-flex-wrap: wrap; 
     flex-wrap: wrap; 
} 

#produto_img > li { 
    height: 100px; 
    margin: 0 5px; 
} 

#produto_img > li:not(:first-child) { 
    flex: 1; 
} 

#produto_img > li:first-child { 
    width: 100%; 
    height: 200px; 
    margin-bottom: 10px; 
} 

私はそれが正常に動作します最初の項目に切り替えても、最初の後に任意の項目をドラッグを開始するときには、正常に動作します。

それは次のマークアップを作成

First-markup

をしかし、私は最初からドラッグを開始するときにプラグインがその場所に別の項目を作成し、display: noneに設定しますので、私はスタイリングを失うことになるので、 :first-childセレクタはもう使用できなくなり、スタイリングが失われます。

Second-markup

This gif何が起こっているかを示しています。

enter image description here

私の最初の取り払わは何とかそれがdisplay: noneである場合には、第1の要素をスキップし、または:first-child:visibleようなものを使用することですが、これは明らかに、機能していません。

回避策はありますか?

+0

の問題だが、クラスの代わりに、インラインスタイルで特定のdraggablesを非表示にすることが可能ですか?その場合、:not(.hidden)セレクタを使用することができます –

+0

実際にプラグインのソースコードを調べているので、隠し作成された要素にクラスを追加できます。やってみます。 – Phiter

答えて

2

悲しいことに、:visible疑似クラスはjQueryとはまだ異なります。ただし、クラスを追加/削除することで隠蔽を処理することもできます。

そして、それは上書き

li.hidden { 
    display: none; 
} 

li:not(.hidden) { 
    width: 100%; 
    height: 200px; 
    margin-bottom: 10px; 
} 

li:not(.hidden) ~ li { 
    width: auto; 
    height: auto; 
    margin-bottom: 0; 
    flex: 1; 
} 
+0

私は、作成した不可視のクローンにカスタムクラスを追加するようにプラグインを変更することができました。私は今それを試してみます – Phiter

+0

神の聖母それは働いた! – Phiter

+0

@Phiter喜んで私は助けることができる:) – Scoots

関連する問題