也不wp_enqueue_style()
也没有wp_register_style()
有一个参数,允许将它们作为其script
对应方会这样做。唯一的解决方案是在style
内部标记head
, 添加了wp_head
行动挂钩。我用了一段时间这个技巧,但在某个时候,我厌倦了试图找出我需要的规则head
对于每个特定主题,我开发了一个更通用的解决方案,可以应用于任何网站上的几乎任何主题。
使用相同的动作挂钩,我只应用一个临时样式,直到页面加载完毕,在页面完全加载之前有效地隐藏或至少淡入整个页面,然后使用简单的javascript淡入视图。在这里,应该放进去functions.php
您的孩子主题:
add_action(\'wp_head\', \'fix_fouc_problem\');
function fix_fouc_problem() {
if (!is_admin()) {
echo \'
<style type="text/css">
body {
opacity: 0;
transition: opacity .25s ease-in-out;
-moz-transition: opacity .25s ease-in-out;
-webkit-transition: opacity .25s ease-in-out;
}
</style>
<script type="text/javaScript">
function showTheBody() {
var body = document.getElementsByTagName("body")[0];
body.style.opacity = 1;
}
if (window.addEventListener) { /* W3C standard */
window.addEventListener("load", showTheBody, false);
} else if (window.attachEvent) { /* Microsoft browsers */
window.attachEvent("onload", showTheBody);
} else { /* this is for any future browser that might not know any of the
* methods above, just in case, showing the body:
*/
showTheBody();
}
</script>
<noscript><style>
/* If javascript is disabled, I\'m changing body opacity back to 1,
* via CSS, but over an entire second, to give the page time to load
* past the fouc point
*/
body {
transition: opacity 1s ease-in-out;
-moz-transition: opacity 1s ease-in-out;
-webkit-transition: opacity 1s ease-in-out;
opacity: 1;
}
</style></noscript>\';
}
}
如果您不喜欢页面加载时的背景颜色,请添加加载
background-color
属性到
html
内部
style
标记,如果需要,在页面完全加载时执行的函数中更改它:
showTheBody()
. 请注意,很可能jQuery当时还没有加载,所以您只能使用javaScript。
此外,如果您认为加载页面所需的时间过长,可以更改body
在加载期间,从0
到.25
甚至.35
因此,用户可以看到褪色的元素正在加载。随着页面的褪色和CSS不透明度的快速转换,fouc变得难以识别。
使用此方法时,我能想到的唯一缺点是加载时间很长的页面,因为这些页面在完全加载之前会褪色或不可见。但是,这不适用于使用ajax加载内容的页面(想想无限滚动等),因为这些页面是独立的异步调用,加载/onload事件通常在这些页面上触发得非常快。