问题
How can I concatenate the CSS attr() selector with static text in a url() field?
The HTML I use:
<div image='/Require/static.png'></div> //Example 2
<div image='static.png'></div> //Example 3, 4, 5
For example:
//image attribute contains the image name (and prefix location when needed, see example 2)
div[image]:before {
background-image: url('/Image/static.png'); //Works
background-image: url(attr(image)); // Works
background-image: url('/Image/' attr(image)); //Fails
background-image: url('/Image/' #attr(image)); //Fails
background-image: url('/Image/' {attr(image)); //Fails
}
So - if it is possible - How can I achieve this?
回答1:
It is not possible to create a composite url()
value out of two or more strings. On top of the legacy url()
value, which isn't even a proper CSS function (see Is there a way to interpolate CSS variables with url()? — which means you can't even do this with custom properties), the proper CSS function version of url()
as defined in css-values-3 only accepts a single string.1
You can concatenate multiple strings in a content
declaration, but that is a feature of the content property, not of strings in CSS.
1Since url()
accepts a single string, this does mean that a single attr()
can be used as a URL value, also new to css-values-3, as attr(image url)
... except browser support is nonexistent.
来源:https://stackoverflow.com/questions/42932294/css-attr-concatenation-with-url-path