博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
响应式网页设计
阅读量:5103 次
发布时间:2019-06-13

本文共 7621 字,大约阅读时间需要 25 分钟。

响应式设计

响应式设计的概念(三要素)

  • 流体网格
  • 响应式图片
  • 媒体查询

相关概念

  • 分辨率 resolution
    • 是指显示器所能显示的像素的多少
  • 像素密度 dpi/ppi
    • 像素密度(pixels per inch),也称PPi,即每英寸屏幕所拥有的像素数,像素密度越大,显示画面细节就越丰富。
  • 设备像素比 dip/dpr
    • 用 iPhone4 举个例子,它有 326 DPI 显示屏,根据上表,智能手机的典型观看距离大概16.8英寸,基准像素为 160 DPI。所以要显示一个 CSS 像素,苹果选择将像素比设置为2,所以看起来就和 163 DPI 手机中显示的一样了。

一、viewport

1.定义

  • viewport 是用户网页的可视区域。
  • 移动端: 布局视口(大部分980px) /理想视口(视口宽度=设备宽度)

2.设置viewport

快捷键:`meta:vp+table`注意:响应式页面必设(视口宽度等于设备宽度,理想视口)

3.设置选项

  • width 视口宽度 通常设置为 device-width
  • height 视口高度
  • initical-scalse 初始化缩放比例
    • (有把设备宽度设置为视口宽度的功能)
    • 通常设置为1.0(不放大)
  • maximun-scale 最大缩放比例
  • minmun-scale 最小缩放比例
  • user-scaleable: yes/no 是否允许用户手动缩放

二、媒体查询

1.媒体类型

  • screen 用于电脑显示器。
  • print 用于打印机。

    例:@media print{          h1{              font-size:200px;          }      }
  • all 用于所有的媒体设备。
  • aural 用于语音和音频合成器。
  • braille 用于盲人用点字法触觉回馈设备。
  • embossed 用于分页的盲人用点字法打印机。
  • handheld 用于小的手持的设备。
  • projection 用于方案展示,比如幻灯片。
  • tty 用于使用固定密度字母栅格的媒体,比如电传打字机和终端。
  • tv 用于电视机类型的设备。

2.媒体特性

  • width 视口宽度
    • max-width 最大视口宽度 视口宽度<=某个值
    • min-width 最小视口宽度 视口宽度>=某个值

      例如:h1{              text-align:center;              color:#fff;          }          @media (width:800px) {              h1{                  color:red;              }          }          @media(max-width:800px){              body{                  background:#369;              }              h1{                  color:green;              }          }          @media(min-width:1000px){              body{                  background:pink;              }                     }
  • height 视口高度
    • max-height 最大视口高度
    • min-height 最小视口高度
  • device-width 设备宽度
    • max-device-width 最大设备宽度
    • min-device-width 最小设备宽度

      例如:
  • device-height 设备高度
    • max-device-height 最大设备高度
    • min-device-height 最小设备高度
  • aspect-ratio 可视窗口宽高比
    • min-aspect-ratio
    • max-aspect-ratio
  • device-aspect-ratio 设备的宽高比
    • max-device-aspect-ratio
    • min-device-aspect-ratio

      例如:          
      媒体特性-aspect-ratio

      aspect-ratio 视口宽高比

  • orientation设备的使用方向
    • landscape(水平)/portrait(垂直方向)

      例如:
  • resolution 屏幕像素比 单位 dppx
    • max-resolution
    • min-resolution

      例如:

3. 媒体查询 用法

1.@media () {        css属性    }    2.
3.@import url(css文件) mediaType (智能判断媒体类型)

4.媒体查询的语法

  • and 并且
  • , 或者
  • only only + 媒体类型
  • not 否定 一定要指定媒体类型,因为媒体类型默认all,not后永远返回假

    例如:

三、 断点

1.手机 小屏幕

  • <= 480px

2.平板 中等屏幕

  • >480px 并且 <= 800px

3.PC 大屏幕

  • >800px <= 1400px

4. 超大屏幕

  • >= 1400px

    例:断点 大屏幕优先        
    断点 大屏幕优先

四、网格系统

1.使内容先隐藏再显示的方法:

  • 法1.

    隐:overflow:hidden;/*避免内容溢出*/          height:0;      现:height:auto;
  • 法2.

    隐:display:none; 现:display:block;

2.响应式的网格系统css文件:

/*响应式的网格系统*/        .row:after{    content:"";    display:block;    clear:both;    }    /*清除浮动*/    .row::after{    content:"";    display:block;    clear:both;    }    [class*="col-"]{    box-sizing: border-box;    float:left;    padding:7px 8px;    }    /*小屏幕  < 480px*/    .col-sm-1{    width:8.33%;    }        .col-sm-2{        width:16.66%;    }    .col-sm-3{        width:25%;    }    .col-sm-4{        width:33.33%;    }    .col-sm-5{        width:41.66%;    }    .col-sm-6{        width:50%;    }    .col-sm-7{        width:58.33%;    }    .col-sm-8{        width:66.66%;    }    .col-sm-9{        width:75%;    }    .col-sm-10{        width:83.33%;    }    .col-sm-11{        width:91.66%;    }    .col-sm-12{        width:100%;    }    /*中等屏幕 480px~ 800px*/    @media(min-width:481px) {    .col-md-1{        width:8.33%;    }    .col-md-2{        width:16.66%;    }    .col-md-3{        width:25%;    }    .col-md-4{        width:33.33%;    }    .col-md-5{        width:41.66%;    }    .col-md-6{        width:50%;    }    .col-md-7{        width:58.33%;    }    .col-md-8{        width:66.66%;    }    .col-md-9{        width:75%;    }    .col-md-10{        width:83.33%;    }    .col-md-11{        width:91.66%;    }    .col-md-12{        width:100%;    }    }    /*大屏幕 >800 px*/    @media(min-width:801px) {    .col-lg-1{        width:8.33%;    }    .col-lg-2{        width:16.66%;    }    .col-lg-3{        width:25%;    }    .col-lg-4{        width:33.33%;    }    .col-lg-5{        width:41.66%;    }    .col-lg-6{        width:50%;    }    .col-lg-7{        width:58.33%;    }    .col-lg-8{        width:66.66%;    }    .col-lg-9{        width:75%;    }    .col-lg-10{        width:83.33%;    }    .col-lg-11{        width:91.66%;    }    .col-lg-12{        width:100%;    }    }

五、响应式图片

1.使用背景图片

    
响应式图片

响应式图片

2.使用H5的picture标签

    
响应式图片

响应式图片

3.使用picturefill插件

  • picturefill.js文件内容:

    /*! Picturefill - Responsive Images that work today. (and mimic the proposed Picture element with span elements). Author: Scott Jehl, Filament Group, 2012 | License: MIT/GPLv2 */  (function( w ){  // Enable strict mode  "use strict";  w.picturefill = function() {      var ps = w.document.getElementsByTagName( "span" );      // Loop the pictures      for( var i = 0, il = ps.length; i < il; i++ ){          if( ps[ i ].getAttribute( "data-picture" ) !== null ){              var sources = ps[ i ].getElementsByTagName( "span" ),                  matches = [];              // See if which sources match              for( var j = 0, jl = sources.length; j < jl; j++ ){                  var media = sources[ j ].getAttribute( "data-media" );                  // if there's no media specified, OR w.matchMedia is supported                   if( !media || ( w.matchMedia && w.matchMedia( media ).matches ) ){                      matches.push( sources[ j ] );                  }              }          // Find any existing img element in the picture element          var picImg = ps[ i ].getElementsByTagName( "img" )[ 0 ];          if( matches.length ){              var matchedEl = matches.pop();              if( !picImg || picImg.parentNode.nodeName === "NOSCRIPT" ){                  picImg = w.document.createElement( "img" );                  picImg.alt = ps[ i ].getAttribute( "data-alt" );              }              picImg.src =  matchedEl.getAttribute( "data-src" );              matchedEl.appendChild( picImg );          }          else if( picImg ){              picImg.parentNode.removeChild( picImg );          }      }      }  };  // Run on resize and domready (w.load as a fallback)  if( w.addEventListener ){      w.addEventListener( "resize", w.picturefill, false );      w.addEventListener( "DOMContentLoaded", function(){          w.picturefill();          // Run once only          w.removeEventListener( "load", w.picturefill, false );      }, false );      w.addEventListener( "load", w.picturefill, false );  }  else if( w.attachEvent ){      w.attachEvent( "onload", w.picturefill );  }  }( this ));
  • html文件内容:

              
    使用插件 实现 响应式图片

六、使用插件 实现 图片拖动

  • html文件:

              
    轮播图 滑动插件
    <
    >
  • swipe.css文件内容

    .swipe{      overflow: hidden;      position:relative;  }  .swipe_wrap{      position: relative;      overflow: hidden;  }  .swipe_wrap div{      float:left;      position:relative;      overflow:hidden;  }
  • swipe.js文件:

    在git文件中下载  输入命令:  bower install swipe.js

转载于:https://www.cnblogs.com/1666818961-lxj/p/7324912.html

你可能感兴趣的文章
Mysql 索引优化 - 1
查看>>
LeetCode(3) || Median of Two Sorted Arrays
查看>>
大话文本检测经典模型:EAST
查看>>
linux基础命令-chgrp/chown/chomd
查看>>
待整理
查看>>
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
Nginx+Keepalived 实现双击热备及负载均衡
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
Something-Summary
查看>>
Spring学习笔记
查看>>
6个有用的MySQL语句
查看>>
我对前端MVC的理解
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
算法为啥子那么难【转】
查看>>