分针网—每日分享: 根据屏幕大小,加载不同大小的图片

引言

今天要介绍的东西,很简单,但是对于前端响应式的时候是个很重要的知识;

我们在用bootstrap这类前端框架时,

虽然页面局部通过media query实现了,页面始终无滚动条,响应式页面。

但是,bootstrap里面的img-responsive类只是通过设置图片100%,

并没有真正的实现在手机上和电脑端加载不同大小的图片。

代码其实很简单

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,initial-scale=1">

<title>Document</title>

<script>

document.createElement( "picture" );

</script>

</head>

<body>

<picture>

<source srcset="pic1.png" media="(max-width: 600px)">

<source srcset="pic2.png" media="(max-width: 800px)">

<img srcset="pic3.png" alt="pic">

</picture>

</body>

</html>

下面是在浏览器中的结果,我们打开Chrome浏览器,按f12后查看网络请求

首先是三张图片

默认情况下,屏幕全屏,宽度大于800

当页面宽度在600px-800px((600,800])之间时

最后是页面小于等于600px

针对上面的代码,我们解释一下:

其中的img元素是默认情况下显示的图片源,

在其上面的两个source元素则是在特定媒体查询(media queries)条件下显示的图片。

这样我们只需要通过像写熟悉的css的媒体查询一样写代码,就能实现根据浏览器窗口大小,动态加载图片。在手机上,就不用加载一个电脑端才显示的大图。

GitHub上有位大神,基于以上的原则,编写了一个picfill的项目,大家有兴趣的可以去git上查看。

转载:http://www.jianshu.com/p/8b725644d9e5

本文转载自分针网

想学习更多IT知识可加群:272292492

时间: 2024-10-12 12:37:17

分针网—每日分享: 根据屏幕大小,加载不同大小的图片的相关文章

分针网—每日分享: 怎么轻松学习JavaScript

js给初学者的印象总是那么的"杂而乱",相信很多初学者都在找轻松学习js的途径. 我试着总结自己学习多年js的经验,希望能给后来的学习者探索出一条"轻松学习js之路". js给人那种感觉的原因多半是因为它如下的特点: A:本身知识很抽象.晦涩难懂,如:闭包.内置对象.DOM. B:本身内容很多,如函数库,对象库就一大堆. C:混合多种编程思想. 它里面不但牵涉面向过程编程思想,又有面向对象编程思想,同时,它的面向对象还和别的编程语言(如:C++,JAVA,PHP)不

分针网—每日分享:说一说 React 和 Redux 你知道或者不知道的一些事情

本文介绍一下自己在使用React和Redux过程中的一些思考,主要面向初学者. 1. 为什么要有redux 传统前端开发中,把模板和功能逻辑分开作为一种最佳实践,React采用了不同的思路,通过组件把模板和逻辑组合在一起.但是React也并不是一个完整的组件化框架,其组件化只是主要集中在展示层面,如果要构建复杂的应用,在React component中放置太多的逻辑代码,不仅组件化的初衷复用性会降低,从代码维护的角度看也不合理. Flux是Facebook提出的一种前端架构模式,通过Flux的数

分针网——每日分享: jquery选择器的用法

jQuery选择器是jQuery库的一大特色,用这些选择器不但可以省去繁琐的JavaScript 书写方式,还可以节省时间和效率,正是有这些jQuery选择器,才让我们更容易的操作JavaScript的dom. 1. 基本选择器 ·#id 根据给定的ID匹配一个元素.例如:$("#id") ·element 根据给定的元素名匹配所有元素.例如:$("div") ·.class 根据给定的类匹配元素.例如:$(".style1"); ·* 匹配所有

分针网—每日分享:js刷新页面方法大全

如何实现刷新当前页面呢?借助js你将无所不能. 1,reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页.true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新") 2,replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过"前进

分针网——每日分享:登录之后,在其他页面怎么判断是否已经登录

本文转载:http://www.f-z.cn/id/261 一.背景介绍 登录功能,是前端经常要完成的需求之一. 一个 网站有很多的操作是必须要用户登陆才能进行操作的 那么如何进行登录判断? 需要用到什么样的属性或者方法? 有什么地方的细节需要注意? 以上这些,都是本次小课堂要讲解的重点! 二.知识剖析 如果想要实现登陆判断,就要有一个判断的依据. 首先,这个依据在我们访问网站的过程中不会失效, 其次,这个依据要能存储一定的信息,以提供必要的判断, 同时满足这两个条件有Storage和cooki

分针网——每日分享:nodejs导出excel实战

本文转载:http://www.f-z.cn/id/268 我们都知道nodejs的内存由于v8内存分配机制的原因十分有限 64位系统也只能占1.4G左右, 因此当我们要生成或者读取大文件的时候内存的吃紧会给我们造成极大的困扰, 遇到这样的情况Node给了我们一个很好的解决方法 stream 简单的了解一下流 流是数据的集合 -- 就像数组或字符串一样.区别在于流中的数据可能不会立刻就全部可用,并且你无需一次性地把这些数据全部放入内存.这使得流在操作大量数据或是数据从外部来源逐段发送过来的时候变

分针网—每日分享:Redis、Memcache和MongoDB的区别

http://www.f-z.cn/id/189 Memcached Memcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右).适用于最大程度扛量. 支持直接配置为session handle. Memcached的局限性: 只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型. 无法进行持久化,数据不能备份,只能用于缓存使用,且重

分针网——每日分享:10个程序员常用的代码简写技术

更多文章:www.f-z.cn 今天小编我给大家整理了一份10个程序员常用的代码简写技术,看懂一种是入门,全懂就是大神,你能知道几个呢? 1.三元操作符 当想写if...else语句时,使用三元操作符来代替. const x = 20;let answer;if (x > 10) { 简写: const answer = x > 10 ? 'is greater' : 'is lesser'; 也可以嵌套if语句: const big = x > 10 ? " greater

分针网—每日分享:mongoose对查询结果进行排序

http://www.fenzhen.cc/id/177 前面的学习已经可以刷出数据了,不过通过循环取出来后,发现并不是按照想象中的按先后顺序列出来的,而是按照数据在数据库中存放的顺序刷出来的. 如图,MongoDB存储数据并没有按照我添加数据的先后顺序,而是按照了author这个字段来的,因此前台刷出的数据也是安装author来的. 那么如何让前台通过时间来排序呢? 解决方法如下: MyModel.find(condition, fields, {sort: [['_id', -1]]}, c