css - 如何用一个替换 31 个 css 类

标签 css

我有 31 个日历图标,每个月的每一天都有一个图标,我的 CSS 看起来不如我想要的那么好。现在我已经:

.icon-agenda.day-1, .icon-agenda.day-1:before{
    background: url(../images/tiles/agenda/1.png) no-repeat;
}

.icon-agenda.day-2, .icon-agenda.day-2:before{
    background: url(../images/tiles/agenda/2.png) no-repeat;
}

.icon-agenda.day-3, .icon-agenda.day-3:before{
    background: url(../images/tiles/agenda/3.png) no-repeat;
}

.icon-agenda.day-4, .icon-agenda.day-4:before{
    background: url(../images/tiles/agenda/4.png) no-repeat;
}

...
.icon-agenda.day-31, .icon-agenda.day-31:before{
    background: url(../images/tiles/agenda/31.png) no-repeat;
}

我想用更简单的东西替换上面的代码

.icon-agenda.day-xxx, .icon-agenda.day-xxx:before{
    background: url(../images/tiles/agenda/xxx.png) no-repeat;
}

我可以在 CSS 中做这样的事情吗?

最佳答案

(还)无法在 native CSS 中执行此操作。您可以使用像 LESS 这样的预处理器,但这会生成相同的输出,只是增加了编译它的麻烦,因此就此布局而言,您当前的方法是最佳方法。

一个可能的优化是从所有图像创建一个完整的 Sprite ,将其设置为 background-image对于所有带有 1 个选择器的元素,例如 [class*=".icon-agenda.day-"], [class*=".icon-agenda.day-"]:before , 并更改 background-position的独立元素。这将节省您的请求,意味着更快的页面加载。

根据您关于使用 JavaScript 的评论,这里有一个解决方案将添加一个额外的 <style>标记到 <head>使用您的 CSS 的页面:

var styl = document.createElement('style');
for (var i=1; i<=31; i++)
    styl.innerHTML += '.icon-agenda.day-'+i+',.icon-agenda.day-'+i+':before{background:url(../images/tiles/agenda/'+i+'.png) no-repeat}';
document.head.appendChild(styl);

关于css - 如何用一个替换 31 个 css 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25821269/

相关文章:

表格之间的 HTML 电子邮件空间(Gmail 和 Outlook)

IE7 中的 CSS 两列布局和表格问题

html - 外部 css 中的样式 html 表不起作用

css - 自定义 Twitter 和 FB 分享按钮图像

javascript - Android和IOS移动设备 :calculate browser screen height excluding address bar and navigation bar height

php - preg_replace() 标签名称

css - 为什么 justify-content 在我的情况下不起作用?

android - 样式表未加载到移动设备上

html - CSS 动画首先失败然后按预期工作

jquery - Wordpress 无限滚动选择器