如何使用Javascript在CSS中动态设置背景图片网址

时间:2019-02-20 02:58:22

标签: javascript html

我一直在努力使它工作一段时间。

我认为以下代码将起作用,因为我是从输入中获取值并将背景图像URL设置为该值。

谢谢!

head标签内部的代码。

<script  type="text/javascript">

 function loadImg() {

  var imageUrl = $('#hostImage').attr('value')

  document.getElementById("upload-success-bg").style.backgroundImage=imageUrl

}

</script>

<style>

 #upload-success-bg {
 background-image: url();
 }

</style>

输入域代码

<div class="status">

 <input class="image-url" type="text" id="hostImage" name="hostImage" required="true" 
 value="URL LOADS HERE">

</div>

我要在哪里显示图片

<div class="dropzone upload-success" id="upload-success-bg">
            <div class="info"><p>Drag image file here</p><p>Or click here to select image</p></div>
<input type="file" required="" class="input" accept="image/*"></div>

3 个答案:

答案 0 :(得分:1)

如果您希望为backgoundbackground-color CSS属性使用URL,则即使在JavaScript中,也必须使用url()语法,因此将代码更改为以下内容应该可以: / p>

document.getElementById("upload-success-bg").style.backgroundImage = "url(" + imageUrl + ")"

答案 1 :(得分:1)

jquery中,您可以这样操作:

 function loadImg() {

  var imageUrl = $('#hostImage').attr('value')

  $("#upload-success-bg").css("background-image", "url(" + imageUrl + ")");

}

答案 2 :(得分:0)

File对象没有URL属性。可以创建指向上载文件的Blob URLdata URLBlob URL的生存期链接到创建URL的documentdata URL字符串

data:[<mediatype>][;base64],<data>
可以在其他window或浏览器中打开

您可以使用FileReaderFile对象转换为data URL并将<input type="text"> value设置为FileReader实例{{1 }}。

result
const input = document.querySelector("#file");
const [label] = input.labels;
const upload = document.querySelector("#upload-success-bg");
const uploadURL = document.querySelector("#hostImage");
const reader = new FileReader();

reader.addEventListener("load", e => {
  const {result} = reader;
  upload.style.backgroundImage = `url(${result})`;
  hostImage.style.width = `calc(${result.length}px)`;
  hostImage.value = result;
});

input.addEventListener("change", e => {
  const [file] = input.files;
  console.log(file)
  if (file && /^image/.test(file.type)) {
    reader.readAsDataURL(file);
  }
});
#file {
  display: none;
}

label[for="file"] {
  white-space: pre;
}