更新:寻求其他解决方案:
<img is=queen-of-hearts>
生活在:https://card-ts.github.io/playingcardts
此问题是有关解决CSS选择器限制的问题
因此,我的自定义元素现在可以生成真正的对称HTML:
显示:
没有外部SVG文件,
将所有500KB SVG(手动)精简,并将LZMA打包为70KB,放入 ONE 自定义元素
然后使用Supersharps class factory code
Queen-of-Hearts {
transform: rotate(20deg)
}
但是要突出显示跟随女王(仅上面一个)的每个国王,CSS变得冗长:
Queen-of-Spades+King-of-Spades,
Queen-of-Hearts+King-of-Hearts,
Queen-of-Diamonds+King-of-Diamonds,
Queen-of-Clubs+King-of-Clubs,
Queen-of-Hearts+King-of-Spades,
Queen-of-Hearts+King-of-Hearts,
Queen-of-Hearts+King-of-Diamonds,
Queen-of-Hearts+King-of-Clubs,
Queen-of-Diamonds+King-of-Spades,
Queen-of-Diamonds+King-of-Hearts,
Queen-of-Diamonds+King-of-Diamonds,
Queen-of-Diamonds+King-of-Clubs,
Queen-of-Clubs+King-of-Spades,
Queen-of-Clubs+King-of-Hearts,
Queen-of-Clubs+King-of-Diamonds,
Queen-of-Clubs+King-of-Clubs {
transform: scale(1.2);
border: 1px solid green;
}
Queen* + King* {
transform: scale(1.2);
border: 1px solid green;
}
大量的jQuery回答“部分选择器”,使用JS进行蛮力搜索
我已经搜索了CSS4 Selectors,没有什么引起我的注意
我也可以(有点暴力)用JS创建所有CSS规则
是忽略节点名称并添加(数据)属性或类名称的唯一选择吗?
注意:我有一个<Queen-of-Hearts rank="Queen" suit="Hearts" />
的版本,
但这不像语义上的“令人愉快”
对任何指针感兴趣,希望找到一种优雅的解决方案来捕获CSS中的纸牌或扑克规则,
没有浏览器限制,
这是一个“探索浏览器功能的乐趣” 项目...
清理后将在GitHub
使用我们忽略的表示法:扩展内置元素:
<img is=queen-of-hearts>
img[is*=queen]
甚至可能比我开始的自治自定义元素的符号更好:
<card-t cid=Queen-of-Hearts></card-t>
两者(我必须说53个元素)都包含在单个16 KB文件中:
答案 0 :(得分:0)
如果您最终决定使用Connexo建议的唯一自定义元素名称,那么保留 named 属性以定义等级和西装也许会很有用。
<playing-card rank="Queen" suit="Hearts">
然后,您可以定义将双向反映属性值的属性。
card.rank === card.getAttribute( 'rank' )
这样,与使用属性作为值相比,查找卡片的值会容易得多。
考虑此符号:
<playing-card queen hearts></playing-card>
问题:它的价值是什么?
let card = game.querySelector( 'playing-card' )
if ( card.getAttribute( 'spades ') )
suit = spades
else if ( card.getAttributes( 'diamonds' ) )
...
或者,您可以使用单个name
属性:
html
<playing-card name="10-of-spades">
javascript
//easy manipulation
let card = document.querySelector( 'playing-card' )
let [rank, suit] = card.name.split( '-of-' )
css
//easy selection (...for advanced CSS users)
[name|=king] + [name|=queen] //Queens after a King
[name|=1] //Aces
[name$=spades] //Spades