您正在使用selector 在这方面:
if ( $( \'#customizer-preview .site-title\' ).length > 0 ) {
$( \'#customizer-preview .site-title\' ).remove();
}
这就像样式化CSS属性一样,如果要将该规则添加到样式表中,它会为元素添加样式
#customizer-preview .site-title
因此,上面的代码说明选择器#customizer预览是否存在元素。站点标题,然后删除该元素。
然后使用此代码:
$( \'#customizer-preview\' ).append( \'.site-title { color: \' + newval + \' ; }\' );
您正在选择您提到的具有ID的样式表
customizer-preview
. 然后添加为选择器创建的文本字符串。站点标题并在该元素内设置颜色属性。
在“自定义预览”窗口的上下文中,只需将样式直接应用于即可轻松得多。更新值时的站点标题选择器,如下所示:
wp.customize( \'site_title_color\', value => {
value.bind( to => $( \'.site-title\' ).css( \'color\', to ) );
} );
这样,在内联应用样式时,您就不必担心检查问题,并且会覆盖样式表属性,我假设在您的案例中保存设置时,这些属性是在PHP中创建的。如果多次更改设置,则会继续覆盖该内联样式。这为用户提供了一个准确的预览,这正是定制程序的作用所在。只要两种演示文稿相同,那么输出是否与前端的输出相匹配对用户来说并不重要。
否则,如果你真的想,是的,完全可以按你的要求去做。您需要对样式表规则进行一些解析,您的示例代码很容易做到这一点,但随着处理的内容越来越多,可能会变得更加复杂。这就是它的外观:
wp.customize( \'site_title_color\', value => {
value.bind( to => {
// Access stylesheet.
var css = document.getElementById( \'customizer-preview\' ).sheet;
// Loop through stylesheet\'s CSS rules to find index of selector.
for ( var i = 0; i < css.cssRules.length; i++ ) {
// Check if there\'s a match for your selector.
if ( \'.site-title\' === css.cssRules[ i ].selectorText ) {
// Delete the rule from the stylesheet and exit loop.
css.deleteRule( i );
break;
}
}
// Insert new style rule at end using the sheet\'s cssRules length.
css.insertRule( \'.site-title { color: \' + to + \'; }\', css.cssRules.length );
} );
} );
由于对这段代码进行了注释,所以应该很容易理解。显然这对你的问题很好,但是如果
.site-title
包含的不仅仅是
color
属性,则您希望更新规则中的颜色属性,以便保留样式表规则中为
.site-title
.