分享
 
 
 

翻译:一个鲜为人知利用CSS计数器取代一些脚本的方式

王朝网站推广·作者佚名  2011-12-04
窄屏简体版  字體: |||超大  

自从埃里克罗迈耶突出的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 (pre>code) and without (table.dp-c) JavaScript code highlighting */ .post .entrytext pre > code, table.dp-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-links-rel-tag /* rel-tag microformat */ ; } /* Increment counters. */ .hentry h2, .hentry h3, .hentry h4, .hentry h5, /* consider any headline an additional "section" */ .hentry h6 { counter-increment: num-post-sections; } .hentry pre > code { counter-increment: num-code-listings; } .hentry pre > code.css { 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事情你可以一次只与客户端或服务器端脚本。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有