【发布时间】:2019-04-04 14:47:19
【问题描述】:
更新:寻求不同的解决方案:
<img is=queen-of-hearts>
直播地址:https://card-ts.github.io/playingcardts
这个问题是关于解决 CSS 选择器限制
所以我的自定义元素现在可以制作真正的语义 HTML:
显示:
没有外部 SVG 文件,
所有 500KB 的 SVG 都(手动)精简,LZMA 压缩到 70KB 到 ONE 自定义元素
然后使用Supersharps class factory code创建所有 52 张卡片(自定义元素)@
下一个问题出现了...使用什么选择器?
我可以做到: 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;
}
我想这样写 CSS:
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>
- 自动关闭
- 是单个 DOM 元素
- 可以使用 CSS 选择器
img[is*=queen]访问 - 唯一的限制是=必须是小写...
可能比我开始使用的自治自定义元素的表示法更好:
<card-t cid=Queen-of-Hearts></card-t>
两者(我必须说 53 个元素)都包含在单个 16 KB 文件中:
https://card-ts.github.io/playingcardts
【问题讨论】:
-
为什么不创建 CSS 类
queen和king?另外,我宁愿创建一个<play-card type="King" color="Heart">组件。这将允许[type="Queen"] + [type="King"]选择器。 -
另外,创建一个游戏卡组件将有助于避免大量代码重复。
-
tnx,属性是我提到的替代方案。在 v1 中有它..不用担心..工作正常..仍然是冗长的 CSS。使用 Supersharps 代码示例,我今天创建了这 52 个元素......并点击了这个“我想要动态节点名选择器”问题。 ---- 就像 WCs 从 HTMLelement 扩展而来,这 52 个卡片类从一个 Cardt 类扩展而来(甚至不是像 IMG 上的 SVG 那样的 shadowDOM),...它将在一周或 2 或 3 周后出现在 GitHub 上,任何人都可以挑选并推动改进。目标是学习..学习..学习..这不是一个投入生产的项目。看到许多更糟糕的“卡片”项目:-)
-
你可以设置属性
<king-of-spades black king spades></..>,那么你的选择器就是[queen] + [king]。 @connexo 根据developers.google.com/web/fundamentals/web-components/… 你不应该自我应用类(状态应该通过属性来表达)。 -
的价值在于它使扑克牌不可变/只读。另外(非常主观的)“最佳”实践在这种情况下不使用不相关的类:添加类的不是组件作者,而是添加它们以实现 CSS 选择的组件用户(人类或容器应用程序)容易地。归根结底是语义和可用性之间的两难选择。
标签: css-selectors web-component custom-element