如何获得具有数据属性的视网膜就绪图像?

时间:2019-01-18 14:26:29

标签: javascript jquery twitter-bootstrap

因此,我有一个以下脚本,其中在用户滚动时立即显示徽标文件"logo-sticky.png"而不是文件"logo.png"。 我不知所措,试图找到一种解决方案,以获取图像的视网膜就绪文件。

不胜感激!

$(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>

1 个答案:

答案 0 :(得分:5)

您可以在HTML中使用该属性,而不是使用JS。

在这种情况下,有多种解决方法。

  • 通过srcset为不同的屏幕尺寸使用不同的图像:

在这种情况下,这只是经典的响应式样式。

<img src="logo-400.png" 
  srcset="logo-200.jpg 200w, 
          logo-400.jpg 400w,
          logo-800.jpg 800w,
          logo-1200.jpg 1200w"
  data-sticky="assets/images/logo-sticky.png" 
/>
  • 使用高质量的单张图片

在这里,我们还为浏览器提供了默认图像,然后他根据屏幕尺寸自动定义要拍摄的图像。

<img src="logo-1x.jpg" 
  srcset="logo-2x.jpg 2x, 
          logo-3x.jpg 3x"
  data-sticky="assets/images/logo-sticky.png" 
/>