css【详解】—— content属性(含css计数器)

简介: css【详解】—— content属性(含css计数器)

20210322214534248.png content 属性与 :before 及 :after 伪元素配合使用,来插入生成内容。

content 属性生成的对象称为“匿名替换元素”,生成的内容都是替换元素

content属性的特点

1. content生成的文本无法被选中


content生成的文本无法被屏幕阅读设备读取,也无法被搜索引擎抓取,因此,千万不要自以为是地把重要的文本信息使用content属性生成,因为这对可访问性和SEO都很不友好,content属性只能用来生成一些无关紧要的内容,如装饰性图形或者序号之类;同样,也不要担心原本重要的文字信息会被content替换,替换的仅仅是视觉层。

2. 设置了content属性,但无内容的元素,仍会被:empty伪类选择器选中

<div></div>
 
div:empty { border-style: dashed; }

3. content动态生成的值无法获取。

content属性的应用

1. 清除浮动

.clear:after {
  content: '';
  display: table; /* 也可以是'block' */
  clear: both;
}

2. 实现“两端对齐”以及“垂直居中/上边缘/下边缘对齐”效果

参考范例:content辅助元素与布局 » CSS世界demo演示

3. 生成文本

<template>
    <div style="padding: 20px">
        <p class="ask">为什么open-quote/close-quote很少使用?</p>
        <p class="answer">因为直接使用字符更干脆!</p>
    </div>
</template>
<style scoped>
    .ask:before {
        content:'提问:“';
    }
    .answer:before {
        content:'回答:“';
    }
    .ask:after,
    .answer:after {
        content: '”';
    }
</style>

4. 生成图片

a:after {
  content: url(data:image/gif;base64,R0lGODlhBQAFAIABAM0AAAAAACH5BAEAAAEALAAAAAAFAAUAAAIHRIB2eKuOCgA7);
}

5. 生成属性值

<template>
    <div style="padding: 20px">
        <a href="https://www.baidu.com/" >百度</a>
    </div>
</template>
<style scoped>
    a:after {
        content: "(" attr(href) ")";
    }
</style>

效果为:

百度(百度一下,你就知道)

支持自定义的HTML属性

.icon:before {
   content: attr(data-title);
}

6. 计数器

一个简单的范例如下:

<template>
    <div style="padding: 20px">
        <div class="reset">
            <div class="counter">我是王小二的第5个孩子</div>
            <div class="counter">我是王小二的第7个孩子</div>
            <div class="counter">我是王小二的第9个孩子</div>
        </div>
    </div>
</template>
<style scoped>
    .reset {
        counter-reset: wangxiaoer 3;
    }
    .counter:before {
        content: counter(wangxiaoer) '. ';
        counter-increment: wangxiaoer 2;
    }
</style>

属性counter-reset

counter-reset: wangxiaoer 3;
  • 第1个参数用于给计数器取个自定义的名称,如此处的 wangxiaoer
  • 第2个参数为计数器的初始值(计数的起点),默认为0

IE和Firefox不识别值为负数或小数的初始值,认为是不合法数值,直接无视,当作默认值0来处理;

Chrome支持为负数或小数的初始值,任何小数都是向下取整,如2.99当成2处理。

counter-reset还可以设置为none和inherit,表示取消重置和继承重置

还可以一次命名多个计数器

counter-reset: wangxiaoer 2 wangxiaosan 3;

属性counter-increment

counter-increment: wangxiaoer 2;
  • 第1个参数为计数器的名称  wangxiaoer
  • 第2个参数为计数器的步长(即每次计数时的改变幅度),默认为1

每次使用css计数器时,都会调用一次counter-increment,所以上方范例中,初始值为3,但第一个元素最终渲染的编号是5

和counter-reset一样,counter-increment也可以一次定义多个

counter-increment: wangxiaoer wangxiaosan;

方法counter()

用于显示计数

用法一:

counter(wangxiaoer)

参数为计数器的名称  wangxiaoer

用法二:改变计数类型

counter(name, style)
  • 第2个参数和list-style-type的值相同,可以为以下值:

disc | circle | square | decimal | lower-roman | upper-roman | lower-alpha | upper-alpha | none | armenian | cjk-ideographic | georgian | lower-greek | hebrew | hiragana | hiragana-iroha | katakana | katakana-iroha | lower-latin | upper-latin

即计数器递增递减不仅支持数字,还可以是英文字母或者罗马文等。

content: counter(wangxiaoer, lower-roman);

用法三:支持级联调用

content: counter(wangxiaoer) '\A' counter(wangxiaosan);

方法counters()

用于嵌套计数,如1.1 1.2 1.3

范例代码如下:

<template>
    <div class="reset">
        <div class="counter">我是王小二
            <div class="reset">
                <div class="counter">我是王小二的大儿子</div>
                <div class="counter">我是王小二的二儿子
                    <div class="reset">
                        <div class="counter">我是王小二的二儿子的大孙子</div>
                        <div class="counter">我是王小二的二儿子的二孙子</div>
                        <div class="counter">我是王小二的二儿子的小孙子</div>
                    </div>
                </div>
                <div class="counter">我是王小二的三儿子</div>
            </div>
        </div>
        <div class="counter">我是王小三</div>
        <div class="counter">我是王小四
            <div class="reset">
                <div class="counter">我是王小四的大儿子</div>
            </div>
        </div>
    </div>
</template>
<style scoped>
    .reset {
        padding-left: 20px;
        counter-reset: wangxiaoer;
    }
 
    .counter:before {
        content: counters(wangxiaoer, '-') '. ';
        counter-increment: wangxiaoer;
    }
</style>


注意事项

显示content计数值的那个DOM元素在文档流中的位置一定要在counter-increment元素的后面,否则是没有计数效果的。  

目录
相关文章
|
2月前
|
前端开发
css的渐变属性linear-gradient
css的渐变属性linear-gradient
|
2月前
|
前端开发
CSS属性:盒子模型
CSS属性:盒子模型
33 0
|
2月前
|
前端开发
CSS属性
CSS属性
32 0
|
25天前
|
Web App开发 前端开发 iOS开发
css所有缩写属性,CSS属性简写整理
css所有缩写属性,CSS属性简写整理
22 1
|
2月前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
41 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
1月前
|
前端开发
CSS 中哪些属性可以继承
在 CSS 中,属性分为可继承与不可继承。可继承属性会在子元素中沿用父元素的样式设定。常见可继承属性包括:文本属性(如 `font-family`, `color`),列表属性(如 `list-style`),表格布局属性(如 `border-collapse`),以及其他如 `visibility` 和 `direction` 等属性。正确理解这些属性有助于更高效地进行样式设计。
|
25天前
|
前端开发
css简写属性
css简写属性
28 0
|
1月前
|
前端开发 JavaScript
如何在CSS中添加自定义属性
如何在CSS中添加自定义属性
16 0
|
1月前
|
前端开发
运用CSS伪类与属性,巧妙实现背景图片旋转效果
运用CSS伪类与属性,巧妙实现背景图片旋转效果
35 0
|
1月前
|
前端开发
哪些 CSS 属性可以继承?
哪些 CSS 属性可以继承?
48 0