响应式笔记(4)

1、三段媒体查询

@media only screen and (max- 50em) {

}

@media only screen and (min- 30.0625em) and (max- 50em){

}

@media only screen and (max- 30em) {

}

断点随着文字的大小而变化会更好一些。
1.如果网站针对特定的分表率,确实有功能的不同,建议断点(媒体查询)都设置为一个绝对的值(即PX);
2.如果网站只是在展示样式上不同,功能都一样的话,那么媒体查询使用相对单位的长度吗,会让用户用更好的体验。

这里有坑:在媒体查询中,相对单位rem和em的基准高于html,所以与在html中设置的rem大小并不一致!
这里的rem或em依然是:1rem=1em=16px,所以800/16=50rem。
另外,rem兼容性不如em,故采用兼容性更好的em为媒体查询的断点单位。

2、响应式图片

1、三段媒体查询

@media only screen and (max- 50em) {

}

@media only screen and (min- 30.0625em) and (max- 50em){

}

@media only screen and (max- 30em) {

}

断点随着文字的大小而变化会更好一些。
1.如果网站针对特定的分表率,确实有功能的不同,建议断点(媒体查询)都设置为一个绝对的值(即PX);
2.如果网站只是在展示样式上不同,功能都一样的话,那么媒体查询使用相对单位的长度吗,会让用户用更好的体验。

这里有坑:在媒体查询中,相对单位rem和em的基准高于html,所以与在html中设置的rem大小并不一致!
这里的rem或em依然是:1rem=1em=16px,所以800/16=50rem。
另外,rem兼容性不如em,故采用兼容性更好的em为媒体查询的断点单位。

2、响应式图片

(1)、javascript实现

$(document).ready(function () {
    function makeImageResponsive() {
        var width = $(window).width();
        var img = $(".owl-carousel img");

        if (width <= 480) {
            img.attr("src","img/480.png");
        } else if (width <= 800) {
            img.attr("src","img/800.png");
        } else {
            img.attr("src","img/1600.png");
        }
        $(window).on("resize load",makeImageResponsive);
    }
});

(2)、通过html声明式来实现响应式图片: srcset方法:图片地址+空格+图片尺寸描述+逗号(用逗号分隔)

例子 <img class="image" src="../img.png" srcset="img/480.png 480w, img/800.png 800w, img/1600.png 1600w">

srcset需要与sizes配合使用,sizes属性默认设置为100vw,vw代表视口的宽度(viewport width), 还有vh等,100vw代表100%viewport width。sizes中的单位也可以设置成px,em等单位

(3)、使用html标签来实现响应式图片:通过使用picture、source、 srcset来自主控制加载何种大小或格式的图片。

<source media="(orientation: landscape)"
    srcset="img/tiananmen-s.jpg 768w"></source>
<!--png类型-->
<source type="image/png" srcset="logo.png 480w, logo-m.png 800w, logo-l.png 1600w"></source>
<picture>
  <source srcset="img/ad001-l.png" media="(min-50em)">
  <source srcset="img/ad001-m.png" media="(min-30em)">
  <img src="img/ad001.png" alt="">
</picture>

使用picture标签,为保证兼容性,需要使用Picturefill 库,在main.js前引入

<script srcset="js/picturefill.min.js"></script>
原文地址:https://www.cnblogs.com/tgxh/p/6292573.html