CSS attr() 函数

CSS attr() 语法

在 CSS 中,attr() 函数用于从 HTML 元素的属性中获取值,并将其用作 CSS 属性的值。

大多数情况下,attr() 都是结合 content 属性一起使用,然后作为伪元素(即 ::before 和 ::after)的内容。

语法:

content: attr(属性名);

说明:

这里的 “属性名” 指的是 HTML 元素的属性名称,可以是内置属性,也可以是自定义属性。

对于 attr() 函数,小伙伴们需要清楚以下几点:

  • attr() 函数主要用于获取 HTML 元素的属性值,例如 data-*(自定义属性)、titlehref 等。
  • 虽然 CSS 规范计划扩展 attr() 的用法,但目前绝大多数浏览器仅支持在 content 属性中使用 attr()。如果尝试将其用于宽度、颜色等其他属性,可能会无法生效。

提示: attr 是 “attribute(属性)” 的缩写。

CSS attr() 摘要

属于 CSS 函数
使用频率
兼容性 查看
官方文档 查看
MDN 查看

CSS attr() 示例

接下来,我们通过几个简单的例子来讲解一下 CSS attr() 函数是如何使用的。

示例 1:attr() 基本用法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        a::after {
            content: " (" attr(href) ")";
        }
    </style>
</head>
<body>
    <a href="https://www.lvyenet.com">绿叶网</a>
</body>
</html>

页面效果如下图所示。

attr() 基本用法

分析:

a::after {
    content: " (" attr(href) ")";
}

上面代码表示使用 attr(href) 来获取 a 元素的 href 属性值,然后将其作为 content 属性的值。由于这里使用了伪元素(::after),因此最终会将 content 属性的值放到 a 元素内部的末尾处。

上面这种动态生成伪元素的内容,是 attr() 最常见的使用场景。

注意: href 是一个 HTML 属性,而 content 是一个 CSS 属性。

示例 2:attr() 结合 data-* 属性

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div::before {
            content: attr(data-label);
            color: hotpink;
        }
    </style>
</head>
<body>
    <div data-label="提示:">绿叶网</div>
</body>
</html>

页面效果如下图所示。

attr() 与 data-* 属性结合

分析:

content: attr(data-label); 表示使用 attr() 函数来获取 div 元素的 data-label 属性值,然后作为 content 属性的值。其中,data-label 是一个自定义的 HTML 属性。

示例 3:attr() 实现工具提示效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        .tooltip {
            position: relative;
            top: 100px;
            left: 100px;
        }
        .tooltip:hover::after {
            content: attr(data-title);
            position: absolute;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            background-color: lightskyblue;
            padding: 5px;
            border-radius: 3px;
            white-space: nowrap;
        }
    </style>
</head>
<body>
    <span class="tooltip" data-title="为好教程,全力以赴"> 绿叶网 </span>
</body>
</html>

默认情况下,页面效果如下图 1 所示。当鼠标移到 span 元素上时,页面效果如下图 2 所示。

attr() 实现工具提示效果 1

attr() 实现工具提示效果 2

分析:

content: attr(data-title); 表示使用 attr() 函数来获取 div 元素的 data-label 属性的值,然后作为 content 属性的值。

上一篇: url()

下一篇: counter()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号