背景图片自适应屏幕

指定宽度进行缩放

可以设置 CSS width: 100%,让背景图片随着浏览器的窗口变化

img {
    width: 100%;
    height: auto;
}

Demo

在上面的例子中,图片可以可以随着窗口放大到比原来还要大的尺寸。所以,在大一些的屏幕中,图片会失真

可以通过设置 max-width: 100% 阻止图片放大到比它原始尺寸还要大

img {
    max-width: 100%;
    height: auto;
}

Demo

使用 background-size 自适应屏幕

可以设置 background-size: cover,它指示浏览器自动的将背景图片的高度和宽度缩放为,和 viewport 的宽高相同或者更大

html {    
    background: url('image.png') no-repeat center fixed;     
    background-size: cover;
}

Demo

  • 背景图片会填满整个屏幕,不留下空白
  • 图片在中央,必要的时候进行缩放,并且不会产生滚动条

有关背景图片的其他方法

保持宽高比

如果你的图片比较小,并且,不想让你的图片失真,可以选择这种方法
设置 background-size: contain, 它告诉浏览器,背景图像会缩放以适应内容区域,但是不会失去宽高比或者变得模糊

div {
    width: 100%;
    height: 300px;
    background-image: url('doggo.jpg');
    background-repeat: no-repeat;
    background-size: contain;
    border: 2px solid #e9385a;
}

Demo

通过拉抻图像填充区域

你可以设置 background-size: 100% 100%; 通过拉伸背景图片,填充一个指定的区域

div {
    width: 100%;
    height: 300px;
    background-image: url('doggo.jpg');
    background-size: 100% 100%;
    border: 2px solid #e9385a;
}

Demo

媒体查询

在小的屏幕上使用大的图像会使页面加载的时间更长,从而使用户的体验变差

因此,我们使用媒体查询在各种屏幕尺寸上以不同的方式显示图像。

在下面的例子中,有一大一小两张图片。我们用 CSS 选择适合屏幕的图片

/* For screens with width smaller than 400px */
body {
    background-image: url('small-birb.jpg'); 
}

/* For larger screens */
@media only screen and (min-width: 400px) {
    body { 
        background-image: url('birb.jpg'); 
   }
}

Demo

可以使用 min-device-width 代替 min-width。它自适应 viewport 的大小

因此,当你调整浏览器窗口的大小时,可以确保图像不会更改

/* For devices with width smaller than 400px */
body {
    background-image: url('birb-small.jpg'); 
}

/* For larger devices */
@media only screen and (min-device-width: 400px) {
    body { 
        background-image: url('birb.jpg'); 
   }
}

Demo

HTML5 的 <picture> 元素

<picture>元素是在HTML5中引入的。 它用于定义两个或更多图片

注意:当某个图片不能加载或者图片的尺寸依赖于屏幕的尺寸时, 使用<picture> 元素可以加载不同的图片

<picture>
  <source srcset="birb-small.jpg" media="(max-width: 400px)">
  <source srcset="doggo.jpg">
  <img src="doggo.jpg" alt="cannot display">
</picture>

Demo

你必须设置 srcset 属性指定图片资源。你可以根据需要,设置多个图片,但是你要记住,你指定这些图片的顺序,

media 这个属性不是必须的,但是你应该加上这个属性

你还应该设置 <img> 元素,兼容不支持 HTML5 的旧版浏览器

以上是我翻译的
原文链接:
https://www.bitdegree.org/learn/responsive-image

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本周还是没什么事情,就是核对界面,然后发现业务有变化,调整一下。 公司的业绩开始持续好转,每个人都很开心。工作就是...
    独行者103阅读 222评论 0 0
  • 今天是什么日子 起床:5:25 就寝:22:30 天气:多云 心情:小焦虑 纪念日:十月初一 任务清单 昨日完成的...
    修远聊成长阅读 274评论 0 7
  • 收拾毕,我想给家人做一顿饭,多天来忙没正正气气吃过。 是包饺子呢还是懒饭?饺子时间有点紧,还是懒饭比较快。说干就干...
    大唐王妃阅读 156评论 0 1
  • 三个梦想:中国梦 教育梦 我们的梦 四大高压线:拒绝负能量,拒绝没梦想,拒绝没有爱, 拒绝不成长
    笃学敏行阅读 248评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,609评论 16 22