CSS flex:行选择器中的最后一项和第一项

CSS flex: last and first item in a row selector

我在尝试 select 弹性容器第一行的最后一个元素和最后一行的第一个元素时遇到问题。

我的 flex 容器是 flex-wrap: wrap;,我所有的元素都是 flex: auto;,它们有不同的大小,通过 flex auto,我让元素适合我的容器,我的角落元素有他们各自的角是圆的。

但是,问题是,我正在隐藏和显示带有事件的元素(比如单击),并且我需要在每次更改时将角元素设置为圆角,如果它有我可以选择的网格容器by nth-child 因为它永远不会改变列数。但是在 flex 中每行有不同数量的元素。

我想出了一个 Jquery 解决方案(link 下面的解决方案),但我认为它很吸引眼球而且很大,可能有更聪明的方法或简单的 select 或者我不能用

请帮我想出一个更好的代码,所以不仅仅是我不能很好地使用它。

http://jsfiddle.net/aj1vk0rv/

编辑: 只是改进了一点代码 http://jsfiddle.net/aj1vk0rv/1/

我没有看到任何简单的解决方案,但这种方式有点干净:

var fun = function () {
var flex = $(".container");
var cw = flex.width(); // container width
var ch = flex.height(); // container height

var tl = $(".ui-widget:visible:first");
var tr = $(".ui-widget:visible").closestToOffset({left: cw-20, top: -20});
var bl = $(".ui-widget:visible").closestToOffset({left: 0+20, top: ch+20});
// those '20's are to to throw away from the others elements
var br = $(".ui-widget:visible:last");

$(".ui-widget").removeClass(function (index, css) {
    return (css.match(/\ui-corner-\S+/g) || []).join(' ');
});

tl.addClass("ui-corner-tl");
tr.addClass("ui-corner-tr");
bl.addClass("ui-corner-bl");
br.addClass("ui-corner-br");