【CSS】响应式图片

原图:(宽1680px,高1050px)

可是,我们平时做网站的时候当<img src=”***”>中的图片大于可视窗口(viewport)时,就会出现横的滚动条、图片被截断的情况,如下图所示:

这时候我们可以使用响应式技术来解决:

响应式图片就是当浏览器屏幕窗口大小改变时,图片会随着窗口大小的改变而改变,不会出现图片被截断或出现横滚动条。

HTML代码:

<body>
       <img src="1.jpg" alt=””/>
</body>

CSS代码:

img{
		width: 100%;		   /*设定为百分比那就OK*/
		max-width: 100%;           /*为了保证图片不被拉伸,可加上此CSS属性*/
	}

效果:

上面示例是插入img标签的情况,那么如果是背景图片怎么处理呢?

HTML代码:

<body>
    <div class="backgroundImgShow">
    	<p class="text">12111111111111111444444444444444444444444444445555555555555</p>
    </div>
</body>

CSS代码:

body,div,p{
		margin: 0;
		padding: 0;
	}
.backgroundImgShow {
		background: url(1.jpg) no-repeat 50% 50%;
	}
.text{
		color: white;
		word-wrap: break-word;
		font-size: 30px;
	}

一般情况下,当内容的高度小于背景图片的高度时,背景图片就不能全部显示,如下图所示:

这时候我们可能会想到为内容区设定与背景图片同样的高度,如我的示例图片是1680px*1050px,那么我的CSS height值可设为1050px;

body,div,p{
		margin: 0;
		padding: 0;
	}
	.backgroundImgShow {
		background: url(1.jpg) no-repeat 50% 50%;
		<strong><span style="color:#ff0000;"> -webkit-background-size: 100%;
		background-size: 100%;</span>
		<span style="color:#ff0000;">height: 1050px;</span></strong>
	}
	.text{
		color: red;
		word-wrap: break-word;
		font-size: 30px;
	}

这样背景图片就可以等比例缩放了,但图片距离浏览器顶部却有1050px的空白高度,如图:

这时候去掉高度,且修改CSS代码为:

body,div,p{
		margin: 0;
		padding: 0;
	}
	.backgroundImgShow {
		background: url(1.jpg) no-repeat 50% 50%;
		 -webkit-background-size: 100%;
		background-size: 100%;
<span style="color:#ff0000;"><strong>padding-top: 62.5%; 	/* 1050/1680=0.625 即高度除以宽度,可以解决背景图片的比例问题 */</strong></span>
	}
	.text{
		color: red;
		word-wrap: break-word;
		font-size: 30px;
	}

效果如下:

可以看到图片上面仍然会出现一点白边,且文字并不完全在图片里面,这时候我们可以更进一步优化,我们可以把background-size: 100%;修改为background-size:cover;意思就是背景图片填满包装它的容器,并且按比例缩放。效果图:

可是文字偏下,由于上面设置了padding-top:62.%;所以会有很大的上边距,可以设置margin-top:-62.5%;来取消边距。最终图:

最终CSS代码:

body,div,p{
		margin: 0;
		padding: 0;
	}
	.backgroundImgShow {
		background: url(1.jpg) no-repeat 50% 50%;
		 -webkit-background-size: cover;
		background-size: cover;
		padding-top: 62.5%;
	}
	.text{
		color: red;
		margin-top: -62.5%;
		word-wrap: break-word;
		font-size: 30px;
	}

注:虽然能够通过响应式的方式使得图片在不同大小的屏幕也能等比例缩放,大图片(分辨率高)在较小的屏幕上加载浏览时(如手机),有WiFi的时候加载速度区别不大,但是没WiFi的情况下要加载这么大的图片就很吃力了。这时候可以使用媒体查询,使用较小(分辨率低)的图片代替大图,加载就会快一点,提升用户体验。

Author:致知

Sign:路漫漫其修远兮,吾将上下而求索。

时间: 2024-10-04 03:15:56

【CSS】响应式图片的相关文章

HTML5与CSS响应式图片

随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变这种现状.那么到底什么是响应式图片呢? 什么是响应式图片? 响应式图片是指:用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费.同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片.UI前端框架最新力作!有奖试读! CSS 响应式图片 对于很多 IOS 开发者来说可能已经

CSS与HTML5响应式图片

随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变这种现状.那么到底什么是响应式图片呢? 什么是响应式图片? 响应式图片是指:用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费.同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片. CSS 响应式图片 对于很多 IOS 开发者来说可能已经不太陌生了,为了适配Retina

CSS 与 HTML5 响应式图片

什么是响应式图片? 响应式图片是指:用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费.同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片. CSS3 响应式图片 对于很多 IOS 开发者来说可能已经不太陌生了,为了适配 Retina 屏幕,传统的 CSS3 实现方式是通过加载一张宽高分别放大两倍的图片,然后通过 Media Queries 使背景图片尺寸减小一倍「background-size:50% 50%;」,例如: .mod .hd h3 { backgro

【Bootstrap】3.优化站点资源、完成响应式图片、让传送带支持手势

A.优化站点资源 速度很重要.用户很关心.我们的站点必须加载够快,否则用户就会走人.SEO 也很重要.我们的站点必须加载够快,否者搜索排名就会下降. 明白了这样,我们就来清点一下 [Bootstrap]2.作品展示站点 中的资源.特别的,来看一看我们能控制的.影响页面速度的重要因素 —— 文件大小,包括图片.CSS和 JavaScript 文件.只要简单几步,我们就可以给这些文件“瘦身”,缩短加载时间. A.1 优化图片 这些图片都通过 Photoshop 的 “保存为 Web 格式” 进行了一

继续送假期干货——响应式图片工具smartImg

中午看<众妙之门>看到一个响应式图片处理工具(点此查看)的介绍,然后就心血来潮想着不妨自己写一个基于JQ的吧,于是就又有了这么一个干货给大家. smartImg 的全部文件可以从我的Github上下载,其实它非常小巧,去掉注释一共也就40行,之所以这么轻便,JQ也是帮了大忙. 应用场景 我们在搭建响应式页面时,对于图片的处理或多或少都有些烦躁,例如我们希望在某个屏宽的环境下显示某一张图片,在另一个屏宽的环境下则显示为另一张图片. 这种做法对于用户体验是比较重要的,常规建议是用户用大屏幕设备访问

HTML5 处理响应式图片

CSS「image-set」 解决了背景图片的响应式问题,但是 HTML中的 img 元素如何处理? <picture > <source src=hires.png media="min-width:800px"> <source src=midres.png media="min-width:480px"> <source src=lores.png> <!-- 不支持的浏览器降级处理 --> <

web响应式图片设计实现

.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { text-align: center; margin-top: 20px; margin-left: 10px; margin-bottom: 20px } a { cursor: pointer; text-decoration: none; color: gray } a:hover { text

bootstrap-内联表单 水平(横向)表单 响应式图片 辅助类 [转]

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <!--媒体查询--> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- 为了确保适当的绘制和触屏缩放,需要在 <head> 之中添加 viewp

8.10 响应式布局2 弹性网络 (栅格系统) 响应式图片

响应式图片 给img的宽度 设置为100% 使用background-image 配合padding-top 使用  `<picture>` 标签. * 使用 pricturefill.js 插件 <link rel="stylesheet" href="./grid.css"> stylesheet样式表