直接设置背景图片(最简单)

这是最直接的方法,直接通过 jQuery 修改 <body> 元素的 CSS background-image 属性。

jquery将图片设置为网页背景
(图片来源网络,侵删)

核心代码

// 选择 body 元素,并设置其 CSS 样式
$("body").css({
    "background-image": "url('path/to/your/image.jpg')",
    // 可选:设置其他背景样式,让图片更好地展示
    "background-size": "cover", // 图片覆盖整个区域,可能会被裁剪
    "background-position": "center center", // 图片居中
    "background-repeat": "no-repeat", // 图片不重复
    "background-attachment": "fixed" // 背景固定,滚动时不动
});

完整示例

假设你的图片和 HTML 文件在同一个目录下。

index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">jQuery 背景图片示例</title>
    <style>
        /* 为了演示,给 body 一些基本样式 */
        body {
            margin: 0;
            font-family: Arial, sans-serif;
            color: white;
            /* 设置一个足够高的页面,以便测试滚动效果 */
            height: 200vh; 
            text-align: center;
            padding-top: 50px;
        }
        h1 {
            background-color: rgba(0, 0, 0, 0.5);
            padding: 20px;
            border-radius: 10px;
            display: inline-block;
        }
    </style>
    <!-- 引入 jQuery 库 -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>这是一个标题</h1>
    <p>向下滚动,测试背景是否固定。</p>
    <script>
        // 当整个文档加载完成后执行
        $(document).ready(function(){
            // 使用 jQuery 设置背景
            $("body").css({
                "background-image": "url('your-background-image.jpg')",
                "background-size": "cover",
                "background-position": "center",
                "background-repeat": "no-repeat",
                "background-attachment": "fixed"
            });
        });
    </script>
</body>
</html>

动态加载图片(更灵活)

这种方法适用于你想通过用户交互(如点击按钮)来切换背景图片,或者图片路径是动态获取的。

核心代码

// 定义一个图片路径数组
const images = [
    'images/slide1.jpg',
    'images/slide2.jpg',
    'images/slide3.jpg'
];
// 随机选择一张图片
const randomImage = images[Math.floor(Math.random() * images.length)];
// 设置为背景
$("body").css("background-image", "url('" + randomImage + "')");

完整示例(带按钮切换)

index.html

jquery将图片设置为网页背景
(图片来源网络,侵删)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">动态切换背景</title>
    <style>
        body {
            margin: 0;
            font-family: Arial, sans-serif;
            color: white;
            height: 100vh;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
            background-attachment: fixed;
            transition: background-image 1s ease-in-out; /* 添加切换动画 */
        }
        .content {
            text-align: center;
            background-color: rgba(0, 0, 0, 0.6);
            padding: 30px;
            border-radius: 15px;
        }
        button {
            padding: 10px 20px;
            font-size: 16px;
            cursor: pointer;
            border: none;
            background-color: #007bff;
            color: white;
            border-radius: 5px;
            margin-top: 15px;
        }
        button:hover {
            background-color: #0056b3;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <div class="content">
        <h1>点击按钮切换背景</h1>
        <button id="changeBgBtn">更换背景</button>
    </div>
    <script>
        $(document).ready(function(){
            // 图片路径数组
            const images = [
                'https://picsum.photos/seed/bg1/1920/1080.jpg',
                'https://picsum.photos/seed/bg2/1920/1080.jpg',
                'https://picsum.photos/seed/bg3/1920/1080.jpg'
            ];
            // 为按钮添加点击事件
            $("#changeBgBtn").on("click", function(){
                // 随机选择一张图片
                const randomImage = images[Math.floor(Math.random() * images.length)];
                // 设置为背景
                $("body").css("background-image", "url('" + randomImage + "')");
            });
        });
    </script>
</body>
</html>

使用背景图片预加载(优化用户体验)

如果背景图片很大,直接设置可能会导致页面短暂空白,预加载可以在后台提前加载图片,设置时就能立即显示,提升用户体验。

核心思路

  1. 创建一个 <img> 标签,但将其隐藏。
  2. 设置该 <img>src 为你的背景图片。
  3. 监听该 <img>load 事件,当图片加载完成后,再用 jQuery 将其设置为背景。

完整示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">预加载背景图片</title>
    <style>
        body {
            margin: 0;
            font-family: Arial, sans-serif;
            color: white;
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: #333; /* 初始背景色 */
        }
        #loadingText {
            font-size: 24px;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <div id="loadingText">正在加载背景图片...</div>
    <script>
        $(document).ready(function(){
            const imageUrl = 'https://picsum.photos/seed/preload/1920/1080.jpg';
            // 1. 创建一个隐藏的图片对象
            const bgImage = new Image();
            // 2. 设置图片源
            bgImage.src = imageUrl;
            // 3. 监听图片加载完成事件
            $(bgImage).on('load', function(){
                // 图片加载完成后,设置 body 的背景
                $("body").css({
                    "background-image": "url('" + imageUrl + "')",
                    "background-size": "cover",
                    "background-position": "center",
                    "background-attachment": "fixed",
                    "transition": "background-image 0.5s ease-in-out" /* 平滑过渡 */
                });
                // 隐藏加载提示
                $("#loadingText").hide();
            });
        });
    </script>
</body>
</html>

重要提示:CSS background-size 的选择

在设置背景图片时,background-size 属性非常重要,它决定了图片如何适应屏幕。

  • cover: (推荐) 将图片缩放以覆盖整个背景区域,如果图片的宽高比与窗口不同,图片的某些部分可能会被裁剪,这是最常用的设置,能确保背景总是充满屏幕。
  • contain: 将图片缩放至其宽高比能完全适应背景区域,如果图片的宽高比与窗口不同,背景的某些区域可能会留白(未被图片覆盖)。
  • 100% 100%: 将图片拉伸至完全填满背景,这会破坏图片的原始宽高比,导致图片变形(拉伸或压缩)。
方法 适用场景 优点 缺点
直接设置 简单、静态的背景设置 代码简单,直接 不够灵活,无法处理动态路径
动态加载 需要交互切换背景的场景 灵活性高,响应用户操作 需要额外的事件处理逻辑
预加载 背景图片较大时 用户体验好,避免闪烁 代码稍复杂,需要额外步骤

对于大多数情况,方法一已经足够,如果你需要更丰富的交互,方法二是更好的选择,如果你对性能和用户体验有较高要求,方法三是最佳实践。