带有CSS:标记的自定义项目符号

2020-10-08 09:12:39

多亏了彭博社(Bloomberg)赞助的伊加利亚(Igalia),我们终于可以收起我们的黑客作品,供造型师使用。看见!。

多亏了CSS::Mark,我们可以更改内容以及项目符号和数字的一些样式。

当Chromium 86发布时,Firefox将在桌面和Android、桌面Safari和iOS Safari以及基于Chromium的桌面和Android浏览器中支持::Marker。有关更新,请参阅MDN';的浏览器兼容性表。

Lorem ipsum door sit amet consecsecteur adipisking elit Dolores quaerat illo totam porro Quidem aliquid perferpttates Ipsa adipisci fugit假定dicta voluptates nihil represiderit consecsecteur alic itur alias ifa is rem fuga。

每个<;li>;项目开头的圆点是免费的!浏览器正在为您绘制并创建一个生成的标记框。

今天,我们很兴奋地讨论一下::mark伪元素,它提供了设置浏览器为您创建的项目符号元素的样式的能力。

关键字:伪元素表示文档中的元素,而不是文档树中存在的元素。例如,您可以使用伪元素p::first-line选择段落的第一行,即使没有HTML元素对该行文本进行换行。

在每个列表项元素内、实际内容之前和::BEFORE伪元素之前自动生成::Marker伪元素标记框。

通常,列表项是<;li>;HTML元素,但其他元素也可以通过display:list-item变成列表项。

Lorem Lorem ipsum door Set amet consecsecteur adipisking elit Dolores quaerat illo totam porro ipsum quidem iquid perferendis voluptates。

直到::MARKER,可以使用LIST-STYLE-TYPE和LIST-STYLE-IMAGE设置列表样式,以使用一行CSS更改列表项符号:

那很方便,但我们还需要更多。改一下颜色、大小、间距等怎么样?这就是::Mark出手相救的地方。它允许从CSS单独和全局定位这些伪元素:

警告:如果上面的列表没有粉色项目符号,则您的浏览器不支持::MARKER。

列表样式类型的属性提供的样式可能性非常有限。::mark伪元素意味着您可以将标记本身作为目标,并直接对其应用样式。这允许更多的控制。

也就是说,您不能在::标记上使用所有CSS属性。规范中明确指出了哪些特性是允许的,哪些是不允许的。如果您尝试用这个伪元素做一些有趣的事情,但是不起作用,下面的列表是您的指南,告诉您使用CSS可以做什么,不可以做什么:

更改::标记的内容是使用内容完成的,而不是使用列表样式类型。在下一个示例中,第一个项使用list-style-type设置样式,第二个项使用::mark设置样式。第一种情况下的属性应用于整个列表项,而不仅仅是标记,这意味着文本和标记一样都是动画。使用::Mark时,我们可以只针对标记框而不是文本。

LI:第n-Child(1){list-style-type:';?';;font-size:2rem;Background:HSL(200 20%88%);动画:color-change 3s缓入无限;}。

Li:nth-Child(2)::mark{Content:';!';;font-size:2rem;Background:HSL(200 20%88%);动画:color-change 3s缓入无限;}。

抓到你了!在Chromium中,空白仅适用于内部定位的标记。对于外部定位的标记,样式调整器始终强制使用空格:PRE以保留尾随空格。

Li::Marker{内容:url(/Heart.svg);内容:url(#core);内容:url(";数据:image/svg+xml;字符集=Utf-8,<;svg xmlns=';http://www.w3.org/2000/svg';版本=';11';高度=';24';宽度=';24';>;<;路径d=';M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 319.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z&39;Fill=';None';PICK=';Hotink-Width=';3';/>;<;/SVG>;";);}。

更改编号列表<;ol>;怎么办?默认情况下,有序列表项上的标记是数字,而不是项目符号。在CSS中,这些被称为计数器,它们非常强大。它们甚至具有设置和重置数字开始和结束位置的属性,或者将数字切换为罗马数字。我们能给它做个发型吗?是的,我们甚至可以使用标记内容值来构建我们自己的编号表示。

Chrome DevTools可以帮助您检查、调试和修改应用于::mark伪元素的样式。

能接触到一些很难定型的东西真是太棒了。您可能希望可以设置其他自动生成的元素的样式。您可能会对<;Details>;或搜索输入自动完成指示符感到失望,因为它们在不同浏览器中的实现方式不同。分享你需要的东西的一种方式是在https://webwewant.fyi.上创建一个想要的东西