You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress使用Cookie Yes插件实现页面刷新后保留Cookie点击后的CSS修改

问题原因

你当前编写的JS逻辑仅在用户点击「接受全部」/「拒绝」Cookie按钮的瞬间修改导航栏、main元素的top样式,页面刷新后JS不会主动识别用户之前的Cookie同意状态,元素的样式会回到初始状态,就会出现顶部的预留空白。

解决方案

Cookie Yes插件会在用户完成同意操作后,在本地存储名为viewed_cookie_policy的Cookie,值为yes即代表用户已经处理过Cookie提示。你只需要在页面加载时就判断该Cookie状态,符合条件直接修改对应样式即可。
修改后的完整代码如下:

// 封装通用的调整顶部距离的函数,避免重复代码
function adjustHeaderPosition() {
    $('html.has-not-scrolled #desktop-header').css('top', '0px');
    $('#mobile-header').css('top', '0px');
    $('main').css('top', '0px');
}

// 读取Cookie的工具函数
function getCookie(name) {
    let value = "; " + document.cookie;
    let parts = value.split("; " + name + "=");
    if (parts.length === 2) return parts.pop().split(";").shift();
}

$(document).ready(function(){
    // 页面加载时先判断是否已经同意过Cookie
    if(getCookie('viewed_cookie_policy') === 'yes') {
        adjustHeaderPosition();
    }

    $('#cookieToggle').on('change', function(){
        const value = $(this).prop('checked');
        onCookieSelection(value);    
    });

    function onCookieSelection (val) {
        $('#divAcceptCookiesConfirm').toggle(val);
        $('#divAcceptCookiesReject').toggle(!val);
    }  
    $('#cookieToggle').prop("checked", true);
    onCookieSelection(true);

    // 点击按钮时调用公共函数修改样式
    $('#wt-cli-accept-all-btn, #wt-cli-reject-btn').on('click', function() {
        adjustHeaderPosition();
    });
});

额外优化建议

如果后续不想用内联样式控制,也可以预先在CSS里定义好类:

.cookie-accepted #desktop-header,
.cookie-accepted #mobile-header,
.cookie-accepted main {
    top: 0 !important;
}

之后判断用户同意Cookie后,直接给html标签加cookie-accepted类即可,样式管理更清晰。

内容的提问来源于stack exchange,提问作者Jon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:42:01