【问题标题】:css image swap mobile vs desktop using media query使用媒体查询的 css 图像交换移动与桌面
【发布时间】:2019-05-21 13:40:23
【问题描述】:

首先感谢所有提供意见的人。我们非常接近解决方案!!!我们复制了整个 div,只删除了第二个 div 的视差内容,并在第二个 div 中将 show-on-desktop 替换为 show-on-mobile。

很遗憾,移动版没有显示移动版。

这是样式表

.show-on-desktop {
  /* display can be inline-block, just choose one that suits your need*/
  display: block;

  /* it's your call what the break point is */  
  @media screen and (max-width: 1440px) {
    display: none;
  }
}

.show-on-mobile {
  /* display can be inline-block, just choose one that suits your need*/
  display: none;

  /* it's your call what the break point is */  
  @media screen and (max-width: 411px) {
    display: block;
  }
}

这是显示 div 的更新代码

<div class="show-on-desktop bg-img parallax-content" style="background-image: url(img/home-desktop.jpg?crop=entropy&fit=crop&fm=jpg&h=675&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=1375); background-position: 0px 199.4px;" data-stellar-background-ratio="0.5"></div>

<div class="show-on-mobile bg-img" style="background-image: url('img/home-mobile.jpg?crop=entropy&fit=crop&fm=jpg&h=675&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=1375');"></div>

这是原帖

我有一个客户正在运行一个引导框架主题,该主题在页面上有视差部分。这些部分在笔记本电脑或平板电脑上看起来很棒,但在手机上,它只是抓住了大图像的左上角。

我向客户建议,我们在服务器上编写一个 PHP 检测脚本,将设备识别为移动设备或非移动设备,然后在 PHP 中交换图像,以便图像在手机上看起来最佳。

但它让我想到必须有一种方法可以在 CSS 中实现。我对移动 CSS 不太熟悉,所以我认为这可能是我们社区的一篇有趣的帖子。

这是显示图像的一行代码。

<div class="bg-img full-height  parallax-content" style="background-image: url('img/image-name.jpg?crop=entropy&fit=crop&fm=jpg&h=675&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=1375');" data-stellar-background-ratio="0.5"></div>

我正在寻找的是,如果它的移动设备而不是显示 image-name.jpg,它将显示为移动设备大小正确的 image-mobile.jpg(不同的文件)。

同样,这可以在 PHP 中完成,但在 CS 或 JS 中应该有办法做到这一点。有任何想法吗?提前致谢。

【问题讨论】:

  • background-size:覆盖背景图片,它总是适合的。我大部分时间也使用“中心中心”来定位。这篇文章也可能对您有所帮助:stackoverflow.com/questions/15930504/…
  • 我们尝试了使用媒体屏幕的解决方案,但现在它在移动设备上显示了 2 个版本。它并没有真正做一个“if-then”类型的场景。此外,该课程必须包含“bg-img 全高视差内容”,因为在台式机和平板电脑上存在视差效果。这不是重复的帖子。我看了其他问题,他们只是谈论媒体查询,而不是一个完整的解决方案。如果有人可以提供帮助,我们将不胜感激。

标签: javascript css twitter-bootstrap


【解决方案1】:

这就是媒体查询的用途。

@media only screen and (min-width: 601px) {
  .bg-img {
    background-image: url('img/image-name.jpg');
  }
}

@media only screen and (max-width: 600px) {
  .bg-img {
    background-image: url('img/image-mobile.jpg');
  }
}

【讨论】:

    【解决方案2】:

    这可以在 CSS 中使用 media query 轻松完成

    .show-on-desktop {
      /* display can be inline-block, just choose one that suits your need*/
      display: block;
      
      /* it's your call what the break point is */  
      @media screen and (max-width: 1440px) {
        display: none;
      }
    }
    
    .show-on-mobile {
      /* display can be inline-block, just choose one that suits your need*/
      display: none;
      
      /* it's your call what the break point is */  
      @media screen and (max-width: 411px) {
        display: block;
      }
    }
    <div class="show-on-desktop" style="background-image: url('img-desktop.jpg');" data-stellar-background-ratio="0.5"></div>
    
    <div class="show-on-mobile" style="background-image: url('img-mobile.jpg');" data-stellar-background-ratio="0.5"></div>

    【讨论】:

    • 可以把一个类放在一个类里面吗?即,要使用 PARALLAX 正确显示此图像,它需要 class="bg-img full-height parallax-content show-on-desktop" 可以吗?我们如何指定哪个是 !important?
    • 你绝对可以做到,我只是给你举了一个简单的例子。请注意其他类上的 display 属性。
    【解决方案3】:

    有多种方法可以解决这个问题。媒体查询将是最可靠的查询。

    不过你也可以尝试使用html5的图片标签,比如:

     <picture>
       <source 
          media="(min-width: 650px)"
          srcset="images/img1.png">
       <source 
          media="(min-width: 465px)"
          srcset="images/img2.png">
       <img src="images/img-default.png" 
       alt="">
    </picture>
    

    【讨论】:

    • 一定要检查浏览器对这个的支持。如果您需要支持任何较旧的浏览器,则此选项不可行。 caniuse.com/#search=Picture
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 2013-11-24
    • 2014-05-29
    • 2011-08-09
    • 2021-12-24
    • 1970-01-01
    • 2022-10-22
    • 2019-05-07
    相关资源
    最近更新 更多