javascript - CSS:当我更改背景图像 url() 时,它不再遵循背景大小:包含直到我调整 h&w 大小

标签 javascript php jquery css

我正在开发一个用于在智能家居面板中编辑图 block 的界面:https://github.com/open-dash/HousePanel

在编辑图 block 时,用户将能够从图标库中更改图 block 的背景图像。这一切都有效,除了当图像被替换时它忽略了 background-size: cover 为 CSS 中的元素。但是,如果我同时更改高度和宽度,它会正确调整大小,我什至可以将它设置回原始大小并保持正确的大小(见下图。)

Interface - User selects new image in step 2

因为图像正在被替换,所以我尝试在事后设置 css,所以,按以下顺序:

background-image: url("http://192.168.1.1/icons/toilet.png");
background-size: contain;
-webkit-background-size: contain;
-moz-background-size: contain;
-o-background-size: contain;

...但我仍然必须更改父 div 的宽度和高度以使其重新计算/包含以正确填充父 div。给了什么?

注意:以上都是通过以下代码片段添加的,否则效果很好,我在 chrome 中检查元素时可以看到更改:

if(sheet.insertRule){
  if(index > -1) {
    sheet.insertRule(selector + "{" + rules + "}", index);        
  }
  else{
    sheet.insertRule(selector + "{" + rules + "}");           
  }
}
else{
  if(index > -1) {
    sheet.addRule(selector, rules, index);    
  }
  else{
    sheet.addRule(selector, rules);   
  }
}

有什么想法吗?有没有办法强制它重新计算需要填充的区域?

TIA!

最佳答案

如果我是正确的,是否创建了一个即时样式表并每次都进行 xhr 处理?

您是否尝试过直接通过 jQuery 设置 css 属性? ( example )

如果不是,考虑触发元素的刷新:

document.getElementById(selector).style.display = 'none';
document.getElementById(selector).style.display = 'block';

关于javascript - CSS:当我更改背景图像 url() 时,它不再遵循背景大小:包含直到我调整 h&w 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194697/

相关文章:

javascript - 在map.arc()中循环Json对象

javascript - JavaScript 何时何地运行,那么 PHP 呢?我可以将两者结合起来吗?

php -/php_intl.h :33:10: fatal error: 'unicode/ubrk.h' file not found

php - 是否可以使用 Drupal 编写数据输入脚本?

jQuery Mobile 主题 - 在哪里获取它们?重新调整 jQTouch 主题的用途?

javascript - php强制页面重新加载包括

javascript - 如何阻止我的函数返回 "Reference error: (...) is not defined"

javascript - 条件和 switch 语句的问题

javascript - 使用 Gulp 和 Babel 导入和转换 JS 文件

jQuery 下拉导航菜单