Плавное появление картинки при наведении на ссылку
Код:
var imgs = new Array("img1.png", "img2.png", "img3.png");
<nav>
<a href="ссылка.php" onMouseOver="sh_img(1)" onMouseOut="sh_img(0);">текст</a>
<a href="ссылка2.php" onMouseOver="sh_img(2)" onMouseOut="sh_img(0);">текст2</a>
</nav>
<div>
<img src=""img1.png" id="img">
</div>
При наведении на ссылку появляется изображение соответствующей ссылки, если вне диапазона ссылки то используеться картинка по умолчанию Подскажите пожалуйста как теперь сделать чтобы изображение менялось плавно... Пробовал сделать так... Код:
var imgs = new Array("img1.png", "img2.png", "img3.png"); |
http://api.jquery.com/category/effects/fading/
fadeIn / fadeOut не пробовали? |
j0hnik,
А не могли бы вы мне помочь, как правильно и корректно применить это в своем коде?? если вас не затруднит,,, |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<a href="ссылка.php" onMouseOver="sh_img(1)" onMouseOut="sh_img(0);">текст</a>
<a href="ссылка2.php" onMouseOver="sh_img(2)" onMouseOut="sh_img(0);">текст</a>
<img src="img0.png" id="img">
<script>
function sh_img(a){
$("#img").fadeOut( "slow", function() {
$("#img").prop('src', 'img'+a+'.jpg');
$("#img").fadeIn("slow");
});
}
</script>
</body>
</html>
img0 - это изображение по умолчанию. |
CSS3 - transition
|
j0hnik,
Я немного переделал, вы конечно я так хорошо владеете этим языком по крайней мере знаете побольше намного чем я... правильно ли будет если я немного изменил ваш код и сделал так...???
var imgs = new Array("img1.png", "img2.png", "img3.png");
function sh_img(a){
$("#img").fadeOut( "slow", function() {
$("#img").prop('src', imgs[a]);
$("#img").fadeIn("slow");
});
}
все работает отлично, спасибо огромное за помощь, А можно ли изменить интервал,чтобы появление и затухание происходило быстрее? |
Lord_Jesus_,
вместо "slow" можете указать число в мс например 1000 - эта секунда. |
j0hnik,
Спасибо за помощь |
j0hnik,
а если быстро поводить курсором по ссылкам? |
рони,
эффект был будто картинка зависала но после того как я понизил время интервала появление как посоветовал мне "j0hnik", все прорисовываеться плавно |
Lord_Jesus_,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.img {
width: 300px;
height: 200px;
background-repeat: no-repeat;
background-size: cover;
background-image: url(http://img.funtema.ru/10112015/les/5.jpg);
transition: .8s;
}
.img img{
opacity: 0;
width: 100%;
height: 100%;
transition: opacity .8s;
}
.img.show img{
opacity: 1;
}
nav a{
font-size: 42px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var src = ["https://tvoidvor.com/wp-content/uploads/TelegramDesktop-min.jpg", "https://poster.nicefon.ru/2016_06/13/800x450/33349860e2e2ea69df6fc.jpg"];
var div = $(".img");
var img = $("img", div)[0];
$("nav a").each(function(i, el) {
$(el).mouseleave(function() {
div.removeClass("show");
}).mouseenter(function() {
img.src = src[i];
div.addClass("show");
});
});
});
</script>
</head>
<body>
<nav>
<a href="ссылка.php">текст</a>
<a href="ссылка2.php">текст2</a>
</nav>
<div class="img">
<img>
</div>
</body>
</html>
|
Цитата:
var imgs = new Array("img1.png", "img2.png", "img3.png");
function sh_img(a){
$("#img")*!*.stop(true,true)*/!*.fadeOut( "slow", function() {
$("#img").prop('src', imgs[a]);
$("#img").fadeIn("slow");
});
}
|
рони,
это неудобно будет задавать картинки через JS, может лучше использовать http://htmlbook.ru/css/attr ? |
рони,
Спасибо Вам, приму за внимание |
Цитата:
|
Плавное появление картинки
laimas,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.img {
width: 300px;
height: 200px;
background-repeat: no-repeat;
background-size: cover;
background-image: url(http://img.funtema.ru/10112015/les/5.jpg);
transition: .8s;
}
.img img{
opacity: 0;
width: 100%;
height: 100%;
transition: opacity .8s;
}
.img.show img{
opacity: 1;
}
nav a{
font-size: 42px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var div = $(".img");
var img = $("img", div)[0];
$("nav a").each(function(i, el) {
var src = $(el).data("src");
$(el).mouseleave(function() {
div.removeClass("show");
}).mouseenter(function() {
img.src = src;
div.addClass("show");
});
});
});
</script>
</head>
<body>
<nav>
<a href="ссылка.php" data-src="https://tvoidvor.com/wp-content/uploads/TelegramDesktop-min.jpg">текст</a>
<a href="ссылка2.php" data-src="https://poster.nicefon.ru/2016_06/13/800x450/33349860e2e2ea69df6fc.jpg">текст2</a>
</nav>
<div class="img">
<img>
</div>
</body>
</html>
|
А чисто на CSS никак? )
|
laimas,
я незнаю таких селекторов, условно nav a:hover ~ nav + div |
Цитата:
|
Цитата:
|
laimas,
нет nav a:hover => parent + div |
Верстка не религия, можно и изменить. :)
Конечно, если не отходить "от", тогда да. |
Как вариант без <img>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
</head>
<body>
<nav>
<a href="#" class="default">Default</a>
<a href="#" style="--image: url(https://placeimg.com/640/480/nature); ">Nature</a>
<a href="#" style="--image: url(https://placeimg.com/640/480/tech); ">Tech</a>
<a href="#" style="--image: url(https://placeimg.com/640/480/animals); ">Animals</a>
</nav>
<style>
body {
margin: 0;
overflow: hidden;
height: 100vh;
background: radial-gradient(circle at calc(100vw - 10rem) 25vh, #f1f1f1, #888);
}
nav {
display: grid;
grid-template-columns: 20rem;
align-content: end;
justify-content: end;
height: 100vh;
overflow: auto;
}
a {
padding: .5em 1em;
margin: .5em;
border: .1em solid;
color: deepskyblue;
text-decoration: none;
display: inline-block;
border-radius: .5em;
overflow: auto;
font: bold 200% "Helvetica Neue", "Segoe UI", Roboto, Ubuntu, sans-serif;
}
a.default {
visibility: hidden;
/* order: 1;*/
}
a::after, .default::after {
content: "";
position: fixed;
top: 0; bottom: 0;
left: 0; right: 20rem;
background:
center / cover
no-repeat #333;
background-image:
var(--image, url('https://placeimg.com/800/600/people')),
radial-gradient(#333, black);
padding: 1em;
pointer-events: none;
transition: opacity 350ms 200ms, transform 350ms 200ms, visibility 0s 550ms;
opacity: 0;
transform: scale(2);
visibility: hidden;
will-change: opacity, transform, visibility;
z-index: -1;
}
@media (max-width: 75em) {
a::after, .default::after {
right: 0rem;
}
}
.default::after {
z-index: -2;
}
a:hover::after, .default:after {
opacity: 1;
transform: scale(1);
visibility: visible;
transition: opacity 350ms, transform 350ms, visibility 0s 0s;
}
</style>
</body>
</html>
|
| Часовой пояс GMT +3, время: 11:36. |