【问题标题】:Bootstrap and conditional image sizes引导和条件图像大小
【发布时间】:2015-06-28 02:48:11
【问题描述】:

对于跨越浏览器宽度的桌面图像,我们希望在 Bootstrap/Classic ASP 站点中为滑块显示较小的图像。该网站目前正在使用 Bootstrap 的内置“img-responsive”类调整高分辨率图像的大小,但我们认为如果我们为 768 像素以下的视口加载较小的图像以及为 768 像素及以上的现有图像加载较小的图像,我们可以改善体验。

这是滑块的基本标记:

<div class="item active">
    <a href="#">
        <img src="img/slide_001_1900x650.jpg">
        <div class="carousel-content">
            <h3><a href="#">First slide</a></h3>
        </div>
    </a>
</div>
<div class="item">
    <a href="#">
        <img src="img/slide_002_1900x650.jpg">
        <div class="carousel-content">
            <h3><a href="#">Second slide</a></h3>
        </div>
    </a>
</div>
<div class="item">
    <a href="#">
        <img src="img/slide_003_1900x650.jpg">
        <div class="carousel-content">
            <h3><a href="#">Third slide</a></h3>
        </div>
    </a>
</div>

重写 src 似乎并不像看起来那么好,因为它实际上处理了两倍的 HTTP 请求。自适应图像需要 PHP,并且这个站点是使用经典 ASP 构建的,所以我试图找出是否有可以利用类似于自适应图像的 jQuery 脚本。

【问题讨论】:

    标签: javascript jquery css twitter-bootstrap image-size


    【解决方案1】:
        <div class="item active">
                <div class="carousel-content">
                    <h3><a href="#">First slide</a></h3>
                </div>
             <div class="img_disp" style="display:none">
                 <img src="img/slide_001_1900x650.jpg" height="15px" width="15px">
             </div>
        </div>
        <div class="item">
                <div class="carousel-content">
                    <h3><a href="#">Second slide</a></h3>
                </div>
               <div class="img_disp" style="display:none">
                 <img src="img/slide_002_1900x650.jpg" height="15px" width="15px">
               </div>
        </div>
        <div class="item">
                <div class="carousel-content">
                    <h3><a href="#">Third slide</a></h3>
                </div>
              <div class="img_disp" style="display:none">
                  <img src="img/slide_003_1900x650.jpg" height="15px" width="15px">
              </div>
    
        </div>
    //this is the jquery part
        <script>
        $(document).ready(function(){
           $(document).on('click','h3>a',function(event){
                   event.preventDefault();
                   $(this).parents('.item').find('.img_disp').show();
             });
        });
        </sript>
    

    可以通过改变您想要的高度和宽度来改变图像尺寸。试试这个代码。

    【讨论】:

      【解决方案2】:

      您根本不需要任何服务器端或 JavaScript 支持。您只需将图像更改为 CSS background-images 而不是 HTML 中的内联,然后让 CSS 和浏览器确定您需要的内容。

      第 1 步 - 删除内联 img 标记

      <div class="item active">
        <a href="#">
          <div class="carousel-content">
              <h3><a href="#">First slide</a></h3>
          </div>
        </a>
      </div>
      <div class="item">
        <a href="#">
          <div class="carousel-content">
              <h3><a href="#">Second slide</a></h3>
          </div>
        </a>
      </div>
      <div class="item">
        <a href="#">
          <div class="carousel-content">
              <h3><a href="#">Third slide</a></h3>
          </div>
        </a>
      </div>
      

      第 2 步 - 使用 CSS background-image 恢复图像

      您可能必须使用background-position 来定位他们想要的位置。

      div.item {
        height: 8em;
        width: 36em;  
        background-image: url("http://www.thecatman.info/wp-content/uploads/2014/06/five-cute-kittens.png")   
      }   
      

      第 3 步 - 添加响应式版本

      当我们降到 768 像素以下时,小猫太多了?没问题;添加这个:

      @media all and (max-width: 768px) {
        div.item {
          width: 18em;
          background-image:url("http://www.polyvore.com/cgi/img-thing?.out=jpg&size=l&tid=44246076")
        }
      }
      

      这里有一个JSFiddle 来演示它。

      【讨论】:

      • 在您的示例中,您正在使用媒体查询添加低分辨率图像。这意味着用户的浏览器毕竟必须下载高分辨率图像。最好先在移动设备上工作。
      • 是的。但它显示了从 CSS 驱动它的想法。显然,“步骤 2”CSS 也可以包含在媒体查询中,以防止不必要的下载。
      猜你喜欢
      • 2014-07-01
      • 2019-06-27
      • 1970-01-01
      • 2019-06-21
      • 2014-12-25
      • 2014-08-09
      • 1970-01-01
      • 2017-06-05
      • 2013-06-25
      相关资源
      最近更新 更多