sir*_*ver 1 javascript jquery background-image filereader
我正在使用标准的 jQuery 上传图片,我希望将其用作标题的背景图片。Background-image 应该接收 'url' 而不是 'src' 属性,那么还有可能获得吗?
jQuery代码:
function uploadImage(input){
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
$('#home-section').attr('background-image...???', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
#home-section是提供给标题的 id。我知道我也可以使用常规的 img 标签,然后使用 z-indexes 使其像背景图像一样运行,但这是唯一的选择吗?
小智 5
只需将结果 Data-URL 包装url()在 CSS的函数中。也style用作属性名称:
$('#home-section').attr('style', 'background-image:url(' + e.target.result + ')');
Run Code Online (Sandbox Code Playgroud)
然而,更好的方法是将 File 对象 (Blob) 与 Object-URL 一起使用。这更快并且留下更小的内存占用。作为奖励,您可以Filereader完全放弃:
function uploadImage(input){
if (input.files && input.files[0]) {
var url = URL.createObjectURL(input.files[0]);
$('#home-section').attr('style', 'background-image:url(' + url + ')');
}
}
Run Code Online (Sandbox Code Playgroud)
function uploadImage(input){
if (input.files && input.files[0]) {
var url = URL.createObjectURL(input.files[0]);
$('#home-section').attr('style', 'background-image:url(' + url + ')');
}
}
document.querySelector("input").onchange = function(){uploadImage(this)};Run Code Online (Sandbox Code Playgroud)
#home-section {width:640px; height:480px}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Select image: <input type=file></label><br>
<div id=home-section></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |