首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CSS3的attr()在主要浏览器中不起作用

CSS3的attr()在主要浏览器中不起作用
EN

Stack Overflow用户
提问于 2012-01-07 20:46:32
回答 4查看 25.9K关注 0票数 45

我的HTML文档中包含以下内容:

代码语言:javascript
复制
<a class="wbutton tint" data-tint="rgba(255,0,0,.5)" href="#">This should be red, with an opacity of 0.5</a>

CSS文件中包含以下内容:

代码语言:javascript
复制
.window > .content .wbutton.tint {
    border: solid thin attr(data-tint, color);
    box-shadow: inset 0 0 50px attr(data-tint, color);
}

Firefox在Firebug中返回CSS错误。我做错了什么吗?

根据W3C specs for the attr() function的说法,它应该可以工作。

(此外,还有a page about attr() in the MDN Wiki,所以我认为它至少应该能在火狐中工作)

EN

回答 4

Stack Overflow用户

发布于 2014-07-15 20:48:16

到目前为止,CSS3中的attr()只支持从HTML5 data属性获取值来设置元素的content。有一个很好的fiddle显示了这一点。

我已经在Google Chrome 35,Mozilla Firefox 30和Internet Explorer11上测试过了。

如果您希望将HTML5数据属性用于CSS3中的不同内容,如设置元素的widthheight,则需要额外的JavaScript库。

Fabrice编写了一个处理data-widthdata-heightCSS3 attr() Polyfill。您可以在这里找到Fabrice的GitHub存储库:cssattr.js

票数 10
EN

Stack Overflow用户

发布于 2015-12-13 17:06:31

我找到hack了。这不是属性,而是直接在样式上操作。在Chrome Canary中,您可以使用自定义css属性,并使用JS来操作属性。

在CSS中:

代码语言:javascript
复制
.some { background-position: var(--x) 0; } 

在JS中:

代码语言:javascript
复制
element.style.setProperty("--x", "100px", "");
//With same success you can set attribute. 

测试用例:https://jsfiddle.net/y0oer8dk/

火狐:https://jsfiddle.net/0ysxxmj9/2/

票数 2
EN

Stack Overflow用户

发布于 2018-04-11 01:50:18

它确实起作用了,但不是你想的那样。它不是一个通过变量发送的值,而更像是一个触发器,然后赋值给它。正因为如此,最好使数据属性具有唯一性但又简单。一个小例子可能会有所帮助:

代码语言:javascript
复制
<div class="data"><span data-width="80" data-tint="lime"></span></div>

然后在你的css中放入:

代码语言:javascript
复制
.data {height: 50px; width: 100%; background-color: #eee;}
.data > span {display: block; height: 100%;}
.data > span[data-width="80"] {width: 80%;}
.data > span[data-tint="lime"] {background-color: rgba(118, 255, 3, 0.6);}

如果你做的规模很小,但规模更大,在SCSS的帮助下,有些事情会变得更容易,比如..

代码语言:javascript
复制
@for $i from 1 through 100 {
    &[data-width="#{$i}"] {
        .data > span {
            width: calc(#{$i} * 1%);
        }
    }
}

这将编译成CSS的每一个百分比的可能性,允许您设置您的跨度宽度与数据宽度。

Check out the fiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8769786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档