Monday, 21 January 2019

How to get a retina-ready image with a data-attribute?

So I have a following script where the logo file "logo-sticky.png" appears instead of file "logo.png" as soon as user scrolls. I broke my head trying to find a solution of how to get the retina-ready files for my images.

Would appreciate any help!

$(window).scroll(function() {
    if($(this).scrollTop() > 50)  /*height in pixels when the navbar becomes non opaque*/ 
    {
        $('.sticky-navbar').addClass('sticky');
    } else {
        $('.sticky-navbar').removeClass('sticky');
    }
});

var navbarImg = $('.navbar-brand > img')
navbarImg.data('original', navbarImg.attr('src'))

$(window).scroll(function() {
    var stickyNav = $('.sticky-navbar');
    var isSticky = $(this).scrollTop() > 50;
    stickyNav.toggleClass('sticky', isSticky);
    navbarImg.attr('src', navbarImg.data(isSticky ? 'sticky' : 'original'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<nav class="navbar navbar-inverse navbar-fixed-top sticky-navbar hideme visible animated fadeInDown full-visible">
    <div class="container">
        <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <i class="fa fa-bars" aria-hidden="true"></i>
        </button>
        <a class="navbar-brand" href="index.html">
            <img src="assets/images/logo.png" alt="" data-sticky="assets/images/logo-sticky.png" />
        </a>
        </div>
    </div>
</nav>


from How to get a retina-ready image with a data-attribute?

No comments:

Post a Comment