ECharts数据可视化图表库

一、使用体验
ECharts所提供的常规的图表样式简洁大方,默认的颜色配置不错,也可以自定义,丰富的配置项设置可交互,可个性化定制。

官网提供了很详细的入手文档,主要是配置项的熟悉使用。
官网:http://echarts.baidu.com
echarts-pic1

二、引用方式
1、最简单的引用方式是使用 script 标签引入,官网还提供了“在线构建”的选项,可以按需生成简化版js文件。
<script src="echarts.min.js">
echarts-pic4

2、HTML只需要一个具备高宽的dom容器。
<div id="container" style="width:600px;height:400px;"></div>

3、通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成图表,option指定图表的配置项和数据即可。
var mychart = echarts.init(document.getElementById('container'));
mychart.setOption(option);
echarts-pic2

三、配置项设置
ECharts提供了“配置项手册”,树状图的形式展现内部属性方法,并搭配示例说明。方面查询、理解和使用,入手起来很快。
配置项设置相对于搭建图表框架,设置完之后可以延续使用,每次只需调取不同数据进行展示。
echarts-pic3

四、细节功能
1、保存为图片,并可以设置保存的像素比;当前图表所用数据列表形式展现;
tool1
tool3
2、图表形式的切换,如折线图和柱状图因为数据形式相同可以切换展示;
tool2
3、多图表之间的切换、联动;
4、数据的动态更新,数据的改变驱动图表展现的改变;
5、数据区域缩放、拖动等交互组件;
6、地理坐标系展示,提供了世界、中国、各省地图的js和json引入方式;
echarts-pic6
7、各类主题样式的选择下载;
echarts-pic5
8、异步数据的加载和更新。
echarts-pic7

异步数据加载示例
http://shopdev.ci123.com/svn/jinzhe/webroot/echarts/echarts_ajax.php

微信UI开发样式库介绍

整    理:肖雅君

时    间:2016-03-25

说    明:WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页开发量身设计,可以令用户的使用感知更加统一。

一、微信web开发调试工具

1.介绍

2.下载安装

3.界面及功能

二、微信UI开发样式库

1.安装:npm install --save weui

2.元素类型

3.使用方法

3.1 简单的列表

3.2 单/复选列表框

3.3 开关

3.4 表单

3.5 选择框

 

一、微信web开发调试工具

1.介绍

当我们在用浏览器调试基于微信的网页的时候,经常遇到“请在微信打开的情况”,这使得前端在调试页面的时候非常不方便,微信推出了 web 开发者工具。它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调试工作。

2.下载安装

下载链接:https://mp.weixin.qq.com/wiki/10/e5f772f4521da17fa0d7304f68b97d7e.html#.E4.B8.8B.E8.BD.BD.E5.9C.B0.E5.9D.80

直接安装即可。

3.界面及功能

运行此开发工具,初始界面:

1

功能:

(1)可以使用自己的微信号来调试微信网页授权页面

(2)可以调试、检验页面的JS-SDK相关功能与权限,模拟部分SDK的输入和输出。

(3)可以使用基于weinre的移动调试功能

(4)可以利用集成的Chrome DevTools协助开发。

使用:

1.输入网址后会弹窗二维码,需手机微信确认后才能使用,如下图

24

3

2.输入网址,能打开页面,但是还是不能调试,需开发者和公众号绑定关系。5为了保证开发者身份信息的安全,对于希望调试的公众号,微信要求开发者微信号与公众号建立绑定关系。具体操作为:公众号登录管理后台,启用开发者中心,在开发者工具——web 开发者工具页面,向开发者微信号发送绑定邀请。

详情见链接:https://mp.weixin.qq.com/wiki/10/e5f772f4521da17fa0d7304f68b97d7e.html

二、微信UI样式库

WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页开发设计,可以使用户的使用感知更加统一。在微信网页开发中使用 WeUI,有如下优势:

同微信客户端一致的视觉效果,令所有微信用户都能更容易地使用你的网站
便捷获取快速使用,降低开发和设计成本
微信设计团队精心打造,清晰明确,简洁大方

1.安装:npm install --save weui

生成文件node_modules:里面包含weui文件夹,weui里有微信样式库使用的demo、样式文件和js文件。

67

 

使用的时候,直接引用weui里的样式文件即可,如下:

<link rel="stylesheet" href="node_modules/weui/dist/style/weui.min.css"/>

法2:无需安装,直接复制weui.css样式到自己的项目文件夹下。

2.元素类型

微信UI封装了几个常用的元素样式,

(1)Button按钮

(2)Cell列表视图

(3)Dialog弹窗

(4)Progess进度条

(5)Toast临时弹窗

(6)Msg page结果页

(7)Article文章段落

(8)Actionsheet可交互的动作集合

(9)Icon图标

3.使用方法

首先要熟悉微信UI类名的命名规律,每个类名上对应了各自的样式,有的父类结合子类代表某个样式。如下,以Cell列表视图作介绍。

一行列表weui_cell分成三个部分组成,类似于将一个表格分成三列,第一列weui_cell_hd、第二列 weui_cell_bd、第三列weui_cell_ft,可以将其理解成head,body,footer。另外,若是要采用自适应布局,需在需自适应的部分加上 class weui_cell_primary,如下图的“新闻”部分。

weui_cell_hd weui_cell_bd weui_cell_ft

3.1 简单的列表

        weui_cells_title:列表标题

         weui_cells:列表集(用来区分不同的列表,里面包含多个weui_cell

         weui_cells_access:跳转入口,结合weui_cell_ft使用(即小箭头,如需要入口箭头,则给weui_cells再添加类名weui_cells_access,并且必须有weui_cell_ft

         weui_cell:一个列表(一个列表里包含weui_cell_hdweui_cell_bdweui_cell_ft

图示:9

代码:列表

3.2 /复选列表框

         单选列表框:weui_cells_radio

         复选列表框:weui_cells_checkbox

          二者都采用隐方式结构(结合显方式)<label></label>[weui_check_label]里嵌套input[weui_check]span[weui_icon_checked]标签,span标签为选中时候的样式标签。

(1)单选

图示:17

代码:单选

(2)复选框

图示:18代码:多选

3.3 开关

         开关:weui_cell_switch

         开关按钮:input[weui_switch]

图示:11

代码:12

3.4 表单

          表单:[weui_cell_form]

         文字:weui_label(姓名)

         输入框:weui_input(请输入姓名号)

         验证码:weui_vcode

         错误报警:weui_cell_warn

         错误报警图标:<i class="weui_icon_warn"></i>

图示:13

代码:14

3.5 选择框

         选择:weui_cell_select

         情况一:箭头在前面weui_select_before结合weui_cell_hd使用

         情况二:箭头在后面weui_select_after结合weui_cell_bd使用

图示:16

代码:15

4.详细介绍

其他元素的使用方法在此不多赘述,微信公众平台开发者文档里结合图片和文字,介绍得非常清楚。

详情见链接:https://mp.weixin.qq.com/wiki/2/ae9782fb42e47ad79eb7b361c2149d16.html#Icon

结合demo:

http://weui.github.io/weui/

列表demo:weui

 

【前端技术文档】http相关知识

整    理:曹燕

时    间:2016-03-04

说    明:http的定义、请求响应模型、TCP三次握手、使用wireshark工具抓包

1.定义

http: hypertext transfer protocol(超文本传输协议),是用于从WWW服务器传输超文本到本地浏览器的传送协议。http是互联网上应用最为广泛的网络协议。所有的WWW文件都必须遵守这个标准。它由请求和响应构成,是一个标准的客户端服务器模型。

2.http请求响应模型

http协议永远是客户端发起请求,服务器端回送响应。

http协议是一个无状态的协议,同一个客户端的这次请求和上次请求没有对应关系。图片1

①http客户端发起请求,创建端口;

②http服务器在端口监听客户端的请求;

③http服务器向客户端返回状态和内容。

 

3.访问某个网址的整个流程

(1)建立连接

①chrome搜索自身的DNS缓存(如有没有baidu.com及ip地址,一般缓存1分钟,如果有缓存看是否过期)【方法:chrome://net-internals/#dns】;

②当浏览器没有找到缓存或缓存已经过期,则搜索操作系统自身的DNS缓存;

③如果没找到,则读取本地的host文件;

④如果host文件中没有,则浏览器发起一个DNS的系统调用;

⑤宽带运营商服务器查看自身缓存;

⑥运营商服务器发起一个迭代的DNS解析请求;

⑦运营商服务器把结果返回操作系统内核并缓存起来;

⑧操作系统内核把结果返回给浏览器;

⑨最终浏览器拿到了www.baidu.com的ip地址

⑩浏览器获得对应的ip地址之后,发起三次握手。(详见下文)

(2)浏览器发送请求

TCP/IP连接建立起来之后,浏览器就可以向服务器发送请求了。例如用http中的get方法请求一个根域里的一个域名,采用了http1.0的某个协议;【应用于资源的方法、资源的标识符和协议的版本号】

(3)服务器返回响应

服务器接受这个请求,根据路径参数,经过后端的一些处理,把处理之后的结果数据返回给浏览器(例如百度的html页面)【信息的协议版本号、状态码,MIME信息包括服务器信息、实体信息和可能的内容】

(4)浏览器渲染

浏览器拿到了百度的完整html页面代码,在解析和渲染这个页面的时候,里面的css/js/静态图片等静态资源,同样是一个个http请求,需经过前面的7步。

浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户,然后与服务器断开连接。

 

3.TCP连接中的三次握手

3.1概念

确认比特ACK——只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效;

同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文;

3.2三次握手

①浏览器:客户端发送syn包到服务器,并进入SYN_SENT状态,等待服务器确认【你能听到我说话吗,我们聊聊?】

②服务器:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态【我能听到你说话,我们可以聊聊】

③浏览器:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手【好的,那我们开始聊吧】

3.3利用工具Wireshark抓http、tcp包结果:图片2

4.http请求头

  • Accept:浏览器可接受的MIME类型;
  • Accept-Charset:浏览器可接受的字符集;
  • Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip;
  • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到;
  • Authorization:授权信息;
  • Connection:表示是否需要持久连接。如果这里的值为“Keep-Alive”,或者请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间;
  • Content-Length:表示请求消息正文的长度;
  • Cookie:这是最重要的请求头信息之一;
  • Host:初始URL中的主机和端口;
  • If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答;
  • Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝;
  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面;
  • User-Agent:浏览器类型。

5.http响应头

  • Allow:服务器支持哪些请求方法(如GET、POST等);
  • Content-Encoding:文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型;
  • Content-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据;
  • Content-Type: 表示后面的文档属于什么MIME类型,如text/plain,text/html;
  • Date:当前的GMT时间;
  • Expires:指明应该在什么时候认为文档已经过期,从而不再缓存它;
  • Last-Modified:文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态;
  • Location:表示客户应当到哪里去提取文档;
  • Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。

 

相关文档:http 1.1 和 http1.0 主要区别

【前端技术文档】gulp spriter 插件使用

整    理:肖雅君

时    间:2016-02-05

说    明:gulp-css-spriter 将css代码中的切片图片合并成雪碧图

一、下载安装gulp

1.1 下载安装node.js

1.2 命令行测试是否安装成功

1.3 定位到项目

1.4 安装gulp

二、开始使用gulp

2.1 新建gulpfile.js文件

三、gulp-css-spriter

3.1 gulp-css-spriter使用步骤

3.2  使用技巧

一、下载安装gulp

1.1 下载安装node.js

下载链接:https://nodejs.org/en/   下载后直接安装即可。

1.2 命令行测试是否安装成功

Cmd

输入命令:Node –v  看是否返回node版本号,若是返回则安装成功。

输入命令:npm –v  同上是否返回npm的版本号

如下图:则是安装成功。

1

Ps: NPM是基于命令行的node包管理工具,它可以将node的程序模块安装到项目中,在它的官网https://npmjs.org/ 中可以查看和搜索所有可用的程序模块。

1.3 定位到项目

直接输入d:  按回车键,进入d盘,再进入到安装文件夹,如下图:

2

1.4 安装gulp

遇到的问题:

参考资料中有sudo npm install –g glup安装命令,但是是出错的。

3

Sudo是以管理员身份执行命令,是切换到最高用户权限,su是切换用户,这是linux里才有的,windows是没有的。

将sudo去掉,用npm install -g gulp安装也是不行的。

4

使用npm install --global gulp是可以安装的,但是有一个warn警告。

5

查看版本号也是能查看到的:

6

二、开始使用gulp

2.1 新建gulpfile.js文件

建立gulpfile.js文件,作为它的主文件,放入到自己的项目目录中。

然后在gulpfile.js中定义自己的任务。

 

三、gulp-css-spriter

功能:将css代码中的切片图片合并成雪碧图

3.1 gulp-css-spriter使用步骤

(1)安装gulp-css-spriter

输入命令npm install gulp-css-spriter

7

安装成功后自己建的文件里会产生node_modules文件夹,里面会有一个刚安装的gulp-css-spriter文件夹。

89

(2)配置gulpfile.js文件

var gulp = require('gulp'),

spriter = require('gulp-css-spriter');

 

gulp.task('css', function(){

var timestamp = +new Date();

//需要自动合并雪碧图的样式文件

return gulp.src('styles/style.css')//雪碧图的原路径文件

.pipe(spriter({

// 生成的spriter的位置

'spriteSheet': 'combine/images/sprite'+timestamp+'.png',

// 生成样式文件图片引用地址的路径

// 如下将生产:background:url(images/sprite20160205.png)

'pathToSpriteSheetFromCSS': 'images/sprite'+timestamp+'.png'

}))

//产出路径

.pipe(gulp.dest('combine'));

});    //产出路径

2

(3)执行编译输入命令:gulp css

55

(4)编译前后文件目录截图对比

a.编译之前:

合并前文件目录:

11

合并前style.css样式:

22

合并前图片文件夹:

44

b.编译之后:

合并后文件目录:

66

combine文件夹里的文件:

77

combine里的style.css:

88

combine里的图片文件夹:

99

(5)可能出现的问题:

在编辑后可能会出现如下问题:

11

Cannot find module ‘gulp-minify-css’;

需要再次安装gulp-minify-css。执行命令:npm install gulp-minify-css

12

安装完毕后再次编译:(点击可查看动图编译过程)

15

 3.2  使用技巧

gulp-css-spriter默认会对样式文件里,所有的background/background-image的图片合并,但实际项目中,我们不是所有的图片都需要合并。

background-image: url(../images/data3.png?__spriter);//有?__spriter后缀的合并

background-image: url(../images/part-bg.png); //不合并

修改下面文件可以按需合并:

node_modules\gulp-css-spriter\lib\map-over-styles-and-transform-background-image-declarations.js

13

48行开始的if-else if代码块中,替换为下面代码

位置:

14

// background-image always has a url 且判断url是否有?__spriter后缀

if(transformedDeclaration.property === 'background-image' && /\?__spriter/i.test(transformedDeclaration.value)) {
transformedDeclaration.value = transformedDeclaration.value.replace('?__spriter','');
return cb(transformedDeclaration, declarationIndex, declarations);}
// Background is a shorthand property so make sure `url()` is in there 且判断url是否有?__spriter后缀
else if(transformedDeclaration.property === 'background' && /\?__spriter/i.test(transformedDeclaration.value)) {
transformedDeclaration.value = transformedDeclaration.value.replace('?__spriter','');
var hasImageValue = spriterUtil.backgroundURLRegex.test(transformedDeclaration.value);
if(hasImageValue) {
return cb(transformedDeclaration, declarationIndex, declarations);}
}

 

再次执行即可。

 

参考链接:

https://github.com/laoshu133/gulp-css-spritesmith

https://github.com/aslansky/css-sprite

 

【前端技术文档】PS快速切图方法

整    理:贾会迎、晋哲

时    间:2016-02-05

说    明:PS处理同类型不同尺寸图标的快捷方法

问题:当同一版块中的每个图标的宽高各异时,在切图时需要为这些图标设置一个统一的宽高,方便样式统一编写。如何快速准确的确定切图尺寸,同时分成两套不同状态样式?

例如以下按钮的图标:
p-1

操作步骤
一、同时选择几个图标的图层
p-2

二、复制图层—新建—裁切(透明像素部分)。得到如下图
p-3

三、统一颜色样式(将绿色图标改为灰色)
1、提取颜色值,可保存至背景色
p-4
2、在图层空白处双击,调出“图层样式”面板,设置“颜色叠加”
p-5
3、图标颜色改变为灰色(效果)
p-6

四、将图标水平垂直居中,多个图标重叠显示,来确定图标的准确尺寸。
p-7

五、确定图标大小,逐一显示并保存
1、裁切透明像素,获得图标的准确大小
p-8
2、查看此时“图像--画布”大小,根据图标实际需要设置最大宽高值,最好设置为偶数,以方便样式设置。如下图,高度可以设42px、46px、50px等等
p-9

p-10
3、按设计图顺序逐一显示图层并保存

六、设置第二套状态样式(如图绿色)。
1、提取交互图标的颜色,可保存在前景色中
p-11
2、在图层空白处双击,调出“图层样式”面板
p-12

p-13
3、选择打开“颜色叠加”面板,设置叠加的颜色
p-14
4、在图层区域右击,选择“拷贝图层样式”
p-15
5、选中其他图层,右击选择“粘贴图层样式”,后逐一显示并保存图片。
p-16

p-17

p-18

七、保存的图标文件效果,注意按照设计图顺序和统一的规则命名
p-19

专题页面上线及清缓存步骤

整 理:晋哲
时 间:2015-12-23
说 明:PC端和WAP端专题页面上线步骤及清除缓存操作

---------专题页面上线步骤---------

一、PC端专题上线步骤:

步骤一:进入PC端根目录
1、进入相应服务器:202.102.90.111
2、跳转到相应目录:cd /opt/ci123/www/html/view/

步骤二:创建新的专题目录:mkdir 目录名

步骤三:新的专题目录添加到版本库
1、svn add 目录名
2、svn ci -m '备注' 目录名

步骤四:获取新专题的svn地址
1、进入新专题目录:cd 目录名
2、获取svn地址:svn info
3、复制URL路径

步骤五:在本地checkout新的专题目录
1、回到本地磁盘,在统一存放专题文件目录的文件夹内,如:D:\appserv\www\pc
2、右击选择【SVN Checkout】,在本地生成新创建的svn文件夹

步骤六:本地专题提交到版本库
1、将专题文件代码拷贝到生成的svn文件夹
2、右击选择【SVN Commit】提交

步骤七:从版本库把新专题Up到服务器新建目录下
二、WAP端专题上线步骤:与PC专题上线步骤基本一致。
不同之处:
第一步:WAP端的相应目录:cd /opt/ci123/www/html/m/special/
第五步:因为PC和WAP的专题文件命名一样,所以在右击选择【SVN Checkout】的时候WAP页面应在不同的文件目录下,如:D:\appserv\www\m

---------专题页面更新文件及清缓存步骤---------

> 更新文件

情况一:在本地更新上传文件

1、在本地专题文件目录下右击选择【SVN Update】,从svn控制中心更新最新的程序到本地

2、修改完文件保存之后,该文件的状态不再是绿色的勾号,右击选择【SVN Commit】提交到svn版本库,状态也随之改变

3、回到linux界面,追溯至该专题文件目录下,将文件更新上传到svn版本库。执行:svn up 修改的文件名

情况二:在linux界面中直接修改文件

1、vim编辑修改文件后将文件更新,上传到svn版本库;

2、将改动过的内容提交到svn版本库,需填写本次修改的备注
执行:svn ci -m '填写修改备注' 修改的文件名
注:只有执行此提交操作后,在本地执行【SVN Update】才能更新到最新程序

如果更新的文件是CSS样式文件和图片,即会产生缓存。必须再执行清缓存操作

> 清缓存步骤

一、PC端专题清缓存步骤:

步骤一:dig项目域名得到前端代理的IP

步骤二:ssh 跳转到代理服务器

步骤三:打开nginx配置(squid等),获取静态文件缓存目录,查看IP端口号
1、打开nginx配置:vim /opt/ci123/nginx/conf/vhosts/www.ci123.com
2、找到【location ~ ^.*\.(css|js|swf|gif|png|jpg|jpeg|ico)$】
3、获得缓存目录proxy_temp_path的值【/tmp/www.ci123.com_cache/】
4、看最末尾的【proxy_pass】的IP端口是否为88。若是,则找到其上一级IP;若不是,则退出此配置文件。

步骤四:找到相应缓存目录(缓存目录一般为固定地址,不需要每次都去配置文件中查找)
1、进入固定缓存目录:cd /tmp/www.ci123.com_cache/
2、找到需要清除缓存的专题目录:cd special/专题文件名

步骤五:清除样式缓存(清除图片缓存等同操作)
1、打开相应目录:cd styles/
2、清除文件缓存:rm -f style.css

步骤六:回到第二步,循环操作,每个解析获得的服务器IP中都需要登陆进去清除缓存。
除了解析出来的服务器IP,一般还需要注意以下四个IP地址中是否存在缓存:
202.102.90.108
202.102.90.109
202.102.90.117
202.102.90.118

二、WAP端专题清缓存步骤:与PC专题清缓存步骤基本一致
不同之处:
第一步:WAP端域名解析,执行:dig m.ci123.com
第三步:WAP端相应nginx配置文件,执行:vim /opt/ci123/nginx/conf/vhosts/m.ci123.com
第四步:WAP端固定缓存目录,执行:cd /tmp/m_cache/

涉及知识点:
1、svn的常规使用
2、dig查找项目配置信息

其他:
1、svn的常规使用必须熟练,且注意几个比较容易犯错的地方。
2、常用的专题配置信息,一般很少更新,最好在本地做一些记录,不需要每次都去dig查找

sublime常用的插件介绍

整  理:肖雅君
时  间:2015-12-18
说  明:sublime常用的插件介绍

一、安装插件的基本条件

1. 前提

2. 两种安装方法

二、插件介绍

1. 插件emmet

2. Emmet LiveStyle

3. Bracket Highlighter插件

4. Trailing Spaces高亮空白区域

5. JsFormat:js格式化的插件

附:Barcakets插件安装:

插件位置:\\192.168.0.18\运维网络硬盘\y袁亮\p培训\55分享2015-12-16(前端)\sublime提高开发效率的几个插件

参考链接: http://www.cnblogs.com/hykun/p/sublimeText3.html

 

Sublime高效率前端编辑插件

一、安装插件的基本条件

1.前提:

(1)需要sublime text3

(2)安装任何插件都得先安装package control插件管理。

2.两种安装方法:

1)自动安装:先按键ctrl+` ,再将安装代码复制进去;

1

安装代码:import urllib.request,os,hashlib; h = 'eb2297e1a458f27d836c04bb0cbaf282' + 'd0e7a3098092775ccb37ca9d6b2e4b7d'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

(2)手动安装:

直接下载Package Control插件,放到sublime安装目录下的Installed Packages目录下,如下图:

23

二、插件介绍

1. 插件emmet

缩写+自动生成-提高开发效率,需了解简单的语法规律

Emmet语法:http://yanxyz.github.io/emmet-docs/abbreviations/syntax/

2. Emmet LiveStyle

实时刷新双向修改

(1)第一步:安装插件

法一:

自动安装:ctrl+shift+p打开安装包管理器,输入PCI后,输入LiveStyle:如下图

5

法二:

手动安装:同上将插件放到Installed Packages目录下。

(2)第二步:在浏览器上安装Emmet LiveStyle插件

6

(3)第三步:使用步骤

用sublime打开样式文件;浏览器打开html文件后F12,即可看到安装后的插件:勾选Enable LiveStyle for current page,再将样式文件的目录复制到liveStyle里即可。然后就能实行双向修改了。如下图:

7

3.  Bracket Highlighter插件

用于匹配括号,引号和html标签。

对于很长的代码很有用。安装好之后,不需要设置插件会自动生效.【安装过程同上】

图示:

9

如图:如果代码的标签是成对的,则会显示两个小图标;如果标签并不是成对的,则会显示”小问号“。

10

4. trailing Spaces高亮空白区域

此插件自动将无效的有空白区域的代码显示出颜色来。

一键删除所有空格设置:

需要配置快捷键:在preferences/key binding-user,加上如下代码:

{ "keys": ["ctrl+shift+t"], "command": "delete_trailing_spaces" }

操作如下图:

1112

5. JsFormat

js格式化的插件,安装方式同上,效果图如下:19

附:Barcakets开发软件的插件安装方法

(1)emmet 直接点击右边的小商品标志

13

输入插件名,自动安装完毕:

14

(2)显示小图标插件:Brackets Icons

效果图如下:

16

参考链接: http://www.cnblogs.com/hykun/p/sublimeText3.html

http://www.xuanfengge.com/practical-collection-of-sublime-plug-in.html

 

注:若是直接拷贝插件安装,需注意几个插件安放的位置不一样:

插件位置:\\192.168.0.18\运维网络硬盘\y袁亮\p培训\55分享2015-12-16(前端)\sublime提高开发效率的几个插件

(1)两个插件文件夹放在:Packages文件夹下,通过Preferences>Browse Packages打开:

17(2)非文件夹插件放在Packages上级的Install Packages目录下:

18

 

【前端技术文档】chrome调试功能

整  理:曹燕
时  间:2015-12-18
说  明:chrome调试功能的介绍

1.Elements面板——DOMchrome调试功能30

左侧展示了dom树,在某个dom节点上点击右键会出现操作菜单,常用功能:增加属性、编辑属性、以html形式编辑代码、复制css路径、复制Xpath路径、剪切/复制/粘贴/删除代码、设置断点。

左侧底部显示当前节点的所有祖先节点。

右侧面板主要包括5个功能块。①Styles:按权重从大到小顺序显示所选元素的css样式,可以进行修改,页面会实时响应变化;下方是盒模型图;②Computed:所选元素的最终样式,只可读不可修改;③Event Listeners:显示绑定到当前元素的事件监听函数;④Dom Breakpoints:显示dom中设置的断点,便于调试;⑤Properties:显示元素作为dom对象的各个属性。

2.Network面板——请求加载chrome调试功能359

上图分为7列,从左到右分别是Name、Status、Type、Initiator、Size、Time和Timeline。①Name表示加载的文件名;②Status表示状态码(200为请求成功,304表示从缓存读取);③Type表示文件的MIME Type的类型;④Initiator表示发出这个文件请求的发出者;⑤Size表示文件大小;⑥Time表示每个请求的总时长;⑦Timeline显示了请求和加载情况(Timeline中鼠标移到每个时间条上的时候,会显示整个请求的详细信息)。通过它可以看到哪些请求是同时发出的,哪些请求被阻塞了。Timeline中有一条蓝线和一条红线,蓝线表示DOM Content Loaded事件触发的时间,红线表示 Window onload事件触发的时间。

点击某个请求会显示该请求的具体信息:chrome调试功能725

顶部的选项卡将请求的文件进行了分类,便于查看,如:XHR、JS、CSS、Img、Media、Font、Doc、Websockets和Other。

底部显示了网页请求的整体加载信息,如:请求个数、传输大小、dom结构加载时长、页面加载完成总时长。

3.Sources面板——样式脚本chrome调试功能867

显示所有加载的html、css和js资源,可以实时编辑css或js文件。右侧显示监听、事件绑定以及断点信息。常用于设置断点来调试js。

设置断点调试js可参考:http://segmentfault.com/a/1190000004123527

4.Timeline面板——页面加载chrome调试功能1070

Timeline跟Network有类似的地方,他们都是按照页面的加载时间来统计数据的,不过Timeline统计的数据侧重点不一样。Timeline主要统计了三个数据:Loading,Scripting,Rendering。

点击时间线上的任意位置,可以查看在这个点的详细信息。

5.Profiles面板——CPU信息chrome调试功能1230

Profile记录的主要是CPU和内存占用的信息。点击start按钮,开始记录CPU使用信息,刷新页面,等页面加载完成之后点击stop按钮,完成录制。chrome调试功能1232

上图的左边两列是时间,第一列是self,第二列是total,self表示函数自己的运行时间,不包含调用其他函数的时间,而total表示这个函数运行的总时间。第三列是运行的函数。通过比较时间的百分比可以找出性能差的函数进行优化。

6.Resources面板——所有资源信息chrome调试功能1445

Resources显示所有加载的资源,除了Sources面板中的html/css/js文件外,还包括图片文件;并且还可以查看本地存储、会话存储、cookies信息、缓存等。

7.Audits面板——性能检测优化chrome调试功能1552chrome调试功能1554

Audits面板的作用于pagespeed、Yslow类似,用于检测页面的性能,提出优化建议。点击Run按钮,即可得到页面性能的检测结果和优化建议。

8.Console面板——控制台输出chrome调试功能1649

Cosole可以用于输出信息,常用于调试。支持的一些方法函数如下:

  • log(object[, object, ...]),使用频率最高的一条语句:向控制台输出一条消息。支持 C 语言 printf 式的格式化输出。
  • info(object[, object, ...]) ,向控制台输出一条信息,该信息包含一个表示“信息”的图标,和指向该行代码位置的超链接。
  • error(object[, object, ...])在控制台中输出一条错误信息。
  • warn(object[, object, ...])在控制台中输出一条警告信息。
  • assert([, object, ...]) ,断言,测试一条表达式是否为真,不为真时将抛出异常(断言失败)。
  • dir(object) 输出一个对象的全部属性(输出结果类似于 DOM 面板中的样式)。
  • dirxml(node) 输出一个 HTML 或者 XML 元素的结构树,点击结构树上面的节点进入到 HTML 面板。
  • trace() 输出 Javascript 执行时的堆栈追踪。
  • group(object[, object, ...]) 输出消息的同时打开一个嵌套块,用以缩进输出的内容。调用 console.groupEnd() 用以结束这个块的输出。
  • count([title]) 输出该行代码被执行的次数,参数 title 将在输出时作为输出结果的前缀使用。
  • clear() 清空控制台。

 

 

 

移动端前端注意事项

整  理:晋哲

时  间:2015-12-09

说  明:移动端页面需要注意的细节问题


一、移动端固定<meta>标签
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">

解释:
第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;
第二个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;
第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码

二、细节样式处理,去除移动设备默认交互样式

1、解决 iPhone 横屏时默认会放大文字的问题,设为100%关闭字体大小自动调整功能
html{
 -webkit-text-size-adjust: 100%;
 -ms-text-size-adjust: 100%;
 text-size-adjust: 100%;
}

2、使用无衬线字体
body{font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;}

3、禁止选中文本(有无文本选中需求,此为可选项)
html, body{
 -webkit-user-select: none;
 user-select: none;
}

4、快速滚动和回弹的效果
body{-webkit-overflow-scrolling: touch;}

5、禁止长按链接与图片弹出菜单
a, img{-webkit-touch-callout: none;}

6、去除移动端点击事件出现的背景阴影,也可更换颜色
a, input{-webkit-tap-highlight-color:transparent;}
注:还有一种妥协的方法是把页面非真实跳转链接的<a>标签换成其它标签,可以解决这个问题。

7、移动端清除输入框内阴影
在iOS上,输入框默认有内部阴影,但无法使用 box-shadow 来清除,如果不需要阴影,可以这样关闭:
input, textarea{
 border: 0; /* 方法1 */
 -webkit-appearance: none; /* 方法2 */
}

8、输入框点击默认会有蓝色外边框线
input{outline: none;}

三、HTML 代码相关

1、自适应布局模式
在编写CSS时,不建议把容器的宽度、高度定死。为达到适配各种手持设备,建议使用自适应布局模式,保证页面在各类浏览设备上都能够正常的显示,无需再次考虑设备的分辨率。

2、块级化<a>标签,或按需求尽可能扩大<a>标签囊括的范围
在触控手机上,为提升用户体验,尽可能的保证用户的可点击区域较大。
p1
3、动画效果中,使用 translate 比使用定位性能高

四、JS 事件相关

1、jQuery文件过大,移动端优先考虑使用zepto.js。实际情况中使用jQuery插件不兼容zepto时再考虑使用jQuery

2、click 事件存在 300ms 的延迟
在手机上绑定 click 事件,会使得操作有 300ms 的延迟,体验并不是很好,通常会使用封装的 tap 事件来代替 click 事件。

五、图片相关

1、使用<img>标签时,需根据实际需求设置[width:100%;]自适应撑满区域,还是设置固定宽高。

2、使用背景图片时,需注意实际用图与移动端呈现尺寸的比例为2:1,所以移动端借助[background-size]属性进行比例缩小,相应的按比例缩小[width]、[height]、[background-position]的值。
p2
3、可以合并的图标图片,尽量整合一张,并进行压缩

4、合并Sprite图时每个图片之间必须留有间距

5、能用CSS样式实现的,代替使用图片

6、较大的背景图片、banner图片等尺寸宽度不需要超过640px,切图时先改变图像大小,再进行压缩。

CSS3 Transform 转换属性

整    理:徐秀、晋哲

时    间:2015-12-04

说    明:CSS3 Transform基本语法以及基础用法的介绍。

一、名词解释

transform字面上就是变形,改变的意思,包括2D transform和3D transform。在CSS3中transform主要包括以下几种:移动translate()、旋转rotate()、扭曲skew()、缩放scale()以及矩阵变形matrix(),对内联元素(inline)和块级元素(block)都适用。

二、浏览器兼容性
注意:transform是CSS3新属性,目前兼容浏览器【盗图】:image001

和其它CSS3新属性一样,transform要加兼容前缀。

三、transform-origin属性

transform-origin在元素发生transform变换时有效,是发生变换的基点,以此点建立【2d/3d】坐标。默认值为:transform-origin:50% 50% [0]; 第三个参数是3d转换下z的值,默认0。当改变transform-origin的值时,transform参照基点发生改变,如: transform-origin:0 0;image002

其中X和Y的值可以是百分值,em,px,其中X也可以是字符参数值left,center,right;Y和X一样除了百分值外还可以设置字符值top,center,bottom。

四、语法讲解

描述
none 定义不进行转换。
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate(x,y) 定义 2D 转换。
translate3d(x,y,z) 定义 3D 转换。
translateX(x) 定义转换,只是用 X 轴的值。
translateY(y) 定义转换,只是用 Y 轴的值。
translateZ(z) 定义 3D 转换,只是用 Z 轴的值。
scale(x,y) 定义 2D 缩放转换。
scale3d(x,y,z) 定义 3D 缩放转换。
scaleX(x) 通过设置 X 轴的值来定义缩放转换。
scaleY(y) 通过设置 Y 轴的值来定义缩放转换。
scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle) 定义 2D 旋转,在参数中规定角度。
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义沿着 X 轴的 3D 旋转。
rotateY(angle) 定义沿着 Y 轴的 3D 旋转。
rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。
skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。
skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。
skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。
perspective(n) 为 3D 转换元素定义透视视图。

未经transform转换的div,以下各种变换均以此为参照:image003

  • transform:translate();

通过指定translation(tx,ty)进行矢量偏移,translation3d(tx,ty,tz);参数tx 是x轴方向的偏移矢量,ty 可选参数是y轴方向的偏移矢量。translation3d()中的各值,表示在对应方向的偏移量。tx,ty,tz的取值可以是具体的像素值,也可以是百分比,百分比的的取值相对于自身的宽高。translate(),表示对对象进行平移,当值为负数时,反方向移动物体。分别指定指定轴上的偏移量可以。通过transform-origin属性改变基点。

其它写法:translateX(x)【适用于2d/3d】,translateY(y) 【适用于2d/3d】;translateZ(z) 【适用于3d】,

代码:image004image005效果:image005

  • transform:rotate();

通过指定的角度参数对指定元素指定一个rotate(angle)进行2d旋转,rotate3d(rx,ry,rz,angle)进行3d旋转;rx,ry,rz可以取【1:正方向;-1:反方向;0不旋转】;在指定方向选择angle度; angle是指旋转角度,如果设置的值为正数表示顺时针旋转,如果设置的值为负数,则表示逆时针旋转。可以通过transform-origin属性改变基点。

其它写法:rotateX(angle) 【适用于3d】;rotateY(angle) 【适用于3d】;rotateZ(angle) 【适用于3d】
代码:image007image008效果:image009

  • transform:scale();

通过指定scale(sx,sy)的sx、sy参数对指定元素进行2d缩放; scale3d(sx,sy,sz)进行3d缩放。2d缩放的第二个参数可选,未提供,则取与第一个参数一样的值;3d的三个参数都必写,表示在对应方向的缩放比例。可以通过transform-origin对元素的基点进行设置。

其它写法:scaleX(x)【适用于2d/3d】,scaleY(y) 【适用于2d/3d】;scaleZ(z) 【适用于3d】。

代码:image011image010 效果:image012

  • transform:skew();

通过指定skew(x-angle, y-angle)的x-angle、 y-angle参数对指定元素在指定方向上发生倾斜; skew()没有3d写法;x-angle是水平方向扭曲角度,y-angle可选,是垂直方向扭曲角度。如未设置y-angle,那么Y轴倾斜角度为0deg。

其它写法:skewX(x)【适用于2d】,skewY(y) 【适用于2d】。
代码:image013image014效果:
111

  • transform: matrix ();

matrix():2d矩阵包含6个值matrix(a,b,c,d,e,f);3d矩阵包含16个之matrix(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)4*4个值,以上的各种变换(2d/3d),都可以矩阵计算得到相应效果,单计算过程很复杂,此处就不赘述了。有兴趣的小伙伴可以自行学习下。