学习笔记 CSS权威指南 第14章 列表和生成内容

177 阅读3分钟

本来主是说,表格和列表用的非常少,就没打算学习.但是最近两个营销型的静态网站,都有使用到1,2,3,4,5,6这样的方式来标注步骤.又都是响应式的页面.这感觉在WAP端通过这个属性来自动实现计数,要比写HTML标签优雅的多呀.所以又回来学习一下.结果发现了新大陆,居然content也是放在这个章节讲的,现在算是content的原理搞懂了

  • 现在可以自定义计数的模式和格式
  • 还能把计数器关联到任何元素上

15.1 列表

15.1.1 列表的类型 list-style-type

  • 只能应用到display属性值为list-item的元素上
  • list-style-none禁止显示标记,继续记数
  • 注意嵌套的样式,浏览器一般都单独设置了默认值,需要自行覆盖

没想到会有这么多值,且兼容性还非常好,以前一直以为只有点点儿和数字来着.

15.1.2 列表项目的图像list-style-image

  • 可以继承的属性
  • 最好同时提供image和type(就像图片最好提供一个加载失败时图片以及背景)
  • 标记的样式和尺寸无法掌控,只能随字号变化

15.1.3 列表标记的位置 list-style-position

  • inset 就像放在前面的内联元素一样
  • outset 浏览器会自动有一个ml/pd
    • 不过看了一下chrome用的是最新的margin-block-start属性

15.1.4 简写属性list-style

这个简写属性没什么好特殊说明的,和边框一样,不关心顺序位置

15.2 生成的内容

生成的内容目前只能通过::after::before插入文档.

15.2.1 插入生成的内容

  • content会被插入到元素内容之前或之后
  • 生成的内容位于元素框的内部
  • 会继承依附元素的属性

关于content这一节,还是要看看CSS规范才行,书上讲的不够细致,且和测试结果不一致

15.2.2 指定内容

  • 可以指定图片哦!!!!!!
  • 里面的换行用\A代替,测试后发现不生效
  • 可以使用attr()插入值, 兼容性还是比较好的
  • 可以进行字符串拼接,中间用逗号隔开
content: '这是类名: ` attr(class) '.`;
  • 使用quotes配合content生成引号(听所未听啊,见所未见啊,关键是兼容性还比较好,但感觉没啥实际用)
    • 第一个字符串定义开始引号
    • 第2个字符串定义结束字符
    • 可以定义多套引号,以便深层次使用
    • 必须先写开始引号,否则不会显示
    • 一旦引用开始,只有遇到结束标记才会结束引用,减少层级
    • 开始后,如果再添加一个开始标记,就会增加一个层级
.parent {
  quotes: '开始引号' '结束引号' '第2个引号开始' '第2个引号结束' '"' '"'; // 嵌套3层的引号
}
.children:before {
   content: open-quote;
}
.children:after {
  content: close-quote;
}

15.2.3 计数器

  • 声明counter-reset
    • 书上说的是重置,我觉得声明合理一些
    • 第一个是计数器名字
    • 第2个是计数器起始值,可以为负,默认为1
    • 只能在父元素上声明,不能在伪元素上声明
  • 增量counter-increment
    • 默认为1
    • 也可以在伪元素上设置
  • 调用counter
    • 只能放到伪元素的content里面
    • 使用了一个没有声明的计数器默认为0
    • display:none不递计数器
    • visibility: hidden还会递增计数
  • 作用域counters
  • 即在多层嵌套时使用会自动为深层次的嵌套使用新的变量
  • counters(ranwawa ' - ')
ul {
 counter-reset: ranwawa -1 qingwa 6;
}
ul > li {
 counter-increment: ranwawa 1 qingwa 2;
}
li:first-child::before {
 content: counter(ranwawa);
}
li:nth-child(2)::before {
 content: counter(ranwawa);
}
li:nth-child(3)::before {
 display: none;
}
li:nth-child(4)::before {
 visibility: hiden;
}
li:nth-child(5)::before {
 content: counter(ranwawa);
}
li:last-child::before {
 content: counter(qingwa);
} 

15.3 定义计数模式

只有firefox支持,就没必须做笔记了