css 中两个class之间没有空格与有空格有什么区别

2013-10-18 18:33:53 +08:00
 guotie
例如: .ui.item {....}

和 .ui .item {....}

还有 .ui > .item {....}


thx
10636 次点击
所在节点    CSS
12 条回复
alexrezit
2013-10-18 18:47:17 +08:00
'x y' 是选择 x 下面所有 y.
'x > y' 是选择 x 下面第一层 child element 中的 y.

至于连着写好像是同时符合多个的, 不太清楚.
luikore
2013-10-18 19:12:49 +08:00
没空格是交集, 有空格是先后代关系
luikore
2013-10-18 19:13:55 +08:00
http://semantic-ui.com/ 就是用交集法的, 选择器比 bootstrap 好看很多
dorentus
2013-10-18 19:41:19 +08:00
learnshare
2013-10-18 20:21:50 +08:00
第一个匹配: <div class="ul item"></div>;无法匹配:<div class="ul"></div> 和 <div class="item"></div>;
第二个匹配:<div class="ul"><div class="item"></div></div> 中间的 div;
第三个匹配:<div class="ul"><div class="item"></div></div> 中间的 div;无法匹配:<div class="ul"><div class="abc"><div class="item"></div></div></div>。

三个的区别是:
规则 .ul.item 匹配 class 属性同时含有 ul 和 item 的元素;
规则 .ul .item 匹配 class 属性包含 ul 的元素中 *任意的* class 属性包含 item 的元素(二者是祖先元素与后代元素的关系);
规则 .ul > .item 匹配 class 属性包含 ul 的元素的子元素中 class 属性包含 item 的元素(二者是父元素与子元素的关系,在相邻的层)。

参考: https://github.com/LearnShare/blog/blob/master/posts/drafts/css/css_selectors.md
learnshare
2013-10-18 20:23:17 +08:00
@luikore 我也不喜欢 Bootstrap 的 class 声明,太繁琐
ray1980
2013-10-18 23:08:13 +08:00
@learnshare 这三个对浏览器支持怎么样?ie6支持么?
Keinez
2013-10-19 02:50:25 +08:00
@ray1980 不支持>,不过IE6已死,放心用。作为国内用户群最庞大的渣站之一,人人早在数年前就这么写了。
learnshare
2013-10-19 09:29:42 +08:00
@Keinez +1 > 是 CSS3 选择器模块中的规则,IE6 应该无效。不过做一个提示 IE6 升级的功能,比兼容它要容易。
Keinez
2013-10-19 10:47:53 +08:00
@learnshare 错了,那是CSS2的特性……
Keinez
2013-10-19 10:54:57 +08:00
http://kimblim.dk/css-tests/selectors/

不同版本的selectors支持列表。
learnshare
2013-10-19 14:33:43 +08:00
@Keinez 对,是 CSS2...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/86048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX