英超

翻译一个鲜为人知利用CSS计数器取代一些

2019-10-13 03:46:12来源:励志吧0次阅读

自从埃里克罗迈耶突出的CSS是如何能够在他的CSS / EDGE的收集 ,我们一直在寻找各种方法来代替效果,唯一可能曾经使用JavaScript与CSS的基础现金等价物。替换可执行脚本

,样式表往往与提高业绩和成果在一个更容易页。最早的例子,这是埃里克纯粹的CSS弹出 ,影响他简述文字出现和消失无JavaScript来驱动它 。

作为实现的CSS进步和提高,越来越多的是有可能纯粹和使用样式表,而不需要额外的脚本无论是站的前端或后端,减少了可执行代码。一种可能性是领悟我最近的是,仅使用位CSS2.1的生成内容属性,我们可以汇总和揭露补充有关整个部分页。

同其他许多博客, SitePoint的博客帖子有一个小的数据段结束时,每个帖子。该段让读者补充资料后,如它的发布日期,其标签,任何类别后提交下。就让我们来看看如何,我们可以很容易地添加新的资料,这只能使用的CSS 。

使用的CSS计数器

一个特点是仍然CSS2

.1不足了很长一段时间是的CSS计数器。 他们表面上一种通用的机制,编号群体中出现的内容的文件树。 可悲的是,支持这一功能的CSS一直缺少某些浏览器中很长一段时间。

什么是真正有趣的CSS柜台是,由于该法的展示柜台脱钩计数机制本身,我们可以利用它们显示的内容总罪状除了仅仅编号要素一系列。

作为一个简短的复习,以下是CSS2.1规范说,我们可以代替数字标记的一个典型的命令列表的CSS反实现或多或少相当于视觉效果:

ol { counter-reset: item; } ol li { display: block; } ol li:before { counter-increment: item; content: counter(item). ; }

此代码初始化一个反所谓item每ol内容。 然后,打开所有的li要素纳入block级的CSS盒子而不是它们的默认list-item盒所以他们将不会出现一个标记(即,一些或子弹从list-style-type属性) 。 最后,为每个清单项目

,它增加了这个item计数器,然后使得其目前的价值。

现在,这里是我们可以使用相同的机制来显示总数清单项目结束时的名单,只有轻微的和完全有效的修改:

ol { counter-reset: item; } ol li { display: block; counter-increment: item; } ol:after { display: block; content: Number of items in this list: counter(item) .; }

唯一的帽子戏法是不要求counter()函数一次以上。 具体来说,您呼叫只:after您完成递增计数器在每个元素你计数。 这种方式使用,可以看到的CSS柜台就像是有限的那种整数变量。

由于这两个广义能力,柜台的CSS和CSS生成的内容,我们就可以开始获得真正的创意空间。

入门创意:计数的事情在博客帖子

一个有趣的使用这种技术,以延长或,或许在某些情况下,完全取代方案代码

,如JavaScript或服务器端脚本,指望的事情。例如,以下是我可能会利用上述技术的数量不同的章节中SitePoint博客帖子:

/* Initialize counter to 1 (not 0) since titles are outside .entrytext but may include intro paras. */ .post { counter-reset: num-post-sections 1; } .post .entrytext h2 { counter-increment: num-post-sections; } #thisentry:after { content: This entry has counter(num-post-sections) sections.; }

上面的代码只是增加了反所谓num-post-sections每一次h2元素中遇到的entrytext的post ,然后显示结果结束时,就像以前的列表项目计数的例子。

当然,你不局限于仅仅指望一件事。 以下是我可能的数量部分和一些代码摘录在SitePoint博客中使用相同的模式:

.post { counter-reset: num-post-sections 1 /* titles outside .entrytext but may include intro paras */ num-code-listings ; } .post .entrytext h2 { counter-increment: num-post-sections; } /* match both with (precode) and without (-c) JavaScript code highlighting */ .post .entrytext pre code, -c { counter-increment: num-code-listings; } #thisentry:after { content: This entry has counter(num-post-sections) sections and counter(num-code-listings) code listings. ; }

画面显示这SitePoint博客帖子的CSS摘录与应用。

作为一个模式,这点变得更加有用,如果我们概括上述SitePoint具体的CSS规则,使他们的工作对任何博客文章的结构,其使用hAtom microformat ,因此您可以使用它在许多站或插入自己的浏览器作为用户的样式表 。 唯一的变化是必要的CSS选择器 ,但你可以很喜欢。为了举例来说,我已经扔在一堆额外的柜台,说明更多的可能性,你可以指望

/* Initialize counters. */ .hentry { counter-reset: num-post-sections num-code-listings num-code-listings-css /* code listings that are specifically CSS */ num-links num-links-internal /* links to other blog posts on this site */ num-liion */ .hentry h6 { counter-increment: num-post-sections; } .hentry pre code { counter-increment: num-code-listings; } .hentry pre s { counter-increment: num-code-listings /* increment count of total code listings */ num-code-listings-css /* AND the subset that are just CSS samples */ ; } .hentry :link { counter-increment: num-links; } .hentry :link[href^=/blogs/] { counter-increment: num-links num-links-internal ; } .hentry :link[rel=tag] { counter-increment: num-links num-links-rel-tag; } /* Display results. */ .hentry:after { display: block; content: This entry has a total of counter(num-post-sections) sections, counter(num-code-listings) code listings ( counter(num-code-listings-css) are CSS) and counter(num-links) links, of which counter(num-links-internal) point to other blog posts on this site and counter(num-links-rel-tag) are tags. ; }

当然,你只能指望你可以有目标的CSS选择器,所以产生了字数统计是不可能的。 此外,您也可以只显示总数的内容来:after所有的标记要计数,而不是:before 。 显然,这执行细节可以限制了设计的灵活性。

最后,值得再次强调指出的CSS柜台不落实在IE 6或7 。此外,由于我们处理完全利用CSS生成的内容,显示的文字可能无法选择或由用户可通过进一步的DOM操纵。 当然,在许多情况下您可能需要把这些东西直接到您的标记为真实的内容。

有一点也许更重要的这些限制,不过,这是一个功能强大的演示如何您可以使用标记为一个API ,让推进能力的CSS事情你可以一次只与客户端或服务器端脚本。

有赞爱逛直播
微信商城怎么开
小程序怎么样
分享到: