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

能否仅用Sass实现多语言背景图URL切换?是否需用JQuery?

根据浏览器语言动态修改背景图路径:用Sass还是jQuery?

我想根据用户的浏览器语言,修改页面中#mockUp容器的背景图URL——比如浏览器语言是西班牙语时,路径改成../../assets/images/mock-ups/minimalist-profile-es.png。目前我有以下Sass代码和JS工具函数,想问问只靠Sass能不能实现?还是得用jQuery?

现有Sass代码

div#mockUp {
  @include fancy-container(
    $background-image:
      url("../../assets/images/mock-ups/minimalist-profile-en.png"),
    $height: auto,
    $min-height: 95vh
  );
}

现有JS工具函数

/**
 * Gets the device's browser language.
 *
 * @memberof module:i18n/Functions
 * @function getNavigatorLanguage
 * @returns {string | undefined} The language of the browser
 */
export default () => navigator.language ?? navigator.userLanguage;

回答

结论:仅用Sass无法实现

Sass是预处理器,所有逻辑在编译阶段就已完成,无法获取浏览器运行时的用户语言这类动态信息,它只能生成静态CSS代码,所以没法单独完成这个需求。

推荐方案:用原生JS实现(无需jQuery)

你现有的getNavigatorLanguage函数已经能获取浏览器语言,在此基础上直接用原生JS修改元素样式即可,无需引入jQuery,更轻量高效:

// 导入你的语言获取函数
import getNavigatorLanguage from './path-to-your-function';

function updateMockUpBackground() {
  const mockUpElement = document.getElementById('mockUp');
  if (!mockUpElement) return;

  // 提取语言前缀(如"es-ES"取"es",默认 fallback 为英文)
  const languagePrefix = getNavigatorLanguage()?.split('-')[0] || 'en';
  // 拼接对应语言的背景图URL
  const backgroundUrl = `../../assets/images/mock-ups/minimalist-profile-${languagePrefix}.png`;
  
  // 给元素设置背景图
  mockUpElement.style.backgroundImage = `url(${backgroundUrl})`;
}

// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', updateMockUpBackground);

若一定要用jQuery(不推荐)

如果项目已经引入jQuery,逻辑和原生JS一致,只是选择元素和设置样式的语法不同:

import getNavigatorLanguage from './path-to-your-function';

$(document).ready(function() {
  const languagePrefix = getNavigatorLanguage()?.split('-')[0] || 'en';
  const backgroundUrl = `../../assets/images/mock-ups/minimalist-profile-${languagePrefix}.png`;
  $('#mockUp').css('background-image', `url(${backgroundUrl})`);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:31:06