Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如果可以';不能充分展示_Html_Css - Fatal编程技术网

Html 如果可以';不能充分展示

Html 如果可以';不能充分展示,html,css,Html,Css,当我在CSS中重复背景时,我只想在图像可以完全显示的情况下显示它 我必须以像素为单位设置宽度吗?或者是否有一个CSS属性仅在图像可以完全显示时才显示它 [] 我不确定你到底想实现什么,但从表面上看,你需要一些JS来测量你的div的尺寸,测量你的图像的尺寸并进行简单的比较,然后如果div的大小与图像相同或大于图像,则将div的背景图像设置为图像的url 下面是一个使用CSS和jQuery的基本近似值 /* css */ #container{ ...no image background set

当我在CSS中重复背景时,我只想在图像可以完全显示的情况下显示它

我必须以像素为单位设置宽度吗?或者是否有一个CSS属性仅在图像可以完全显示时才显示它

[]


我不确定你到底想实现什么,但从表面上看,你需要一些JS来测量你的div的尺寸,测量你的图像的尺寸并进行简单的比较,然后如果div的大小与图像相同或大于图像,则将div的背景图像设置为图像的url

下面是一个使用CSS和jQuery的基本近似值

/* css */
#container{ ...no image background set here... }

/* js */
var $container = $('#container');
var image = new Image();
image.src = 'path/to/image.jpg';
image.onload = function() {
  if (
    $container.outerWidth() >= this.width &&
    $container.outerHeight() >= this.height
  ) $container.css('background-image': 'url('+image.src+')');
});
如果您试图精确地拟合重复图像的数量,则此代码可以轻松地调整为不完全依赖于“等于或大于”,而是图像尺寸的乘法

请务必注意,此代码只运行一次,更好的做法是:

var $container = $('#container');
var image = new Image();

image.src = 'path/to/image.jpg';

var calculate = function() {
  if (
    $container.outerWidth() >= image.width &&
    $container.outerHeight() >= image.height
  ) {
    $container.css('background-image': 'url('+image.src+')');
  }
  else {
    $container.css('background-image': 'none');
  }
});

image.onload = calculate;
$(window).on('resize', calculate);

好的,@Arnold我不确定我是否完全理解你的问题,但如果有帮助,你可以使用
背景大小
背景重复
属性,例如:

<div style="background-image: url('file.png'); background-size: x% y%; background-repeat: repeat-x;">

其中x和y分别表示宽度和高度的百分比。因此,如果图像是纵向的(比宽高),请将y设置为100%,将x设置为可被100%整除的百分比,以最好地表示纵横比(例如10、20、25、33.3、50%)。这样,图像将沿x轴均匀地重复,但不需要在y轴上重复,因为它占据了元素高度的100%

(相反,如果图像是横向的(宽于高),x将是100%,y将被100整除,并使用
repeat-y
而不是
repeat-x


这可能需要一些修补,并取决于图像在纵横比稍微降低的情况下看起来是否正常。这可能是您需要的解决方案,也可能不是,但我觉得值得一试。

我真的不明白您的期望是什么?他只希望在重复的图像可以完全显示(而不是切断)时重复背景。我认为他试图通过使用此背景黑技术来实现其他目标,为了实现一些可能根本不需要使用背景技巧的东西,我有点困惑
background repeat
通常假定显示整个图像,否则您无论如何都看不到任何重复。Arnold,当容器元素小于图像时,您希望发生什么情况?@Roberrrt完全正确!在没有Javascript的情况下可以实现这一点吗?(这是一个电子邮件模板)这不是我认为,这是最接近可能的解决方案。如果你正在编写电子邮件模板,我给你的最好建议是在你领先的时候退出,让它尽可能简单。大多数这样的问题都可以在设计规划步骤中解决,您可以简单地提出一个不同的想法/解决方案,而不存在复杂(或在这种情况下不可能)的问题。@medv这是一个非常好的建议,但这已经是我第二次重新开始。在模板上浪费了整整一周的时间,却在30分钟内得到了相同的结果。。。但在这种情况下,它几乎完成了,所以如果有任何解决方案,那将是非常棒的。我认为沉没成本谬论适用于这里!这绝对是一种常见的经历:花很多时间在某件事情上,然后意识到你需要重新做。如果我是你,我仍然会从设计重新开始,尽可能多地包含你当前的工作,而不会深入到这个图像问题。不幸的是,电子邮件客户端css支持低于可接受的水平,因此,CSS3 eg后台大小可能提供的一些解决方案超出了您的能力范围。如果您不想篡改原始图像比例,则这些也不适用。这是一个JS问题,而不是CSS问题。祝你好运
<div style="background-image: url('file.png'); background-size: x% y%; background-repeat: repeat-x;">