如何在 Javascript 中设置液体变量的值

How to set the value of a liquid variable inside of Javascript

我正在 Jekyll 博客的 _layout 子目录中自定义一个 HTML 模板文件。根据屏幕大小,我希望页面以不同方式布置元素(在这种情况下我决定不使用 CSS 媒体查询)。

据我所知,Liquid 不支持检测屏幕尺寸,我想为此使用 JS。在 HTML 模板的顶部,我想插入以下代码:

<script>
    if (window.matchMedia("(max-width: 768px)").matches) {
        {% assign screen_size = "small" %}
    } else if (window.matchMedia("(min-width: 769px)").matches){
        {% assign screen_size = "large" %}
    }
</script>

在小于 769px 的屏幕上,变量 screen_size 仍然设置为 large。毫无疑问,JS 代码可以正确检测屏幕尺寸,但似乎 screen_size 只是被分配给条件语句中的最后一个值。

我是 Liquid 的新手,我认为您不能像在 JS 中那样使用 {% assign %},所以这看起来很可疑。但是 would/should 如何在 JS 中进行这样的 Liquid 变量赋值?

screen_size 仅适用于此模板和 none 其他模板。)

参见What is the difference between client-side and server-side programming?,然后考虑当您使用 Jekyll 生成静态站点时,Liquid 使用的值在您将页面上传到网络服务器之前确定。

您遇到与从客户端 JS 到服务器端代码获取数据相同的问题,但时间间隔更大。

这做不到。

我建议您改变对媒体查询的看法,改为编写标准的响应式网站。