Respond JS有什么作用

JavaScript014

Respond JS有什么作用,第1张

Respond.js让IE6-8支持CSS3 Media Query。

Bootstrap里面就引入了这个js文件,从名字看出来是自适应的兼容。打开IE看了一下,效果挺好的,自适应的效果挺好的。Respond.js让不支持CSS3 Media Query的浏览器包括IE6-IE8等其他浏览器支持查询。

的css路径取出来放入数组

2.然后遍历数组一个个发ajax请求

3.ajax回调后仅分析response中的media query的min-width和max-width语法,分析出viewport变化区间对应相应的css块

4.页面初始化时和window.resize时,根据当前viewport使用相应的css块。

使用:考虑到IE9是支持CSS3的,所以直接在HTML页面的head标签中添加脚本引用即可:

<!--[if lt IE 9]>

      <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>

<![endif]—>

<!--[if lt IE 9]><script src = "http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js" > </script><![endif]—>    

官方demo地址:http://scottjehl.github.com/Respond/test/test.html 1.在css中正常用 min/max-width media queries

@media screen and (min-width: 480px){

        ...styles for 480px and up go here

    }

@media screen and (min-width: 480px){...styles for 480px and up go here}    

2.引入respond.min.js,但要在css的后面(越早引入越好,在ie下面看到页面闪屏的概率就越低,因为最初css会先渲染出来,如果respond.js加载得很后面,这时重新根据media query解析出来的css会再改变一次页面的布局等,所以看起来有闪屏的现象)

一般来说在移动浏览器上是拿不到屏幕真实分辨率的,因为页面渲染是在一个叫viewport的页面绘制区域内(说的通俗点就是手机浏览器是用一个虚拟的屏幕来显示网页的)。viewport和屏幕的真实尺寸并不是对应的,如在Safari Mobile中viewport默认宽度(320px)是屏幕真实尺寸(640px)的一半,这里不管是用window.innerHeight还是window.screen.width拿到的都是320px。当然我们可以通过meta设置改变viewport的比例,如initial-scale=.5就可以让viewport和屏幕一致的尺寸,但这个比例在不同的手机上并不一定是2倍关系,特别是Android手机,在大屏手机(5寸以上)上这个值是3倍甚至4倍。而且改变viewport比例后可能会导致后续制作中出现一系列问题。所以我认为不要纠结一定要拿到屏幕真实尺寸,就把viewport的尺寸当成屏幕的尺寸进行页面设计和制作肯定是没有问题的。

有一个非常曲线的解决办法,就是:css的媒体查询(@media)是能够检测屏幕尺寸(其实是浏览器窗体的真实尺寸,并不是屏幕的真实物理尺寸,介意的朋友就不要看了)的,通过它来给网页内的某个元素设置一个特殊的属性,然后再用JavaScript来获取这个属性值。当然这样只能获得一个阶梯值(比如480px到540px之间、540px到600px之间等等),不是精确值,所以可能得不偿失,因此我是不推荐的。

1、Chartist.js 是简单的响应式图表,可以作为前端图表生成器。

主要特性:

使用基于配置的转换简单处理

使用明确的分离,具有巨大的灵活性(使用 CSS 样式和 JS 控制)

使用 SVG

完全响应式,具有独立 DPI

多媒体查询的响应式配置

完全使用 SASS 构建,并且支持自定义

2、Chartist.js的使用方法

1)在其官方网站中下载JS包和CSS包,并且在页面中引用它们:

<link rel="stylesheet" href="bower_components/chartist/dist/chartist.min.css">

<script src="bower_components/chartist/dist/chartist.min.js">

2)绘图,直接调用包内的函数即可,以线形图为例来说明:

new Chartist.Line('.ct-chart', {

 labels: ['1', '2', '3', '4', '5', '6'],

 series: [

   {

     name: 'Fibonacci sequence',

     data: [1, 2, 3, 5, 8, 13]

   },

   {

     name: 'Golden section',

     data: [1, 1.618, 2.618, 4.236, 6.854, 11.09]

   }

 ]

})

var easeOutQuad = function (x, t, b, c, d) {

 return -c * (t /= d) * (t - 2) + b

}

var $chart = $('.ct-chart')

var $toolTip = $chart

 .append('<div class="tooltip"></div>')

 .find('.tooltip')

 .hide()

$chart.on('mouseenter', '.ct-point', function() {

 var $point = $(this),

   value = $point.attr('ct:value'),

   seriesName = $point.parent().attr('ct:series-name')

 $point.animate({'stroke-width': '50px'}, 300, easeOutQuad)

 $toolTip.html(seriesName + '<br>' + value).show()

})

$chart.on('mouseleave', '.ct-point', function() {

 var $point = $(this)

 $point.animate({'stroke-width': '20px'}, 300, easeOutQuad)

 $toolTip.hide()

})

$chart.on('mousemove', function(event) {

 $toolTip.css({

   left: (event.offsetX || event.originalEvent.layerX) - $toolTip.width() / 2 - 10,

   top: (event.offsetY || event.originalEvent.layerY) - $toolTip.height() - 40

 })

})

3)实现的效果: