CSS伪元素计数器:你能增加一个字母“a”,“b”,“c”等而不是数字?

时间:2013-06-05 15:23:55

标签: css pseudo-element css-content

如此处所定义:

http://www.w3.org/TR/CSS21/generate.html#propdef-counter-increment

您可以使用以下代码来增加伪元素中的数字。

H1:before {
    content: "Chapter " counter(chapter) ". ";
    counter-increment: chapter;  /* Add 1 to chapter */
}
H1 {
    counter-reset: section;      /* Set section to 0 */
}
H2:before {
    content: counter(chapter) "." counter(section) " ";
    counter-increment: section;
}

有没有办法可以使用相同的代码增加“a”,“b”,“c”等字母?

谢谢!

1 个答案:

答案 0 :(得分:67)

是的,counter()的第二个参数定义了所使用的计数器类型,与常规list-style-typeul中的ol相同;例如:

content: counter(chapter, lower-alpha);

ul {
  counter-reset: listStyle;
}
ul li {
  margin-left: 1em;
  counter-increment: listStyle;
}
ul li::before {
  margin-right: 1em;
  content: counter(listStyle, lower-alpha);
}
<ul>
  <li>one</li>
  <li>two</li>
  <li>three</li>
</ul>

JS Fiddle demo

其他包括:decimaldecimal-leading-zerolower-romanupper-romanlower-greeklower-latinupper-latin,{{ 1}},armeniangeorgianlower-alpha

由于上面的样式列表似乎有一些更新,我选择添加一个代码片段,允许用户从(当前)可用选项以及“输出”区域中进行选择,展示如何使用CSS generated-content:

来使用该样式

upper-alpha
let select = document.querySelector('select'),
  output = document.querySelector('#currentCounter'),
  changeEvent = new Event('change');

select.addEventListener('change', function() {
  document.body.style.setProperty('--listStyleType', this.value);
  output.textContent = this.value;
});

select.dispatchEvent(changeEvent);
body {
  --listStyleType: decimal;
}

ul {
  counter-reset: listStyle;
  columns: 2;
  margin-top: 0.5em;
  list-style-type: none;
}

ul li {
  counter-increment: listStyle;
}

ul li::before {
  content: counter(listStyle, var(--listStyleType));
  display: inline-block;
  margin-right: 0.5em;
  width: 1.5em;
  height: 1.5em;
  line-height: 2em;
  text-align: center;
}

code {
  display: block;
  white-space: pre-wrap;
  width: 80%;
  box-sizing: border-box;
  margin: 1em auto;
  padding: 0.5em;
  box-shadow: 0 0 0 3px limegreen;
}

code::after {
  content: '\A';
}

#currentCounter {
  color: #f90;
}

目前可用(截至2017-02-27):

  • 阿拉伯 - 印度文
  • 亚美尼亚
  • 孟加拉语
  • 柬埔寨
  • CJK-小数
  • CJK-地上的分支
  • CJK-天上干
  • 小数
  • 十进制前导零
  • 梵文
  • 公开闭
  • 公开开
  • 埃塞俄比亚数字
  • 格鲁吉亚
  • 古吉拉特
  • 古尔穆基
  • 希伯来语
  • 平假名
  • 平假名-伊吕波
  • 日本正规
  • 日本非正式
  • 埃纳德语
  • 片假名
  • 片假名-伊吕波
  • 高棉
  • 韩国朝鲜语正规
  • 韩国汉字正规
  • 韩国汉字非正式
  • 下-α
  • 下-α
  • 较低亚美尼亚
  • 下希
  • 下拉丁
  • 较低罗马
  • 马来亚
  • 缅甸
  • 奥里亚
  • 波斯
  • 简体-中国正规
  • 简体-中国非正式
  • 泰米尔语
  • 泰卢固
  • TRAD-中国正规
  • TRAD-中国非正式
  • 上-α
  • 上层亚美尼亚
  • 上拉丁
  • 上层罗马

参考文献: