前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >响应式图像

响应式图像

作者头像
超然
发布于 2018-08-03 08:47:31
发布于 2018-08-03 08:47:31
2.6K00
代码可运行
举报
文章被收录于专栏:超然的博客超然的博客
运行总次数:0
代码可运行

将picture元素和srcset,sizes属性纳入html5规范,新规范意在解决:

  • 基于设备象素比(device-pixel-radio)选择
  • 基于viewport选择
  • 基于Art direction(美术设计)选择
  • 基于图像格式选择

一、固定宽度图像:基于设备像素比选择

  srcset属性列出了浏览器可以选择加载的源图像池,是一个由逗号分隔的列表。x描述符表示图像的设备像素比。浏览器根据运行环境,利用这些信息来选择适当的图像。不理解srcset的浏览器会直接加载src属性中声明的图像。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<img srcset="crest-383.jpg 1.5x, crest-510.jpg 2x" src="crest-255.jpg" alt="USWNT crest" />

网站logo就是固定宽度图像的一个例子,不管viewport的宽度如何,始终保持相同的宽度。

与内容相关的图片,通常也需要响应式,它们的大小往往随viewport改变。对于这类图像,还有更好的处理方法。

二、可变宽度的图像:基于viewport选择

1. 对于可变宽度的图像,我们使用srcset搭配w描述符以及sizes属性 。w描述符告诉浏览器列表中的每个图象的宽度。sizes属性是一个包含两个值的,由逗号分隔的列表。根据最新规范,如果srcset中任何图像使用了w描述符,那么必须要设置sizes属性。

2. sizes属性有两个值:第一个是媒体条件;第二个是源图尺寸值,在特定媒体条件下,此值决定了图片的宽度。需要注意是,源图尺寸值不能使用百分比,vw是唯一可用的CSS单位。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<img srcset="uswnt-480.jpg 480w, 
             uswnt-640.jpg 640w, 
             uswnt-960.jpg 960w,
             uswnt-1280.jpg 1280w" 
     sizes="(max-width: 400px) 100vw, 
            (max-width: 960px) 75vw, 
            640px" 
     src="uswnt-640.jpg" alt="USWNT World Cup victory">

 上例中,我们告诉浏览器在viewport宽度小于400像素时,使图像的宽度与viewport等宽。在viewport宽度小于960像素时,使图像的宽度为viewport宽度的75%。当viewport大于960像素时,使图像的宽度为640像素。

vm

当处理宽度的时候,%单位更合适。处理高度的时候,vh单位更好。

1. 占满宽度的元素: % > vw

正如我所提到的,vw单位根据视窗的宽度决定它的大小。然而,浏览器是根据浏览器的窗口计算视窗大小的,包括了滚动条的空间。

如果页面延伸超过视口的高度——滚动条出现——视窗的宽度将会大于html元素的宽度。

因此,如果你将一个元素设置为100vw,这个元素将会延伸到htmlbody元素范围之外。在这个例子中,我用红色边框包裹html元素,然后给section元素设置背景颜色。

因为这个细微的差别,当使一个元素横跨整个页面的宽度时,最好使用百分比单位而不是视口的宽度。

2. 占满高度的元素:vh > %

在另一方面,当使一个元素跨越整个页面的高度时,vh远比百分比单位好。

因为用百分比定义的元素的大小是由它的父元素决定的,只有父元素也填满整个屏幕的高度时我们才能拥有一个填满整个屏幕的高度的元素。

然而,用vh的话,就像下面写的那么简单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.example {
  height: 100vh;
}

  不管.example元素如何嵌套,它还是能够相对于视窗尺寸设置大小。滚动条的问题也不是一个问题,因为现在大多数页面通常不会有水平滚动条。

vh应用

全屏背景图片

vh单位一个典型的用途是用来创建一个横跨整个屏幕高度和宽度的背景图片,不管设备的大小。这用vh很容易实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.bg {
  position: relative;
  background: url('bg.jpg') center/cover;
  width: 100%;
  height: 100vh;
}

占满全屏的内容块像“多页面”一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
section {
  width: 100%;
  height: 100vh;
}

我们可以用javascript来实现翻动页面的错觉。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('nav').on('click', function() {

  if ( $(this).hasClass('down') ) {
    var movePos = $(window).scrollTop() + $(window).height();
  }
  if ( $(this).hasClass('up') ) {
    var movePos = $(window).scrollTop() - $(window).height();
  }

  $('html, body').animate({
    scrollTop: movePos
  }, 1000);
})

兼容性

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-08-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[译]响应式图像
练小习
2017/12/29
2.2K0
响应式布局,你需要知道这些
https://juejin.cn/post/6951575591099301895
前端达人
2021/05/11
1.8K0
web图像的常见应用策略与技巧
文章主要讲述了如何通过修改SVG的src属性来加载不同版本的SVG文件,并介绍了两种回退策略:使用image-set和动态设置src。同时,也介绍了一些关于加载优化的技巧,例如使用data uri和base64编码。在总结中,提到了这些技术的使用场景和注意事项,以帮助读者更好地理解和应用这些技术。
练小习
2017/12/01
1.7K0
前端基础知识概述 -- 移动端开发的屏幕、图像、字体与布局的兼容适配
前端的一大工作内容就是去兼容页面在不同内核的浏览器,不同的设备,不同的分辨率下的行为,使页面的能正常工作在各种各样的宿主环境当中。
Sb_Coco
2019/09/06
3.2K0
响应式图片解决方案
来源:学生做的网站,方便大家学习交流设计与技术 http://www.uidask.com/index.php 网站的平均加载已经到了近 2MB 并在不断地增加中,其中图片占据了绝大多数流量(63%)。可以肯定的是网页已经有了严重的大小问题,而图片就是罪魁祸首。虽然已经有很多种 措施 可以减少网页加载量,但或许更重要的步骤之一是确保响应式图片的加载方案。通过利用响应式图片解决方案,我们可以确保最佳的图片被加载,带宽不会被过大的图片所浪费。因此 W3C 定义了 picture 标签:基于检测客户端设备类型
用户1730674
2018/05/02
1K0
随方逐圆--全面理解CSS媒体查询
在CSS2中,媒体查询只使用于<style>和<link>标签中,以media属性存在;media属性用于为不同的媒介类型规定不同的样式,而真正广泛使用的媒介类型是'screen'、'print'和'all'
江米小枣
2020/06/15
1.3K0
响应式布局的实现
响应式布局指的是同一页面在不同屏幕尺寸或者在不同的设备下有不同的布局,能够在大屏设备以及小屏设备获得更好的浏览体验,简单来说就是页面适应终端而无需为每个终端制作单独的页面。
WindRunnerMax
2020/08/27
2K0
详细的聊一聊如何使用响应式图片,提升网页加载速度
确保图片在所有屏幕尺寸上都能良好显示是一项困难的任务,因为你需要考虑图片的大小、图片的放置位置、显示图片的比例、用户连接的速度等等众多因素。结果是,大多数开发者只会为所有屏幕尺寸使用同一张图片,并让浏览器调整图片的大小以适应屏幕。这是一种不好的做法,因为浏览器仍会下载完整尺寸的图片(通常非常大),即使它只以其一部分尺寸显示。这会浪费用户的带宽,并且会显著减慢页面加载速度(尤其是在较慢的连接下)。
前端达人
2023/08/31
6440
详细的聊一聊如何使用响应式图片,提升网页加载速度
CSS&HTML面经专题——(四)移动端响应式布局
在移动端viewport视口(pc端没有这个概念)就是浏览器显示页面内容的屏幕区域。
玖柒的小窝
2021/10/26
2.5K0
【Web前端】CSS 响应式设计(补充)
随着移动设备的普及,网页设计的焦点逐渐转向了响应式设计。响应式设计不仅要求网页在各种屏幕尺寸上良好展示,还要适应不同设备的特性。
一条晒干的咸鱼
2024/11/19
2660
【Web前端】CSS 响应式设计(补充)
关于移动端适配,你必须要知道的
上面这些问题可能我们在开发中已经知道如何解决,但是问题产生的原理,以及解决方案的原理可能会模糊不清。在解决这些问题的过程中,我们往往会遇到非常多的概念:像素、分辨率、 PPI、 DPI、 DP、 DIP、 DPR、视口等等,你真的能分清这些概念的意义吗?
ConardLi
2019/05/23
2K0
移动端自适应的常见手段
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
HZFEStudio
2021/10/01
2K0
54个CSS重难点整理,12-24篇,进阶高薪必需要掌握的知识点
本次我把CSS中的重难点整理出来,总共54个核心知识点,供大家复习,希望能帮到大家。这些重难点是进阶高薪必需要掌握的知识点,同时也是面试必问的内容。
艾编程
2022/12/06
1.4K0
54个CSS重难点整理,12-24篇,进阶高薪必需要掌握的知识点
超越媒体查询:使用更新的特性进行响应式设计
除了使用媒体查询和现代CSS布局(例如flexbox和grid)来创建响应式网站之外,我们使用一些比较不太被用或者比较新的特性来制作响应式网站。 在本文中,我们将探讨许多可用的工具(围绕HTML和CSS),从响应图像到相对较新的CSS函数,无论我们是否使用媒体查询,它们都可以正常工作。
前端小智@大迁世界
2020/10/28
4.2K0
静态布局、自适应布局、流式布局、响应式布局、弹性布局等的概念和区别
1、布局特点:不管浏览器尺寸具体是多少,网页布局始终按照最初写代码时的布局来显示。常规的pc的网站都是静态(定宽度)布局的,也就是设置了min-width,这样的话,如果小于这个宽度就会出现滚动条,如果大于这个宽度则内容居中外加背景,这种设计常见与pc端。 2、设计方法:   PC:居中布局,所有样式使用绝对宽度/高度(px),设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查阅被遮掩部分;   移动设备:另外建立移动网站,单独设计一个布局,使用不同的域名如wap.或m.。
何处锦绣不灰堆
2020/05/29
11.2K0
微信小程序布局单位的使用
rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应。官方推荐微信小程序可以用iPhone6 作为视觉稿的标准。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为750 px,则共有个750 物理像素,则750 rpx = 375px = 750 物理像素 例如 : 1rpx = 0.5px = 1物理像素
用户2305175
2018/06/24
3.1K0
vw, vh视窗宽高单位的使用
不过“我看见你”和“我触碰你”是不一样的。正好,机缘巧合,最近又与这两个单位想见。大致琢磨了下,貌似vh这个单位可以实现我以前曾希望实现的的整体高度自适应布局。想到这里,自己不由得小兴奋了下,于是决定抽时间研究研究(虽然最近整iPad忙得屁股尿流~~)。
javascript.shop
2019/09/05
2.6K0
vw, vh视窗宽高单位的使用
布局常用解决方案对比(媒体查询、百分比、rem和vw/vh)
简要介绍:前端开发中,静态网页通常需要适应不同分辨率的设备,常用的自适应解决方案包括媒体查询、百分比、rem和vw/vh等。本文从px单位出发,分析了px在移动端布局中的不足,接着介绍了几种不同的自适应解决方案。
用户8639654
2021/07/26
2.2K0
【学习图片】11.描述性语法
在这个模块中,我们将学习如何为浏览器提供一系列图像选择,以便它可以做出最佳的显示决策。srcset不是在特定断点切换图像源的方法,也不是为了将一张图像换成另一张。这些语法允许浏览器独立地解决一个非常困难的问题:无缝地请求和渲染一个适合用户浏览上下文的图像源,包括视口大小、显示密度、用户偏好、带宽和一些其他因素。
前端小智@大迁世界
2023/03/08
1.2K0
【学习图片】11.描述性语法
网站自适应布局为什么我要抛弃rem,改用vw?
你还在用rem弹性布局吗?在html文件头部放入一大段压缩过的js代码,是不是让你很难受?来了解下vw吧,能让你的代码更纯粹。
李洋博客
2021/06/15
3.6K0
相关推荐
[译]响应式图像
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验