具有分组功能的 ExtJS 5 网格:带有框阴影的选定行
ExtJS 5 grid with grouping feature: Selected row with box shadow
我想在同样使用分组功能的网格中将框阴影添加到所选行。最初我只是将框阴影应用于所选行的 table
元素:
.x-grid-item-selected {
box-shadow: 0 0 6px 2px rgb(119, 119, 119) inset;
}
不幸的是,组中第一行的 table 元素还包含组 header,当我选择组中的第一行时,它给了我这个结果:
我也无法将框阴影应用于网格行 (.x-grid-item-selected .x-grid-row
) 的 tr
元素,因为 chrome 不支持 [=12= 上的框阴影] 元素(至少在没有将它们的显示 属性 设置为块时不会完全破坏布局)。
将框阴影应用于每个单元格 (.x-grid-item-selected .x-grid-cell
) 显然也没有给我想要的外观:
下面是我希望所选行实际看起来的样子(只是为了完整起见):
在 ExtJS 4 中,我能够通过使用随 ExtJS 5 删除的 RowWrap 功能来完成此操作。
如果有人能给我一些帮助,我将不胜感激!
这里有一个 fiddle 可以玩:https://fiddle.sencha.com/#fiddle/jkv
谢谢并致以最诚挚的问候
Ps.: 我也在 Sencha Forums
上问过这个问题
考虑到 arthurakay who 的建议,我能够通过使用 linear-gradients
而不是 box shadows
找到合适的解决方案,看起来像这样:
.x-grid-item-selected .x-grid-cell {
background:
linear-gradient(top, rgb(119, 119, 119), transparent 6px),
linear-gradient(bottom, rgb(119, 119, 119), transparent 6px);
// Browser specific prefixed versions...
}
.x-grid-item-selected .x-grid-cell:first-child {
background:
linear-gradient(top, rgb(119, 119, 119), transparent 6px),
linear-gradient(bottom, rgb(119, 119, 119), transparent 6px),
linear-gradient(left, rgb(119, 119, 119), transparent 6px);
// Browser specific prefixed versions...
}
.x-grid-item-selected .x-grid-cell:last-child {
background:
linear-gradient(top, rgb(119, 119, 119), transparent 6px),
linear-gradient(bottom, rgb(119, 119, 119), transparent 6px),
linear-gradient(right, rgb(119, 119, 119), transparent 6px);
// Browser specific prefixed versions...
}
由于这仍然有些麻烦,如果您能提供更多意见以更 "elegant" 的方式解决此问题,我将不胜感激。
这是工作 fiddle:https://fiddle.sencha.com/#fiddle/jrh
谢谢并致以最诚挚的问候
我刚刚找到了另一个实际上更符合我需求的解决方案,因为 linear gradient
的使用会干扰一些其他样式(例如,第一个单元格的背景图像取决于内容,...)。
此解决方案使用伪元素after
:
.x-grid-item-selected .x-grid-row:after {
content: '';
width: 100%;
height: 20px;
position: absolute;
left: 0;
box-shadow: 0 0 6px 2px rgb(119, 119, 119) inset;
}
工作fiddle:https://fiddle.sencha.com/#fiddle/jrm
这种方法唯一的缺点是我必须设置一个固定的高度。
再一次,如果有人想出更好的方法来做到这一点,我将不胜感激。
谢谢并致以最诚挚的问候
我想在同样使用分组功能的网格中将框阴影添加到所选行。最初我只是将框阴影应用于所选行的 table
元素:
.x-grid-item-selected {
box-shadow: 0 0 6px 2px rgb(119, 119, 119) inset;
}
不幸的是,组中第一行的 table 元素还包含组 header,当我选择组中的第一行时,它给了我这个结果:
我也无法将框阴影应用于网格行 (.x-grid-item-selected .x-grid-row
) 的 tr
元素,因为 chrome 不支持 [=12= 上的框阴影] 元素(至少在没有将它们的显示 属性 设置为块时不会完全破坏布局)。
将框阴影应用于每个单元格 (.x-grid-item-selected .x-grid-cell
) 显然也没有给我想要的外观:
下面是我希望所选行实际看起来的样子(只是为了完整起见):
在 ExtJS 4 中,我能够通过使用随 ExtJS 5 删除的 RowWrap 功能来完成此操作。
如果有人能给我一些帮助,我将不胜感激!
这里有一个 fiddle 可以玩:https://fiddle.sencha.com/#fiddle/jkv
谢谢并致以最诚挚的问候
Ps.: 我也在 Sencha Forums
上问过这个问题考虑到 arthurakay who linear-gradients
而不是 box shadows
找到合适的解决方案,看起来像这样:
.x-grid-item-selected .x-grid-cell {
background:
linear-gradient(top, rgb(119, 119, 119), transparent 6px),
linear-gradient(bottom, rgb(119, 119, 119), transparent 6px);
// Browser specific prefixed versions...
}
.x-grid-item-selected .x-grid-cell:first-child {
background:
linear-gradient(top, rgb(119, 119, 119), transparent 6px),
linear-gradient(bottom, rgb(119, 119, 119), transparent 6px),
linear-gradient(left, rgb(119, 119, 119), transparent 6px);
// Browser specific prefixed versions...
}
.x-grid-item-selected .x-grid-cell:last-child {
background:
linear-gradient(top, rgb(119, 119, 119), transparent 6px),
linear-gradient(bottom, rgb(119, 119, 119), transparent 6px),
linear-gradient(right, rgb(119, 119, 119), transparent 6px);
// Browser specific prefixed versions...
}
由于这仍然有些麻烦,如果您能提供更多意见以更 "elegant" 的方式解决此问题,我将不胜感激。
这是工作 fiddle:https://fiddle.sencha.com/#fiddle/jrh
谢谢并致以最诚挚的问候
我刚刚找到了另一个实际上更符合我需求的解决方案,因为 linear gradient
的使用会干扰一些其他样式(例如,第一个单元格的背景图像取决于内容,...)。
此解决方案使用伪元素after
:
.x-grid-item-selected .x-grid-row:after {
content: '';
width: 100%;
height: 20px;
position: absolute;
left: 0;
box-shadow: 0 0 6px 2px rgb(119, 119, 119) inset;
}
工作fiddle:https://fiddle.sencha.com/#fiddle/jrm
这种方法唯一的缺点是我必须设置一个固定的高度。 再一次,如果有人想出更好的方法来做到这一点,我将不胜感激。
谢谢并致以最诚挚的问候