重复css背景图像一定次数

Posted

技术标签:

【中文标题】重复css背景图像一定次数【英文标题】:repeat css background image a set number of times 【发布时间】:2011-02-26 08:03:18 【问题描述】:

有没有办法用 css 设置背景图像重复的次数?

【问题讨论】:

【参考方案1】:

一个丑陋的 hack 可能会多次(静态地)插入同一张图片(使用 multiple backgrounds):

例如水平重复图像 (80x80) 三次:

background-image: url('bg_texture.png'), 
                  url('bg_texture.png'),
                  url('bg_texture.png');
background-repeat: no-repeat, 
                   no-repeat,
                   no-repeat;
background-position: 0 top, 
                     80px top,
                     160px top;

注意:在 9 版本以下 (source) 下无法使用 IE。

【讨论】:

你应该只需要不重复写一次,最简单的版本【参考方案2】:

没有。

您可以为框设置绝对宽度 但是没有 css 选项可以重复图像 n 次。

【讨论】:

少设置宽度或高度来限制视觉重复量,或者手动重复单张图像中的区域,对,这个。【参考方案3】:

你可以结合一点 jQuery 和 CSS 来实现你想要的。 假设您想将图像 foo.png 水平显示 3 次,垂直显示 2 次。

CSS:

body 
    background: url('foo.png');

jQuery:

$(document).ready(function() 
    $('body').css('background-size', $(window).width()/3 + 'px ' + $(window).height()/2 + 'px');
);

此外,您可以在 $(window).resize() 中粘贴相同的代码以获得动态响应。

【讨论】:

或者,您可以简单地将 background-size CSS 值设置为 33.33% 50%。不过我觉得 jQuery 会产生更精确的值。【参考方案4】:

正如@gcbenison 所说,虽然没有严格重复图像x 次,但您可以使用background-repeat: space 属性或类似地background-position: round 并将其中任何一个与background-size 结合使用以确保设置数量显示背景图像的重复次数,然后可能调整包装器的大小以适应。

spacerepeat 都会无限重复背景图像,只要可以显示整个图像,但对于任何剩余部分,space 将在图像之间添加间隙,而round 将缩放图像。简而言之,如果背景图像垂直适合 3.342 倍,那么 spaceround 将显示图像 3 次,space 在每个重复图像之间添加一个间隙,round 将图像放大(或缩小) ,如有必要)以填补空白。

因此,如果您想重复一张图片 5 次,每张图片宽 20 像素,间隔 5 像素,您可以简单地这样做:

.star-rating 
    width: 120px;
    background-image: url('example.jpg');
    background-repeat: space;
    background-size: 20px auto;
    

https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat

另一个选项(如果您无法设置宽度)是使用来自@franzlorenzon 的解决方案,并使用多背景 CSS 属性简单地声明背景 x 次数。

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds

此外,您可以通过创建 @for 循环来节省使用 SASS 输入多行的操作,如下所示:

$image_count: 5;
$image_url: 'url(star.svg)';
$image_position: '0';

@for $i from 1 through ($image_count - 1) 
    $image_url: # $image_url+', '+$image_url ;
    $image_position: # $image_position+', '+($i * (100% / $image_count)) ;


.star-rating 
    background-image: $image_url;
    background-position: $image_position;
    background-size: 20px;
    background-repeat: no-repeat;

然后,这将生成背景图像,所有图像均均匀分布。此外,请随意将 ($i * (100% / $image_count)) 更改为 ($i * VALUE) 以获得固定间距。

【讨论】:

【参考方案5】:

我不确定这个问题的最初动机是什么,但我发现它正在寻找一种方法来确保只显示背景图像的整数副本(即不要裁剪重复背景集的最终成员图片。)这可以通过background-repeat: space 属性来实现。

【讨论】:

【参考方案6】:

是的!可以设置背景图片大小: background-size: 20%, 20%;这将使其重复 5 次。

【讨论】:

以上是关于重复css背景图像一定次数的主要内容,如果未能解决你的问题,请参考以下文章

CSS常见技巧

CSS精灵图像+背景重复其中的一部分

CSS背景图像,根据视口调整大小[重复]

在CSS中拉伸背景图像[重复]

CSS背景-图像拉伸高度[重复]

CSS背景图像适合div [重复]