[HTML] 이제야 알겠지만 입체 이미지의 설정 방법을 잘 이해해야 한다.srcset과size를 능숙하게 사용할 수 있습니다.
8920 단어 HTMLMediaQuery스펀지 패드
창 사이즈가 2000px일 때는 800px로, 스마트폰은 120px로 표시된다.
또한 Retina 지원으로 인해 해상도의 2배가 필요합니다.800px@2x그래서 큰 게 어울려요.
이런 모델은 비교적 흔하기 때문에
img
의 속성srcset
과 sizes
을 다시 정리해 봅시다.큰 이미지의 파일 크기
아마 이 기사를 보는 사람들에게 "무엇이 당연한가"라고 생각할 테니 좀 더 사귀어라.
고양이의 오리지널 그림이 있다.참고로 이 이미지는 가로 1024px이고 파일 크기는 74.0KB입니다.
150px 너비를 축소판 그림으로 표시하면 파일 크기는 4.2KB입니다.1/10 이하.
이 경우 한 장의 이미지가 최적화되면 거의 70KB를 생략할 수 있다.그나저나 항간에 흔히 말하는 고속화 기술인'미니피(Minify)'는 미니피(Minify) 앞에 1만 줄이 넘는 jQuery 3.3.1, 미니피(Minify) 앞에 78.9KB, 미니피(Minify) 뒤에 30.0KB로 48.9KB 차이가 났다.1만 줄이 넘는 JS의 미니피(Minify)는 해당 이미지의 축소판과 거의 동일합니다.
그나저나 웹사이트에서는 한 페이지에 여러 이미지를 자주 사용하기 때문에 이미지 수와 비례해 파일 크기 다이어트를 할 수 있다.
srcset으로 여러 개의 그림을 준비하면 되지 않습니까? img
라벨은 srcset
속성을 사용할 수 있습니다.간단하게 말하면 img
라벨로 스펀지 패드에 이미지 너비 판정을 하는 속성이다.
예를 들어, 다음과 같은 레이블img
이 준비되어 있습니다.<img srcset="
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=150 150w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=300 300w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=500 500w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=800 800w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=1000 1000w
">
srcset
이미지 URL과 화면 너비(MediaQuery)의 조합에 사용됩니다.그래서https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=300 300w,
즉, 전반부画像URL
, 후반부150w
는 시야 포트 폭으로'시야 포트 폭이 300w 이하인 경우 이 이미지 URL을 이용한다'는 뜻이다.여러 조합을 통해 이미지를 자동으로 스펀지 패드로 바꿀 수 있다.
또한 불일치한 이미지를 읽을 수 없습니다.
보기 포트 너비에 대응한다는 뜻입니다.
나는'시도 포트의 넓이'라는 단어가 익숙하지 않다고 생각한다. 간단하게 말하면 화면의 넓이이다.@media all and (min-width: 1024px)
구문을 사용합니다.@1x(해상도 1배)의 경우 1024px
와1024w
의 뜻이 같다.
그러나 @2x(Retina/해상도 2배)의 경우 2048px
는 1024w
와 일치한다.최근에도 @4x(Retina/해상도 4배)의 단말기가 있는데 이 경우4096px
와 1024w
가 일치한다.네??
모니터의 고해상도와 일치하는 이미지 읽기가 진행됨에 따라 @4x 150px를 표시하면 600px의 이미지를 호출합니다.어떻게 된 거야?
sizes에서 보기 포트 너비 설정
여기에 나타난 것은 img
라벨의 sizes
속성이다.또한img
라벨에width/height가 설치되어 있지 않으면 사용할 수 없습니다. 주의(WordPress는 기본적으로 자동으로 삽입되기 때문에 괜찮습니다)
sizes에서 vw
이 단위를 사용하면 해상도를 설정할 수 있습니다.100vw 해상도 100%sizes="50vw"
설정하면 설정된 해상도가 50%가 됩니다.
img
라벨은 srcset
속성을 사용할 수 있습니다.간단하게 말하면 img
라벨로 스펀지 패드에 이미지 너비 판정을 하는 속성이다.예를 들어, 다음과 같은 레이블
img
이 준비되어 있습니다.<img srcset="
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=150 150w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=300 300w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=500 500w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=800 800w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=1000 1000w
">
srcset
이미지 URL과 화면 너비(MediaQuery)의 조합에 사용됩니다.그래서https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=300 300w,
즉, 전반부画像URL
, 후반부150w
는 시야 포트 폭으로'시야 포트 폭이 300w 이하인 경우 이 이미지 URL을 이용한다'는 뜻이다.여러 조합을 통해 이미지를 자동으로 스펀지 패드로 바꿀 수 있다.또한 불일치한 이미지를 읽을 수 없습니다.
보기 포트 너비에 대응한다는 뜻입니다.
나는'시도 포트의 넓이'라는 단어가 익숙하지 않다고 생각한다. 간단하게 말하면 화면의 넓이이다.
@media all and (min-width: 1024px)
구문을 사용합니다.@1x(해상도 1배)의 경우 1024px
와1024w
의 뜻이 같다.그러나 @2x(Retina/해상도 2배)의 경우
2048px
는 1024w
와 일치한다.최근에도 @4x(Retina/해상도 4배)의 단말기가 있는데 이 경우4096px
와 1024w
가 일치한다.네??모니터의 고해상도와 일치하는 이미지 읽기가 진행됨에 따라 @4x 150px를 표시하면 600px의 이미지를 호출합니다.어떻게 된 거야?
sizes에서 보기 포트 너비 설정
여기에 나타난 것은
img
라벨의 sizes
속성이다.또한img
라벨에width/height가 설치되어 있지 않으면 사용할 수 없습니다. 주의(WordPress는 기본적으로 자동으로 삽입되기 때문에 괜찮습니다)sizes에서
vw
이 단위를 사용하면 해상도를 설정할 수 있습니다.100vw 해상도 100%sizes="50vw"
설정하면 설정된 해상도가 50%가 됩니다.@1x(해상도 1배)의 경우
512px
및 1024w
@1x(해상도 1배)의 경우
1024px
및 1024w
resolution: 2dppx
는 해상도의 2배를 나타내는 MediaQuery)입니다.sizes="(resolution: 2dppx) 50vw, (resolution: 3dppx) 34vw"
그래서 "@2x이면 해상도 2배는 필요 없지만 1.2배죠. @3x 그럼 1.4배로 준비하세요."이렇게 설정하면 된다.sizes="(resolution: 2dppx) 60vw, (resolution: 3dppx) 47vw"
보기 포트 너비는 이미지 너비가 아닙니다. 이미지에 맞추십시오.
그리고
말하자면, 보기 포트의 폭은 그림의 폭이 아니다.200px의 그림을 표시하려면 보기 포트 1024px에서 1024w를 표시하십시오. 그러면 본말이 뒤바뀐 것입니다.
어떻게 해야 좋을지 말하자면, 시청각 포트의 넓이에 대응하는 이미지의 비율을 계산해야 한다.
예를 들어 시야 포트의 폭이 1000px 이하이고 해상도가 1배일 때 200px의 미리 보기 그림을 표시하려면 그림의 가로 폭이 시야 포트의 20%이다.이 설정은 다음과 같습니다.
<img
srcset="https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=200 200w"
sizes="(max-width: 1000px) and (resolution: 1dppx) 20vw"
>
해상도가 2배일 때 300px를 표시하고 싶을 때 이렇습니다.<img
srcset="https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=200 200w,
https://dp5figrfxl9dq.cloudfront.net/wp-content/uploads/2018/10/DSC_1217-20181001113727.jpg?d=300 300w"
sizes="(max-width: 1000px) and (resolution: 1dppx) 20vw, (max-width: 1000px) and (resolution: 2dppx) 30vw"
>
간단한 설치 방법
정리를 위해 복잡한 것이 무엇인지 감안하면 다음과 같은 3가지가 있다.
srcset
할 때 이미지의 넓이(px)와 시야점의 넓이가 일치했어요. 이것도 변경하기 시작하면 끝이 없어요.이렇게 하면 해상도와 창 너비에 대한 계산 공식만 기계적으로 생성할 수 있다
sizes
.구체적으로 순간 득점과 해상도에 따라 준비했기 때문에 다음과 같은 방법으로 제작할 수 있다.(max-width: 1000px) and (resolution: 1dppx) 20vw,
(max-width: 1000px) and (resolution: 2dppx) 12vw, // 20/2*1.2
(max-width: 1000px) and (resolution: 3dppx) 9vw, // 20/3*1.2
(max-width: 1000px) and (resolution: 4dppx) 6vw // 20/4*1.2
각 보기 포트의 폭에 따라 설정하면 의도와 같은 스펀지 패드를 실현할 수 있습니다!특히 @3x@4x는 거의 이동전화였다며 "이동전화라 디스플레이 속도가 중요한데 해상도가 너무 높아 이미지가 안 나온다. 하지만 해상도 1배보다 더 좋은 이미지를 만들고 싶다"고 말했다.자동화하도록 하겠습니다.
그렇게 생각하지만 할 수도 없고, 다른 사람에게 더 많은 계산 부탁을 할 수도 없기 때문에 매 순간 사이즈 제안을 하는 Generation을 만들었습니다.
이미지 표시 어려움이 개선되었습니다.rabify CDN
CDN으로 그림을 전송하고 끝에서 끝낼까요?rabify CDN과 함께 사용할 수 있다면 d=300 등 매개 변수를 입력하면 클라우드를 통해 자동으로 크기를 조절할 수 있습니다.(rabify CDN을 사용하지 않더라도 sizes 계산에 사용할 수 있습니다. 따로 사용하십시오.)
단점은 "CSS에서 설정한 단점이 아니라 스펀지 모양의 폭발점에서 이미지 크기가 가장 클 때"입니다.대부분의 경우 CSS에서 설정한 폭발점 1px 이하로 내려가지 않을까요?
그럼 안녕히 계세요!
Reference
이 문제에 관하여([HTML] 이제야 알겠지만 입체 이미지의 설정 방법을 잘 이해해야 한다.srcset과size를 능숙하게 사용할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rdlabo/items/0bf7a6f4c45494075c50텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)