在进行媒体查询的编写的时候,我们可以利用scss与与编译器,通过@include混入的方式对代码进行简化,从而大大提高了代码的可维护性,也减少了代码的编写量,废话不多说,直接上代码
- // 定义设备数值
- $breakpoints: (
- 'phone': (320px, 480px),
- 'ipad': (481px, 768px),
- 'notebook': (769px, 1024px),
- 'pc': 1205px
- );
-
- // sass 混合
- @mixin respnseTo($breakname) {
- // map-get:从对应键值对中获取数据,
- $bp: map-get($breakpoints, $breakname);
-
- // 判断 $bp 是 list,还是单个值
- @if type-of($bp) == 'list' {
- // 从 list 中获取第一项和第二项数据
- $min: nth($bp, 1);
- $max: nth($bp, 2);
- @media (min-width: $min) and (max-width: $max) {
- // @content:混入其他的数据
- @content;
- }
- } @else {
- @media (min-width: $bp) {
- @content;
- }
- };
- }
-
- .container {
- width: 100%;
-
- @include respnseTo('phone') {
- height: 50px;
- }
-
- @include respnseTo('ipad') {
- height: 60px;
- }
- }
最后编译结果:
- @media (min-width: 320px) and (max-width: 480px) {
- .header {
- height: 50px;
- }
- }
-
- @media (min-width: 481px) and (max-width: 768px) {
- .header {
- height: 60px;
- }
- }