移动端背景图片适配

2018-12-23

前言

俗话说“一图胜千言”。文字当然是一个网页不可或缺的部分,但图片在网络传输和信息交流中也起到了十分重要的作用。
巧妙地在网页中使用图片不仅能更好的表达我们的意思,而且还能为网页增踩不少。网页支持多种图片格式,而且可以对插入的图片设置宽度和高度。

图片布局

  1. 图片直接使用作为背景层,上层元素使用css position: absolute;图片作为背景层 如下图:

  2. 使用css属性background:url();background-size:100% 100%。背景图填充。如果元素的宽高不确定 ,
    会出现图片拉伸、变形 跟设计稿不符

  3. 使用 媒体查询调整一种是是结合百分比或flex布局,对特定的模块在特定的屏幕宽度范围内做调整
    另一种是结合rem, 对不同屏幕宽度范围内的设备设置不同的rem参照字体大小
    html{font-size:10px}
    @media screen and (min-width:321px) and (max-width:375px){html{font-size:11px}}
    @media screen and (min-width:376px) and (max-width:414px){html{font-size:12px}}
    @media screen and (min-width:415px) and (max-width:639px){html{font-size:15px}}
    @media screen and (min-width:640px) and (max-width:719px){html{font-size:20px}}
    @media screen and (min-width:720px) and (max-width:749px){html{font-size:22.5px}}
    @media screen and (min-width:750px) and (max-width:799px){html{font-size:23.5px}}
    @media screen and (min-width:800px){html{font-size:25px}}
    缺点:
    无法完全适配Android设备各种屏幕,无法保证显示的一致性,
    如:定义了一个模块的高度在 321 至 375下是40px,那么一个模块在这个范围的屏幕中显示就是40px,而不能随屏幕大小而变化。

  4. 使用js 根据屏幕大小来控制背景图片的显示 原理跟媒体查询相似
  5. CSS百分比padding与宽度自适应图片布局

    在默认的水平文档流方向下,CSS margin和padding属性的垂直方向的百分比值都是相对于宽度计算的,这个和top, bottom等属性的百分比值不一样。
    1
    2
    3
    <div class="banner">
    <img src=""banner.jpg>
    </div>

.banner元素同样负责控制比例,然后图片填充.banner元素即可,CSS代码如下:

1
2
3
4
5
6
7
8
9
.banner {
padding: 15.15% 0 0;
position: relative;
}
.banner > img {
position: absolute;
width: 100%; height: 100%;
left: 0; top: 0;
}

需要保持图片比例且宽度自适应padding实现demo