【发布时间】:2017-11-07 13:10:12
【问题描述】:
我正在使用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;
}
当我在第一个项目之后开始拖动任何项目时,它工作正常,即使我用第一个项目切换它也能正常工作。
它创建以下标记:
但是当我从第一个开始拖动时,我会失去样式,因为插件会在其位置创建另一个项目并将其设置为display: none,因此:first-child 选择器将不再起作用,并且它丢失了样式。
This gif 显示正在发生的事情。
如果第一个元素是display: none,我的第一个问题就是以某种方式跳过它,或者使用:first-child:visible 之类的东西,但这显然行不通。
有什么解决办法吗?
【问题讨论】:
-
是否可以使用类而不是内联样式隐藏某些可拖动项?在这种情况下,您可以使用 :not(.hidden) 选择器
-
实际上我正在查看插件的源代码,以便可以向隐藏的已创建元素添加一个类。我试试看。
标签: javascript html css css-selectors sortablejs