웹 프론트엔드 HTML 튜토리얼 研究一下响应式图片加载属性srcset和sizes_html/css_WEB-ITnose

研究一下响应式图片加载属性srcset和sizes_html/css_WEB-ITnose

Jun 21, 2016 am 09:01 AM

元旦过后又长一岁,然而活到老学到老这个道理是不变的。这几天把手上一部分WordPress网站升级到最新版4.4,就学到新东西了。发现4.4版给所有在文章内容区的图片都加上了两个属性:srcset和sizes。比如:

这俩个属性的作用是为不同显示尺寸加载不同的图片源,这样就能在图片本身做到“响应式”,而不仅仅是跟随屏幕尺寸了。

比如上面图中的srcset为

srcset=".../gt-scavenger_1-300x507.jpg 300w, .../gt-scavenger_1-768x1298.jpg 768w, .../gt-scavenger_1-606x1024.jpg 606w, .../gt-scavenger_1-624x1055.jpg 624w, .../gt-scavenger_1.jpg 1407w"
로그인 후 복사

其中每一段的格式为srcset=”[图片URL] [图片宽度], [图片URL] [图片宽度]…”,按最新的标准,单位“w”表示当前显示宽度的像素值。解释起来就是这张图片在低于300px宽度的时候,显示小图“gt-scavenger_1-300×507.jpg”;高于300像素且低于606像素时,显示中等尺寸图片“gt-scavenger_1-606×1024.jpg”;当图片显示尺寸大于1407像素时就显示全尺寸图“gt-scavenger_1.jpg”。另外一个属性sizes的写法

sizes="(max-width: 1407px) 100vw, 1407px"
로그인 후 복사

其格式为sizes=”[media query] [视窗宽度], [media query] [视窗宽度] …”。这里的宽度为视窗宽度,即我们常说的viewport宽度。和我们在媒体CSS中写的媒体查询是一致的,这里最后一个“1407px”指默认状态下,即前面的媒体查询没有描述到的情况下这张图片显示的宽度。以上代码的通俗解释是,这张图片在1407px宽的视窗内撑满视窗(100vw),而视窗宽度超过1407px,图片就按1407px的最大尺寸显示。

srcset和sizes为HTML5的最新属性,合理使用它们,尤其是srcset,可以有效避免资源的过度加载,在移动端通过按需加载,减少图片的加载量,加快网页打开速度。不过在实际开发中这样分级显示图片是很麻烦的,要制作多个尺寸的图片,HTML里还要加那么多代码…想想就头疼。

令人惊喜的是在最新版WordPress中你完全不需要进行任何额外操作,只需像平时那样在文章中插图片即可。WordPress会自动根据你上传的图片给,按照各级缩略图规划出适合的显示分级,真的很强大!

不过在一些旧的WordPress项目中我们也碰到了问题。比如在有些页面中我已经做了“懒加载”,即预先在img的src里放一张空图片,把实际URL写到data-original属性里,再根据页面滚动的高度,把data-original的值放到src属性里。当图片被赋予了srcset属性时,所做的这一切就形同虚设了。页面载入的时候,浏览器已经从srcset属性中读取了一张适配的图片到src属性中:

要避免这种情况,我只能在懒加载和srcset之间二取其一。如果要在WordPress中禁用srcset和sizes,你可以把以下代码加到主题的function文件中:

//disable srcset on imagesfunction disable_srcset( $sources ) {	return false;}add_filter( 'wp_calculate_image_srcset', 'disable_srcset' );
로그인 후 복사

最后,如果你想要深挖srcset和sizes,可以看一下 这篇文章 。

本站所有文章均为原创,欢迎转载,但请注明文章出处:http://blog.brain1981.com/1323.html

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

& lt; Progress & Gt의 목적은 무엇입니까? 요소? & lt; Progress & Gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:34 PM

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

HTML은 초보자를 위해 쉽게 배우나요? HTML은 초보자를 위해 쉽게 배우나요? Apr 07, 2025 am 12:11 AM

HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

& lt; datalist & gt의 목적은 무엇입니까? 요소? & lt; datalist & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:33 PM

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

& lt; meter & gt의 목적은 무엇입니까? 요소? & lt; meter & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:35 PM

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

& lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? & lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? Mar 20, 2025 pm 06:05 PM

이 기사는 & lt; iframe & gt; 외부 컨텐츠를 웹 페이지, 공통 용도, 보안 위험 및 객체 태그 및 API와 같은 대안을 포함시키는 태그의 목적.

뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? 뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? Mar 20, 2025 pm 05:56 PM

이 기사는 모바일 장치의 반응 형 웹 디자인에 필수적인 Viewport Meta Tag에 대해 설명합니다. 적절한 사용이 최적의 컨텐츠 스케일링 및 사용자 상호 작용을 보장하는 방법을 설명하는 반면, 오용은 설계 및 접근성 문제로 이어질 수 있습니다.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임 HTML, CSS 및 JavaScript의 역할 : 핵심 책임 Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

HTML의 시작 태그의 예는 무엇입니까? HTML의 시작 태그의 예는 무엇입니까? Apr 06, 2025 am 12:04 AM

anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

See all articles