马黑黑 发表于 2026-4-18 18:29

音画帖背景设置

<style>
        .artBox { font: normal 18px/1.5 sans-serif; overflow: auto; position: relative; }
        .artBox p { margin: 10px 0; }
        .artBox h1, .artBox h2 { margin: 8px 0; }
        .artBox code, .artBox pre { background: #f7f4f3; padding: 2px 6px; tab-size: 4; }
        .artBox pre { padding: 10px 20px; white-space: pre-wrap; word-wrap: break-word; }
        .artBox pre code { padding: 0; background: none; }
        .artBox blockquote { margin: 10px 20px; padding: 2px 15px; border-left: 3px solid skyblue; background: #e7e5e3; }
</style>

<div class="artBox">
<h2>一、认识 background 简写属性</h2>
<h3>background简写属性的语法顺序:</h3>
<ol>
<li>background-color      (背景颜色)</li>
<li>background-image      (背景图像)</li>
<li>background-repeat   (背景重复模式)</li>
<li>background-attachment (背景固定模式)</li>
<li>background-position   (背景位置)</li>
<li>background-size       (背景尺寸)</li>
</ol>
<p>第4个属性 <code>background-attachment</code> 用来设置背景图像是固定还是随页面滚动,fixed 表示背景图像固定,scroll(缺省默认)表示随页面滚动。我们做帖子时使用其缺省设置,就不用设置这个属性,所以,根据语法顺序,我们经常这样设置帖子的背景以减少代码行数:</p>
<p><code>background: #aaa url(图片地址) no-repeat center/cover;</code></p>
<p>其中:</p>
<ol>
<li>#aaa = 背景颜色</li>
<li>url(图片地址) = 背景图像(url是CSS函数)</li>
<li>no-repeat = 背景重复方式(可选值还有 repeat | repeat-x | repeat-y</li>
<li>--(固定模式不用设置,使用省略默认值)</li>
<li>center = 背景位置(center表示居中,也可用 x% y% 以及位置关键字表示)</li>
<li>cover = 背景尺寸(cover和contain是关键字表示法,还可用百分比和长度单位,可同时设置xy方向的尺寸)</li>
</ol>
<p><strong>注意</strong>:url()函数的图片地址在 Discuz! 论坛发帖时应使用小角引号包裹以避免地址被 ubb 语法解析而破坏掉其结构。</p>
<p>【附】较完整的background设置写法(属性顺序不论):</p>
<pre><code>    background-color: #aaa;
    background-image: url(图片地址);
    background-repeat: no-repeat;/* repeat | repeat-x | repeat-y */
    background-attachment: scroll; /* fixed */
    background-position: center;   /* 0% 0% */
    background-size: cover;      /* contain | 100% | 100% 100% */
</code></pre>
<h2>二、帖子背景设置方法与技巧</h2>
<p>建议使用简写的 background 属性来设置帖子的背景。从上面的介绍我们已经知道,简写属性的 background 可以设置 ① 背景色、② url(图像)、③ 图像相关几个设置(重复 + 位置 / 大小),语句结构可以固定为:</p>
<p><code>background: 颜色 url(图片) 重复 位置 / 大小</code></p>
<p>把它当作公式,使用时套用即可。</p>
<p>技巧主要针对帖子宽高和背景图片尺寸的配套设置。</p>
<p>很多做帖人纠结过这个问题,问题主要集中在图片作为帖子背景的最终渲染效果——图片未能呈现全貌或是失真了。</p>
<p>凡事有得有失,取舍艰难也不能回避,总要设法解决问题——即便最终问题并未能完美解决。</p>
<p>一般而言,帖子元素的尺寸应和背景图片的尺寸相一致,或保持相同的宽高比,这样初始状态下帖子背景图片的渲染不会被扭曲也不会被剪裁。下面举例说明:</p>
<p>假设所准备的背景图片是 1600*700,那么,帖子的宽高也应设置为 1600*700,背景尺寸使用 cover 或 contain 都行;如果希望帖子的宽度是1200px,那么就涉及到帖子宽高比和图片宽高比二者保持一致的问题,需要根据图片的实际尺寸计算一下帖子的高度:</p>
<p><code>帖子高度 :1200*700/1600 = 525</code></p>
<p>也可以不用计算帖子高度,而是使用 aspect-ratio 属性强制宽高比,依据图片的比例:</p>
<pre><code>    width: 1200px;
    aspect-ratio: 12/7;
</code></pre>
<p>新的问题是:帖子进入全屏渲染状态后,目标显示终端的尺寸不会迁就帖子的任何宽高设置,这样上面设置的机制在全屏状态下就会失效。这时,background-size 扮演最重要的角色,其属性值设置直接影响帖子全屏后背景图像的渲染效果:</p>
<blockquote>
<p><strong>background-size 可选属性值</strong>:</p>
<p>auto - 以背景图片的比例缩放背景图片<br>cover - 缩放背景图片以完全覆盖背景区,可能背景图片部分看不见<br>contain - 缩放背景图片以完全装入背景区,可能背景区部分空白</p>
<p>百分比和长度单位 - 建议使用双值分别设定xy方向</p>
</blockquote>
<p>如何选择取决于对最终渲染的预期:希望自始至终图像不变形,用 contain,缺点是会有空白边缘;希望图片铺满整个帖子,用 cover,缺点是图像有一个方向会被裁剪;希望图像既要铺满帖子空间又要全部呈现图像本身,用 100% 100%,缺点是图像可能会扭曲变形。</p>
<h2>三、实例</h2>
<p>&#128073; <a href="https://www.huachaowang.com/forum.php?mod=viewthread&amp;tid=92395&amp;extra=page%3D1" title="点击查看帖子">沙啦啦哩</a></p>
<p>帖子附有代码。这里简单介绍一下帖子的情况:</p>
<ul>
<li>背景图片尺寸 1275*850,宽高比为 1.5:1</li>
<li>帖子初始宽度设为 1200px</li>
<li>帖子使用 <code>aspect-ratio: 3/2;</code> 属性设置强制宽高比配套背景图片尺寸宽高比</li>
<li>background-size 属性设置为 contain 以保证图像始终以不失真的方式渲染(全屏下左右或上下会有空白)</li>
</ul>
</div>

梦江南 发表于 2026-4-18 18:59

黑黑老师晚上嚎!谢谢老师辛苦,学习了。{:4_187:}

杨帆 发表于 2026-4-18 20:13

background的属性不少呢,谢谢马老师详细讲授{:4_190:}

红影 发表于 2026-4-18 21:02

“强制宽高比配套背景图片尺寸宽高比”,这个好,图片不会失真。
看到全屏下,帖子的横向有自动填充,保证了帖子不失真。

红影 发表于 2026-4-18 21:03

感谢黑黑的介绍,看看这样的帖子感觉真好,又可以清楚很多做帖的内容了{:4_187:}

无名 发表于 2026-4-18 21:18

我之前有个帖子的图片背景也是不能显示完整,后来谷歌了一下给的建议是在 no-repeat center/cover; 后面添加 height: 100vh 就ok 了。

马黑黑 发表于 2026-4-18 22:21

无名 发表于 2026-4-18 21:18
我之前有个帖子的图片背景也是不能显示完整,后来谷歌了一下给的建议是在 no-repeat center/cover; 后面添 ...

height: 100vh; 就是将元素的高度设置为视口的 100%。这个好方法,它以重置元素的尺寸来适配背景图片,之前预设的元素宽高都会被改写。

马黑黑 发表于 2026-4-18 22:21

红影 发表于 2026-4-18 21:03
感谢黑黑的介绍,看看这样的帖子感觉真好,又可以清楚很多做帖的内容了

不过我的介绍可能有点粗糙,很多东东还是自己去体验才能真正掌握。

马黑黑 发表于 2026-4-18 22:23

红影 发表于 2026-4-18 21:02
“强制宽高比配套背景图片尺寸宽高比”,这个好,图片不会失真。
看到全屏下,帖子的横向有自动填充,保证 ...

严格说这时“留白”,就是图片不能占满所有区域,空缺部分由 background-color “值班”。

不同的显示终端“留白”的方向不一样,有的是X方向,有得是Y方向

马黑黑 发表于 2026-4-18 22:24

杨帆 发表于 2026-4-18 20:13
background的属性不少呢,谢谢马老师详细讲授

这些是构建标准的组织精心设计的东东

马黑黑 发表于 2026-4-18 22:24

梦江南 发表于 2026-4-18 18:59
黑黑老师晚上嚎!谢谢老师辛苦,学习了。

晚上多嚎嚎

杨帆 发表于 2026-4-18 22:44

马黑黑 发表于 2026-4-18 22:24
这些是构建标准的组织精心设计的东东

是,学习标准,执行标准,用好标准{:4_199:}

马黑黑 发表于 2026-4-18 23:28

杨帆 发表于 2026-4-18 22:44
是,学习标准,执行标准,用好标准

知识点很多很细,需要潜心学习

梦江南 发表于 2026-4-19 07:53

马黑黑 发表于 2026-4-18 22:24
晚上多嚎嚎

黑黑老师早上嚎!多学习学习,长点知识。{:4_190:}

马黑黑 发表于 2026-4-19 13:11

梦江南 发表于 2026-4-19 07:53
黑黑老师早上嚎!多学习学习,长点知识。

长点知识嚎

杨帆 发表于 2026-4-19 17:52

马黑黑 发表于 2026-4-18 23:28
知识点很多很细,需要潜心学习

是,潜心学习,天天向上,享受过程{:4_190:}

马黑黑 发表于 2026-4-19 19:56

杨帆 发表于 2026-4-19 17:52
是,潜心学习,天天向上,享受过程

{:4_181:}

红影 发表于 2026-4-19 21:41

马黑黑 发表于 2026-4-18 22:21
不过我的介绍可能有点粗糙,很多东东还是自己去体验才能真正掌握。

是的,自己体会到了是最好的。

红影 发表于 2026-4-19 21:41

马黑黑 发表于 2026-4-18 22:23
严格说这时“留白”,就是图片不能占满所有区域,空缺部分由 background-color “值班”。

不同的显示 ...

其实留白也是为了保证比例呢。

马黑黑 发表于 2026-4-19 21:54

红影 发表于 2026-4-19 21:41
其实留白也是为了保证比例呢。

就这意思
页: [1] 2
查看完整版本: 音画帖背景设置