从小部件添加内联样式

时间:2015-07-01 作者:cjbj

我正在开发一个主题,它有一个可选的小部件,允许用户将一些站点元素放在他们想要的地方。其中之一是社交媒体图标列表。这些是字体图标,因此可以使用css设置样式以适应主题的调色板。然而,该小部件还允许用户选择不同的颜色并悬停:颜色。一个页面上可能有多个具有不同颜色选项的同一小部件实例。

要在我想要的地方获得这些样式,我有两种选择,就我所能看到的而言:

把它们排成一行。我可以在项目本身上添加颜色,但悬停状态需要在样式标记中。这很好,但无法验证。(我还可以将样式附加到两个具有不同类的重叠图标上,让上面的图标在悬停时淡出,或者将其存储在一个不可见的div 并使用jquery提取它们-这将验证,但在其他方面不是很吸引人)。

通过添加小部件id使其指向正确的图标,使其成为全局对象。由于头部是在WP到达小部件时构建的,因此没有使用wp_add_inline_styles 不再我可以将后续样式存储在全局数组中并使用add_action 将它们传递到页脚。我可能可以让它工作并验证,但它,嗯,非常难看。

有人有更好的主意吗?

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

明白了。下面是如何在处理页面的中途插入悬停状态,而不违反w3c规则。这是您不希望小部件生成的代码:

<div class="mywidget">
<style>.mywidget a {color:red}, . mywidget a:hover {color:blue;}</style>
<a>Link</a>
</div>
以下内容验证了这一点,并且相当优雅。在您的小部件中生成以下代码:

<div class="mywidget">
<a style="color:blue;"><span style="color:red;">Link</span></a>
</div>
在您的style.css 您可以添加带有过渡效果的常规线条作为奖励:

.mywidget a span {transition:color 1s;}
.mywidget a:hover span {color:inherit !important;}
在Firefox 38、Chrome 34和IE 11中测试

结束