#javascript #jquery #html #css #image
#javascript #jquery #HTML #css #изображение
Вопрос:
Я пытаюсь реализовать загрузчик для фонового изображения, пока все изображение не будет полностью загружено с помощью jquery. Я пробовал различные методы для этого. Поскольку изображение указано в CSS, я не смог указать точный идентификатор изображения или класс. Наконец, я заканчиваю тем, что делаю это ,
$(window).load(function() {
$(".loader").fadeOut("slow");
})
Но при этом это происходит при загрузке окна. Я хотел, чтобы это происходило до тех пор, пока изображение не будет полностью загружено.
И фоновое изображение находится в следующем разделе
<div class="loader"></div>
<div class="test_banner services_banner">
</div>
Было бы здорово, если бы кто-нибудь помог справиться с этим делом. Заранее спасибо.
Комментарии:
1. Рассмотрите возможность использования любого из
lazyload
плагинов. Не нужно изобретать велосипед.2. Пожалуйста, опубликуйте полный пример (например, jsfiddle) с разметкой и css. Не могу себе представить, как это выглядит и как это должно выглядеть.
3. Возьмите фоновое изображение из CSS, создайте новое изображение с тем же именем файла, и когда оно будет загружено, Удалите загрузчик и т. Д.
Ответ №1:
Возможно, вы могли бы использовать несколько фоновых изображений
пример:
div {
height:90vh;
width:90vw;
background:url(http://lorempixel.com/1200/800/nature/) center,
url(http://www.jqueryscript.net/demo/Simple-Customizable-jQuery-Loader-Plugin-Center-Loader/img/loader1.gif) center center no-repeat ;/* this works once/untill image has been loaded */
<div></div>
Фон Gif остается здесь, но окрашен в соответствии с большим изображением. Это видно до тех пор, пока не загружено большое изображение …
Комментарии:
1. Спасибо за вашу помощь. Я попробовал ваше предложение. Но при выполнении этого он показывает пошаговую загрузку изображения. Я хотел показать основное изображение только после полной загрузки. Точно так же, как заменить загрузчик изображением.
2. @MuneerMuhammed, похоже на старый вопрос, но прогрессивный (чересстрочный) jpg позволяет избежать этого, изображение загружается быстрее, затем разрешение увеличивается до полной загрузки, чтобы не показывать его по частям. по битам. photoshop, gimp и многие другие программы имеют эту опцию. есть онлайн-инструменты evn: coding.tools/ progressive-jpeg , imgonline.com.ua/eng /… , …
Ответ №2:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery Create a "Please Wait, Loading..." Animation</title>
<style>
.overlay{
display: none;
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 999;
background: rgba(255,255,255,0.8) url("http://www.jqueryscript.net/demo/Simple-Customizable-jQuery-Loader-Plugin-Center-Loader/img/loader1.gif") center no-repeat;
}
body{
text-align: center;
}
/* Turn off scrollbar when body element has the loading class */
body.loading{
overflow: hidden;
}
/* Make spinner image visible when body element has the loading class */
body.loading .overlay{
display: block;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
// Initiate an Ajax request on button click
$(document).on("click", "button", function(){
// Adding timestamp to set cache false
$.get("/examples/php/customers.php?v=" $.now(), function(data){
//$("body").html(data);
});
});
// Add remove loading class on body element depending on Ajax request status
$(document).on({
ajaxStart: function(){
$("body").addClass("loading");
},
ajaxStop: function(){
$("body").removeClass("loading");
}
});
</script>
</head>
<body>
<button type="button">Get Customers Details</button>
<div class="overlay"></div>
</body>
</html>