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

Jam*_*dev -1 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'));
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

Ale*_*shy 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" 
/>
Run Code Online (Sandbox Code Playgroud)
  • 使用独立的高品质图像

在这里我们也给浏览器一个默认图像,然后根据屏幕大小自动定义哪一个.

<img src="logo-1x.jpg" 
  srcset="logo-2x.jpg 2x, 
          logo-3x.jpg 3x"
  data-sticky="assets/images/logo-sticky.png" 
/>
Run Code Online (Sandbox Code Playgroud)