图片在网页里是不可或缺的元素,可以增加网站的丰富度及美感,但是也可能造成网站花太多时间载入,使用者体验不佳,甚至影响到网站的排名。因此,图片的解析度、档案大小相当重要。以下就来介绍图片用於网页的注意事项
<img>
在html中插入图片,是透过src属性来嵌入图片。
<img src="图片url" alt="替代文字" height="像素" width="像素" />
图片路径分为:「相对路径」与「绝对路径」
<img src="img/pic.jpg" />
<img src="http://xxxxx.com.tw/img.jpg" />
当图片无法预览时,取代图片显示在网页上的文字
<img src="img/pic.jpg" alt="我是图片" />
当滑鼠滑过时,会显示的文字
<img src="img/pic.jpg" title="显示标题文字图片" />
滑鼠移到图片上,会出现title属性输入的文字
标题 | 网页 | 印刷 |
---|---|---|
尺寸 | px像数 | cm公分、mm公厘 |
色彩模式 | RGB | CMYK |
解析度要求 | 72ppi | 300dpi |
档案格式 | JPG, PNG, GIF | TIFF, EPS, JPG, PNG |
通常影响网页速度的原因都是在图片读取,导致使用者没耐心直接离开网站,导致使用者体验不佳,甚至网站的排名下降,四个小技巧改善图片提升网站速度
可以使用 tinypng 针对png与jpg图档 线上压缩图片工具,只需将要压缩的图片拖曳到网站上就可以进行压缩,一次只能压缩20张,每张档案大小5MB内。
像是图片使用尺寸大小500400,却将图片设置比他大的尺寸900800,再用css去设定图片的宽度
当网站图片很多的时候,可以使用Lazy Loading,可以大幅提升网路载入的速度及流量的浪费。
使用Lazy Loading是浏览器已经内建功能不需要任何Javascript、CSS,只需要在标签加上loading 属性
<img src="img/pic.jpc" loading="lazy">
将多张icon小图合并在一张大图里面,再将图片放到背景图(background-image),使用背景定位(background-position)方式显示正确的icon。但CSS Sprite还是有使用上的优缺点,使用前还是自己评估。
优点:减少网页的http请求,也没有图片命名的困扰
缺点:是要规划好每张图的精确位置
srcset、sizes属性目的是浏览器会自动判断萤幕宽度或解析度,自动载入不同大小的图片
用来指定多张不同尺寸的图片,当浏览器不支援时,就会用src的图片
<img srcset="图片路径 大小单位, 图片路径 大小单位" src="图片路径" />
<img srcset="pic-480.jpg 480w,
pic-767.jpg 767w,
pic-1280.jpg 1280w"
src="pic.jpg"
>
当<img>
宽度为480时,载入pic-480.jpg,宽度为767时,载入pic-767.jpg...以此类推
<img srcset="pic-1x.jpg 1x,
pic-2x.jpg 2x,
pic-3x.jpg 3x"
src="pic.jpg"
>
当设备
pixel density 是 1时,载入pic-1x.jpg,pixel density 是 2,载入pic-2x.jpg...以此类推
用来辅助srcset属性,浏览器在不同的萤幕大小
,该给什麽尺寸的图片,所以图片的排版宽度设定,还是要由CSS处理。单位可以使用px或vw
<img srcset="图片路径 大小单位, 图片路径 大小单位"
size="media query条件 使用的图片实际宽度, media query条件 使用的图片实际宽度"
src="图片路径" />
只有在 srcset 以 w 为单位时才可使用 sizes
<img srcset="pic-480.jpg 480w,
pic-767.jpg 767w,
pic-1280.jpg 1280w"
sizes="(max-width: 480px) 480px,
(max-width: 767px) 767px,
900px"
src="pic.jpg"
>
当萤幕宽度小於480px时,使用480px的图片,萤幕宽度小於767px时,使用767px的图片,如果都没有指定 media query 条件时,就使用900px的图片
除了使用美美的照片外,将图片调整到适当的大小,套用不同的样式,像是圆角图片、阴影、边框...设定,可以让整体版面看起来更加丰富,以下范例是常用的图片样式设定:
<img src="pic1.jpg" alt="" class="pic1">
<img src="pic2.jpg" alt="" class="pic2">
img{
width: 100px;
height: 100px;
margin-right: 10px;
}
.pic1{
border-radius:20px;
}
.pic2{
border-radius:50%;
}
<img src="pic1.jpg" alt="">
<img src="pic2.jpg" alt="">
img{
width: 200px;
border:2px solid #ccc;
padding:8px;
box-shadow: 3px 3px 4px #ccc;
margin-right: 10px;
}
假设有一张图片500px,当你设定max-width:100%,你的浏览器宽度如果小於图片宽500px,图片就会显示浏览器的宽度
img{
max-width:100%;
}
当没有设定max-width:100%时,在小萤幕,图片不会自动缩放ㄝ就会有水平卷轴
在「网页颜色-30天学会HTML+CSS,制作精美网站」这篇有提到,当无法预期使用者上传图片尺寸时,高度大小不同会导致版面跑版,所以就要把图片写在背景图、设定图片位置及尺寸,让他们看起来一致。
这里要来教你使用「object-fit」、「object-position」样式,不用把图片设为背景图,也可以做到一样的效果罗~
<div>
<h2>object-fit: fill(默认):</h2>
<img class="fill" src="img.jpg">
</div>
<div>
<h2>object-fit: contain:</h2>
<img class="contain" src="img.jpg">
</div>
<div>
<h2>object-fit: cover:</h2>
<img class="cover" src="img.jpg">
</div>
.fill {object-fit: fill;}
.contain {object-fit: contain;}
.cover {object-fit: cover;}
与background-position类似,设定图片XY轴位置,可以设定数值及关键字
<div>
<h2>object-position:20px top</h2>
<img class="top" src="https://cdn.pixabay.com/photo/2021/03/29/01/54/wallaby-6132753__480.jpg">
</div>
<div>
<h2>object-position:center center</h2>
<img class="center" src="https://cdn.pixabay.com/photo/2021/03/29/01/54/wallaby-6132753__480.jpg">
</div>
<div>
<h2>object-position:100% bottom</h2>
<img class="bottom" src="https://cdn.pixabay.com/photo/2021/03/29/01/54/wallaby-6132753__480.jpg">
</div>
.top {object-position: 20px top;}
.center {object-position: center center;}
.bottom {object-position: 100% bottom;}
就想像object-fit类似background-size,object-position类似background-position,是不是很简单呢?
图片是网页不可或缺的元素,可以用样式做到很多的变化,像是边框、阴影....,但是在使用上就要注意图片档案大小,避免使网站载入速度过慢,导致使用者没耐心直接跳出。相信你已经对图片使用了解了,以上是今天的介绍,那我们明天见~
资料来源:
https://www.fooish.com/html/image-img-tag.html
https://www.zhangxinxu.com/wordpress/2015/03/css3-object-position-object-fit/
https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-position
<<: [Day 22] Mattermost - with Drone Plugin
欸不是,我在验证资讯管理系统,跟人力资源有关系吗? 当然有关系啦! 由於【人】就是公司最重要的资产,...
参赛前言 由於目前是硕二的学生,平常有在外面接专案,但是为了要毕业还是需要努力想出论文题目 第一天先...
GitHub Action 的 workflow 是以 YAML 档案进行设定 (副档名为 .yml...
你是否有在电脑上做过网路设定呢?在常见网路问题 - 检查 Router 设定中有简单提到过 DHCP...
这里的domain并不是指网域的domain, 而是针对某张资料表的固定搜寻条件(当然是可以写程序去...