applevhqt_css中vh是什么意思思?

>>其它未分类维修>
价格:面议
品牌:苹果
关键词:专业维修,专业维修
在线联系:
苹果笔记本专业维修
苹果电脑触摸板进水用不了更换macbookAir进水黑屏不充电北京专业维修
1、Apple苹果笔记本电脑不启动,开机无显示维修。
  2、 Apple苹果笔记本电脑密码遗忘,无法进入系统维修。
  3、Apple苹果笔记本电脑不认光驱、硬盘、软驱、串口、并口等维修。
  4、Apple苹果笔记本电脑无法安装操作系统维修。
  5、 Apple苹果笔记本电脑经常死机、掉电或自动重启维修。
  6、 Apple苹果笔记本电脑开机报错,无法进入系统维修。
  7、 Apple苹果笔记本电脑电池无法充电维修。
Apple苹果笔记本液晶屏故障现象特征:   1、Apple苹果开机有显示,液晶屏屏暗。
  2、Apple苹果外接显示器正常,液晶屏白屏、花屏。
  3、Apple苹果液晶屏上有亮线,表面有划痕。 (Apple苹果)笔记本键盘故障现象特征:
  1、Apple苹果键盘按不出键。
  2、Apple苹果键盘连键
  3、Apple苹果键盘自动按键。
  电池故障现象特征:
  1、Apple苹果电池不充电。
  2、Apple苹果电池能充电,放电时间特别短。
Apple苹果系列主板芯片级维修!   
Apple苹果维修各种接口板、电源板!   
Apple苹果液晶屏维修、更换背光管、高压板!   
Apple苹果全系列键盘、适配器、光驱维修、维护!   
Apple苹果笔记本电脑声卡、网卡、Modem维修!   
Apple苹果软件调试、安装、查杀病毒!   
Apple苹果R解BIOS密码、系统密码、开机密码!   
Apple苹果清洁保养整机
联系我时请务必告知是在黄页88网看到的!
苹果笔记本维修
5年———— 认证资质 ————
没有个人认证
没有企业认证
没有手机认证
没有微信认证
没有邮箱认证
最近来访记录
黄页88网友用手机一个月前在百度搜索“mac进水充电器不充电”访问了本页
黄页88网友用手机一个月前在百度搜索“air触控板进水维修费用”访问了本页
黄页88网友用手机一个月前在百度搜索“baidu_mobile_cki_nhRt3NEwsh3fIZPy8rgfyM1bVXz3JAsczNiiN/53n1klQdtj9PaWH3kEqFIZinLb0Z+X2nAaricuZ7hRJoq99Q==”访问了本页
黄页88网友用手机一个月前在百度搜索“苹果Airbook笔记本触摸板进水不能用”访问了本页
黄页88网友用手机一个月前在百度搜索“baidu_mobile_cki_So0suvJGMJze3qFJbTUfGbaRQ4W4/VH/akgevJuqjmWz+2FA6iEdA+F4PCNqIqTNrtOarHji9QLKtuwd5fBEhw==”访问了本页
相关推荐产品
咨询主题价格发货与交货商品参数其它
苹果笔记本维修为你提供的“苹果电脑触摸板进水用不了更换macbookAir进水黑屏不充电北京专业维修”详细介绍,包括专业维修价格、型号、图片、厂家等信息。如有需要,请拨打电话:。不是你想要的产品?,让供应商主动联系你。
“苹果电脑触摸板进水用不了更换macbookAir进水黑屏不充电北京专业维修”信息由发布人自行提供,其真实性、合法性由发布人负责。交易汇款需谨慎,请注意调查核实。apple id注册密码要求是什么
apple id是什么意思?上次买的一个iphone,软件是别人帮我下载好的,我自己想下载,但是提示我要注册apple id,这个id有啥用啊?谢谢
按时间排序
楼主你好,apple id是保证你在苹果这个大环境里面的畅通无阻的通行证,没有id你就没法下载软件,当然,越狱了我就不说啥了!首先要搜索一下itunes的下载地址点击“立刻下载”下载安装后,找到桌面itunes的图标,双击在右边找到“免费应用软件”这一列,随便选择一个,点击我选择“愤怒的金刚”,点击后,单击“免费应用软件”在弹出的对话框中,点击“创建新账户”在跳转的界面中点击“继续”在“我已阅读并同意以上条款与条件”前打钩,然后点击继续接下来就是创建id了,切忌电子邮箱一定要是真实的,并且是你经常用的那一个,因为提交注册申请后会有一封邮件发到你的邮箱,点击里面的链接才算注册成功。有关密码的也要牢记,密码设置必须包含大、小写字母以及数字,否则通不过申请。都填写好之后点击“继续”接下来的界面中,选择“付款方式”后面的“无”接下来就随便你填了,想写什么写什么,邮编是六位的,电话号码是八位或十一位的就行,然后点击继续这时系统会提示你,有一封验证账户的链接发到邮箱中打开你之前注册时填写的邮箱,找到邮件,点击“立即验证”,并用刚刚填写的id和密码登陆就完成了关于iphone4s楼主可能还有这样那样的问题,帮楼主汇总了一下:===============================================================更多你可能关注的问题: 欢迎关注页面右边ZOL问答堂、官方微博更多关于苹果iphone4s的问题请点击:更多关于 苹果iphone4S 的相关问题欢迎登陆论坛参与讨论:希望以上内容能够帮助到你!
它是iphone的第二道密码,对手机起保护作用,此密码要慎用。
下载需要的,
Qwertyuiop
下载怎么会出现apple这个东西呢
没什么要求,只是列如信息那些什么需要id .注册id完了之后就畅行无阻了。
新id 密码注册
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?耐克鞋子的XE、VH、vT都什么意思?还有没有其他缩写内容?可以介绍的详细点吗?_百度知道
耐克鞋子的XE、VH、vT都什么意思?还有没有其他缩写内容?可以介绍的详细点吗?
我有更好的答案
为福建大丰集团的子公司,韩国OEM的鞋子MS比较少见。。 鞋舌标上显示的是VH。最后就是意大利的代工厂了。,T2-D,TY:即青岛三湖制鞋有限公司,该公司成立于2007年年底:即广东顺德的三发鞋业有限公司,厂址不详,QS;HJ或LG:也是我们最常见的NIKE代工厂之一,即耐克(苏州)体育用品有限公司,其厂址位于江苏省苏州市太仓经济开发区常胜路111号,主攻低端跑鞋的生产;YS,主攻高端篮球鞋生产,主攻DUNK鞋子的生产;XC:即清远市广硕鞋业有限公司 ,其厂址从以前的广州石井小坪搬迁到了清远市清新县太和镇玄真路尾八片村,主攻高中低端篮球鞋生产,LBJ6便是该厂生产的;FC,PC3,其中最著名的当属PC8了,AJ系列的许多鞋款均出自该厂,IW,IY等,各类鞋子都生产;泰国:ST,ST5,S7,TY1,其厂址位于江西省南昌市向塘开发区向塘村:即福建三丰鞋业有限公司;FJ:即福建和诚鞋业有限公司,其厂址位于福建省泉州市洛江区双阳街道;SZ:即龙川兴莱鞋业有限公司(前名叫做东莞鹏辉鞋业有限公司),其厂址位于广东省河源市龙川县新城区,主要生NIKE的生活元素鞋和皮靴,图中的Y3是大家最常见的。。高端球鞋代工厂,T2-1,T2-A。。:即裕盛鞋业有限公司,,FTSS和PC8几家代工厂,台湾代工厂主攻高端篮球鞋和Sample的生产。其代工厂代码如下:越南,IM,IR;LN3,IP,IV-N,此外在台湾地区还有FT1,FT2, FT4。接下来就把国内外NIKE当前的代工厂代码进行个不完全汇总:Y3:VP,VF。除了中国地区(包括台湾哦,台湾是我国领土不可分割的一部分。,VS,VT。。。。,其厂址位于山东青岛胶州市张应镇大朱戈村556号。。),NIKE在印尼,韩国,IW,IY等,各类鞋子都生产IM是印尼的工厂哦,其厂址位于广东省番禺市榄核镇九比村,主攻SHOX,DUNK和PE版本的鞋子以及S级AF1的生产印尼,ST-P,SH。。,其厂址位于深圳市龙岗区横岗镇坳背村,主攻户外运动以及凉鞋生产,NIKE的ACG系列户外鞋大都产自该厂;SF,部分打有Y3SS标记的Sales Sample也产自该厂;LN2:即福建协丰鞋业有限公司,其厂址位于莆田涵江西天尾镇洞湖口。。,其厂址位于广东省东莞高埗镇,那说明是越南制造代工厂代码。XD:赐昌实业有限公司,其厂址位于山东青岛莱西市李权庄镇工业园区,产鞋类型同QD相同;QS或QS2,为NIKE的另一个代工厂。以上是NIKE在国内OEM厂的不完全介绍,Air Max和Shox跑鞋以及AF1系列的生产,越南的做工还是挺不错的;印尼,为NIKE在大陆最新建立的代工厂,主要生Blazer系列和Sweet Classic AP系列的硫化鞋,越南,泰国等地区也有代工厂,包括最近很火的ZK4等球鞋都是该厂生产,PA3N等,IM,IR,QD相同;QH,其厂址位于山东青岛即墨市兰村镇府前街4号,产鞋类型同QD,QT,主攻高档足球鞋生产:PA,BA:即江西广宥鞋业有限公司;QD:即青岛昌新鞋业有限公司,其厂址位于山东青岛胶州市经济技术开发区,主攻Air Max及Shox篮球鞋和跑鞋的生产;QT。。。。,产鞋类型同LN2一样,主要是DUNK;LN4:即福建荔丰鞋业开发有限公司,其厂址位于福建省莆田市涵江区梧塘镇沁溪北街888号,同为福建大丰集团的子公司:即裕元鞋业有限公司:IA,IB,产鞋类型同QT,主攻NIKE低端跑步鞋生产,VJ-B主攻NIKE的SB。。生产的Lux系列的AF1那叫做一个精致,除了价格高以外,都挺好。,其厂址江西宜春市上高县锦江镇,同HJ一样,主攻低端跑鞋和Vandal复古鞋的生产;XB:IA,IB,其厂址位于福州市仓山区城门镇城门村排下洋,同为福建大丰集团的子公司,FT8:即青岛泰光制鞋有限公司。。,VL,VJ:即青岛世原鞋业有限公司。。,IP,IV-N,主攻低端运动鞋的生产;韩国。。:即创信鞋业有限公司
采纳率:34%
可能是型号不一样
好像不是这样的!
为您推荐:
其他类似问题
耐克的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。发表了一篇文章
   最近在整理项目时发现有些同事写的页面代码嵌套的太多,而且有些嵌套不对,比如内容。虽然功能实现了,但是对于浏览器渲染引擎的性能还是有些影响。所以就大体上的整理了下HTML标签的嵌套规则,…
发表了一篇文章
S(标准模式)、A(接近标准模式)、Q(混杂模式)
Moz &Safari &Opera 10&IE10& HTML5
IE 8, IE 9 & Opera 9.5
IE 7 & Opera 7.10
IE 6 & Opera 7.0
  Opera文档模式:http://www.opera.com/docs/specs/doctype/
  Firefox文档模式:https://developer.mozilla.org/en-US/docs/Mozilla%27s_DOCTYPE_sniffing
  IE8:http://blogs.msdn.com/b/ie/archive//how-ie8-determines-document-mode.aspx
  我们在制作页面时必须要测的就是IE浏览器,毕竟IE浏览器市场占有率还是很高。随着HTML5的流行,可能项目要求兼容IE最低版本为IE8或者更高,但是还是有很多项目兼容IE低版本。所以我们…
发表了一篇文章
注意:文件夹中包含所有样式,只需引自己需要的样式,此处引用的是tip-yellow.css。poshytip是基于jQuery的插件,所以在引用插件之前先引用jQuery,版本需要在1.4+。poshytip包含两个js文件jquery.poshytip.js和jquery.poshytip.min.js,前者是未压缩版,如果在开发中出现错误可以引用这个调试,开发完之后线上引用后者压缩版的。
1 &a id="demo" title="Hey, there! This is a tooltip." href="#"&
2 &script&
3 $('#demo').poshytip();
4 &/script&
如果没有设置poshytip的content,那么它就会将元素的title值作为提示信息。
设置不同皮肤的提示框
$('#demo').poshytip({
  className: ''
设置className值来定义皮肤,缺省状态是tip-yellow。取值:tip-yellow,tip-violet,tip-darkgray,tip-skyblue,tip-yellowsimple,tip-twitter,tip-green
注意:设置className同时应将对应的css文件引入。
表单提示:
1 $('#demo-form-name').poshytip({
className: 'tip-yellowsimple',
showOn: 'focus',
alignTo: 'target',
alignX: 'right',
alignY: 'center',
offsetX: 5,
showTimeout: 100
配置参数:
类型(时间单位为毫秒)
显示的内容(缺省取值title)
String, DOM element, Function, jQuery
$('#demo').poshytip({
  content: 'Hey, there! This is a tooltip.'
设置提示框的class
$('#demo').poshytip({
  className: 'tip-yellow'
bgImageFrameSize
提示框背景图片的大小
$('#demo').poshytip({
  className: 'tip-violet',
  bgImageFrameSize: 9
showTimeout
延迟显示时间
$('#demo').poshytip({
  className: 'tip-violet',
  bgImageFrameSize: 9,
  showTimeout: 50
hideTimeout
延迟消失时间
$('#demo').poshytip({  className: 'tip-violet',  bgImageFrameSize: 9,  hideTimeout: 50});
timeOnScreen
自动隐藏之前显示多长时间
$('#demo').poshytip({  className: 'tip-violet',  bgImageFrameSize: 9,  timeOnScreen: 1000});
//当元素获取到焦点时,提示框显示1秒之后自动隐藏
触发何种事件显示提示框
String('hover', 'focus', 'none')
$('#demo').poshytip({  showOn: 'focus'});
//当获取焦点时显示提示
liveEvents
设置箭头位置
String('cursor', 'target')
$('#demo').poshytip({  alignTo: 'cursor'});
//设置箭头位置相对于鼠标位置
水平对齐相对于鼠标光标或目标元素
String( 'right', 'center', 'left', 'inner-left', 'inner-right')
$('#demo').poshytip({  alignX: 'center'});
垂直对齐相对于鼠标光标或目标元素
String( 'bottom', 'center', 'top', 'inner-bottom', 'inner-top')
$('#demo').poshytip({  alignY: 'center'});
设置提示框横向偏移
$('#demo').poshytip({  offsetX: 10});
设置提示框纵向偏移
$('#demo').poshytip({  offsetY: 10});
keepInViewport
设置提示始终显示在窗口
$('#demo').poshytip({  keepInViewport: true});
allowTipHover
当鼠标悬在tip上时,不隐藏tip
$('#demo').poshytip({  allowTipHover: true});
followCursor
提示跟随光标移动
$('#demo').poshytip({  followCursor: true});
使用fade动画
$('#demo').poshytip({  fade: true});
使用slide动画
$('#demo').poshytip({
  slide: true
slideOffset
slide动画相抵消
$('#demo').poshytip({  slideOffset: 1000});
showAniDuration
显示动画时长
$('#demo').poshytip({  showAniDuration: 1000});
hideAniDuration
隐藏动画的持续时间
$('#demo').poshytip({  hideAniDuration: 1000});
refreshAniDuration
异步更新提示时,动画的持续时间
$('#demo').poshytip({  refreshAniDuration: 1000});
.poshytip('show')
显示提示框,前提提示框的alignTo参数被设置为'target'
.poshytip('showDelayed', [ timeout ] )
设置显示提示框延迟时间
.poshytip('hide')
隐藏提示框
.poshytip('hideDelayed', [ timeout ] )
设置隐藏提示框延迟时间
.poshytip('update', content, [ dontOverwriteOption ] )
更新提示框内容
.poshytip('disable')
禁用提示框
.poshytip('enable')
启用提示框
.poshytip('destroy')
彻底销毁提示框
  提示无处不在,更多的提示才能帮助用户轻松的使用产品,不管是表单注册提示、错误提示等等。希望你能够喜欢这款提示插件。
  分享一款在项目中使用的tooltips插件--poshytip,这是一款基于jQuery的插件,其特点是简单易用,支持浏览器:IE6+, FF 2+, Opera 9+, Safari …
发表了一篇文章
  继‘带箭头提示框’,本文将分享几款带箭头提示框。
qtipqTip是一种先进的提示插件,基于jQuery框架。以用户友好,而且功能丰富,qTip为您提供不一般的功能,如圆角和语音气…
发表了一篇文章
分享几款Javascript富文本编辑器
jqframework
kindeditor
发表了一篇文章
javascript高级程序设计中这样描述函数--可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。之前介绍过了strict mode,严格模式对函数有一些限制:
不能把函数命名为eval或arguments
不能把参数命名为eval或arguments
不能出现两个命名参数同名的情况
发生以上情况就会导致语法错误,代码无法执行。
函数定义分为三种
1、构造函数
var fun = new Funciton();
2、普通定义
function fun() {}
3、函数式定义
var fun = function() {};
这三种方式都可以定义函数fun。
函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数。原因是参数在内部是用一个数组来表示的。在函数体内可以通过arguments对象来访问参数数组,举个例子
function sayHi() {
alert("Hello " + arguments[0] + "," + arguments[1]);
通过访问arguments对象的length属性来获知有多少个参数。函数的length会返回函数的参数个数。
注意:所有参数传递的都是值,不可能通过引用传递参数。
函数不能重载,只能重写
如果定义了两个名字相同的函数,则该名字只属于最后定义的函数,举个例子:
1 function add(num) {
return num + 100;
7 function add(num) {
return num + 200;
13 var result = add(100) //300
注意:函数在执行完return语句之后停止并立即退出。
函数分为两种一种是有名函数,另一种是匿名函数。例如下面的有名函数
function fun() {
如果调用的话,只需要fun()就可以。
匿名函数,顾名思义就是没有函数名。例如
function() {}
函数调用是通过函数名来调用,匿名函数怎么调用呢?一种就是将匿名函数赋给一个变量,让这个变量充当函数名。另一种就是用()来调用,例如下面三种方法
1、(function() {}());
2、(function() {})();
3、function() {}();
1 (function(x, y) {
alert(x + y);
5 })(2,3);
7 //alert(5)
2和3将会作为参数传递给x和y
下面就来讲讲最上面的例子,这个例子里面涉及到闭包,后面会说
首先定义一个变量f,然后赋值一个匿名函数,这里呢需要注意一点,所以匿名函数里的执行顺序是
1 var f = (function() {
function f() {
return 10;
function f() {
return 20;
return f();
外面的变量f和里面的变量f不在同一个作用域内(闭包),所以互不影响。因为函数不能重载,所以外面变量f=(function f() {return 20;})();,所以最终输出的是20。
本文讲解的是javascript最基础也是最重要的东西--函数,之所以写这篇博文,是因为面试的时候问到了,也算是温故而知新了。
先上个例子,如果你看懂了,说明你已经理解了本文要讲的…
发表了一篇文章
如果浏览器不支持canvas标签,页面上就会显示‘您的浏览器版本太低,不支持canvas!’。每个canvas元素都有一个方法--getContext方法,返回一个用于在画布上绘图的环境。
1 var canvas = document.getElementById('myCanvas');
2 canvas.getContext(contextID);
  参数 contextID 指定了您想要在画布上绘制的类型。当前唯一的合法值是 "2d",它指定了二维绘图,并且导致这个方法返回一个环境对象,该对象导出一个二维绘图 API。
  返回一个表示用来绘制的环境类型的环境。其本意是要为不同的绘制类型(2 维、3 维)提供不同的环境。当前,唯一支持的是 "2d",它返回一个 CanvasRenderingContext2D 对象,该对象实现了一个画布所使用的大多数方法。
在画图之前先讲下坐标,每一个图的原点坐标(0,0)在图的左上角,x轴正方向水平向右,y轴正方向水平向下。
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(20, 20);
// 设置线的起点,坐标为(20,20)
ctx.lineTo(100, 100);
// 设置线的终点,坐标为(100,100)
ctx.lineWidth = 5;
// 设置线宽
ctx.strokeStyle = "#CC0000";
// 设置线的颜色
ctx.stroke();
// 进行线的着色
注意:moveTo和lineTo方法可以多次使用。最后可以用closePath方法,自动绘制一条当前点到起点的直线,形成一个封闭图形,也可以使用一次lineto方法来封闭图形。
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.lineWidth=3;
//边框的宽度
ctx.moveTo(0,350);
//三角型的顶点
ctx.lineTo(100,250);
//三角型的顶点
ctx.lineTo(200,300);
//三角型的顶点
ctx.closePath();
//可选步骤,关闭绘制的路径
ctx.strokeStyle = "#CC0000";
//设置线的颜色
ctx.stroke();
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(10,10);
ctx.lineTo(100,10);
ctx.lineTo(100,100);
ctx.lineTo(10,100);
ctx.lineTo(10,10);
ctx.strokeStyle="#CC0000";
ctx.lineWidth=3;
ctx.stroke();
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#CC0000';
//设置矩形的填充色
ctx.fillRect(50, 50, 200, 100); //fillRect(x, y, width, height),矩形左上角顶点的x坐标、y坐标,以及矩形的宽和高
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.lineWidth
ctx.strokeStyle="#CC0000";
ctx.strokeRect(10,10,200,100); //strokeRect(x, y, width, height),矩形左上角顶点的x坐标、y坐标,以及矩形的宽和高
ctx.stroke();
清楚填充矩形一部分
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#CC0000';
ctx.fillRect(50, 50, 200, 100);
ctx.clearRect(100,50,50,50);//clearRect(x, y, width, height),清除矩形左上角顶点的x坐标、y坐标,以及矩形的宽和高
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(60, 60, 50, 0, Math.PI*2, true); //ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise)x和y参数是圆心坐标,radius是半径,startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示),anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)
ctx.fillStyle = "#CC0000";
ctx.fill();
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(60, 60, 50, 0, Math.PI*2, true);
ctx.lineWidth = 5;
ctx.strokeStyle = "#CC0000";
ctx.stroke();
7、绘制文本
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
= "Bold 20px 雅黑";
// 设置字体
ctx.textAlign = "left";
// 设置对齐方式
ctx.fillStyle = "#CC0000";
// 设置填充颜色
ctx.fillText("你好!", 10, 50);
// fillText(string, x, y)文本内容、起点的x坐标、y坐标
ctx.strokeStyle = '#CC0000';
ctx.strokeText("你好!", 10, 100);
// 绘制空心字
注意:fillText和strokeText方法不支持文本断行
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
var grd=ctx.createLinearGradient(0,0,170,0);// createLinearGradient(x1, y1, x2, y2)x1和y1是起点坐标,x2和y2是终点坐标。通过不同的坐标值,可以生成从上至下、从左到右的渐变等等。
grd.addColorStop(0,"black");// addColorStop(stop,color)stop介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置。color在结束位置显示的 CSS 颜色值
grd.addColorStop("0.3","magenta");
grd.addColorStop("0.5","blue");
grd.addColorStop("0.6","green");
grd.addColorStop("0.8","yellow");
grd.addColorStop(1,"red");
ctx.fillStyle=
ctx.fillRect(20,20,150,100);
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
var grd=ctx.createRadialGradient(75,50,5,90,60,100);//createRadialGradient(x0,y0,r0,x1,y1,r1);x0渐变的开始圆的x坐标,y0
渐变的开始圆的y坐标,r0开始圆的半径,x1渐变的结束圆的x坐标,y1渐变的结束圆的y坐标,r1结束圆的半径
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// Fill with gradient
ctx.fillStyle=
ctx.fillRect(10,10,150,100);
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
var gradient=ctx.createLinearGradient(0,0,170,0);
gradient.addColorStop("0","magenta");
gradient.addColorStop("0.5","blue");
gradient.addColorStop("1.0","red");
// 用渐变进行填充
ctx.strokeStyle=
ctx.lineWidth=5;
ctx.strokeRect(20,20,150,100);
9、设置阴影
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var canvas = document.getElementById('myCanvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.shadowOffsetX = 10;
// 设置水平位移
ctx.shadowOffsetY = 10;
// 设置垂直位移
ctx.shadowBlur = 5;
// 设置模糊度
ctx.shadowColor = "#cc2111";
// 设置阴影颜色
ctx.fillStyle = "#CC0000";
ctx.fillRect(10,10,200,100);
颜色、样式和阴影
设置或返回用于填充绘画的颜色、渐变或模式
strokeStyle
设置或返回用于笔触的颜色、渐变或模式
shadowColor
设置或返回用于阴影的颜色
shadowBlur
设置或返回用于阴影的模糊级别
shadowOffsetX
设置或返回阴影距形状的水平距离
shadowOffsetY
设置或返回阴影距形状的垂直距离
createLinearGradient()
创建线性渐变(用在画布内容上)
createPattern()
在指定的方向上重复指定的元素
createRadialGradient()
创建放射状/环形的渐变(用在画布内容上)
addColorStop()
规定渐变对象中的颜色和停止位置
设置或返回线条的结束端点样式
设置或返回两条线相交时,所创建的拐角类型
设置或返回当前的线条宽度
miterLimit
设置或返回最大斜接长度
fillRect()
绘制“被填充”的矩形
strokeRect()
绘制矩形(无填充)
clearRect()
在给定的矩形内清除指定的像素
填充当前绘图(路径)
绘制已定义的路径
beginPath()
起始一条路径,或重置当前路径
把路径移动到画布中的指定点,不创建线条
closePath()
创建从当前点回到起始点的路径
添加一个新点,然后在画布中创建从该点到最后指定点的线条
从原始画布剪切任意形状和尺寸的区域
quadraticCurveTo()
创建二次贝塞尔曲线
bezierCurveTo()
创建三次方贝塞尔曲线
创建弧/曲线(用于创建圆形或部分圆)
创建两切线之间的弧/曲线
isPointInPath()
如果指定的点位于当前路径中,则返回 true,否则返回 false
缩放当前绘图至更大或更小
旋转当前绘图
translate()
重新映射画布上的 (0,0) 位置
transform()
替换绘图的当前转换矩阵
setTransform()
将当前转换重置为单位矩阵。然后运行 transform()
设置或返回文本内容的当前字体属性
设置或返回文本内容的当前对齐方式
textBaseline
设置或返回在绘制文本时使用的当前文本基线
fillText()
在画布上绘制“被填充的”文本
strokeText()
在画布上绘制文本(无填充)
measureText()
返回包含指定文本宽度的对象
drawImage()
向画布上绘制图像、画布或视频
返回 ImageData 对象的宽度
返回 ImageData 对象的高度
返回一个对象,其包含指定的 ImageData 对象的图像数据
createImageData()
创建新的、空白的 ImageData 对象
getImageData()
返回 ImageData 对象,该对象为画布上指定的矩形复制像素数据
putImageData()
把图像数据(从指定的 ImageData 对象)放回画布上
globalAlpha
设置或返回绘图的当前 alpha 或透明值
globalCompositeOperation
设置或返回新图像如何绘制到已有的图像上
保存当前环境的状态
返回之前保存过的路径状态和属性
createEvent()
getContext()
toDataURL()
  HTML5规范已经完成了,互联网上已经有数不清的站点使用了HTML5。从现在开始研究HTML5,本文是自己在学习canvas过程中的记录,以备后需。
  这个 HTML 元素…
发表了一篇文章
dialog.html
1 &!DOCTYPE html&
&meta http-equiv="Content-Type" content="text/charset=utf-8"&
&link rel="stylesheet" type="text/css" href="kendo/styles/kendo.common.min.css" /&
&link rel="stylesheet" type="text/css" href="style/dialog.css" /&
&script type="text/javascript" charset="utf-8" src="http://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"&&/script&
&script type="text/javascript" charset="utf-8" src="kendo/js/kendo.chopper.min.js"&&/script&
&script type="text/javascript" charset="utf-8" src="kendo/js/kendo.chopper.min.js"&&/script&
&script type="text/javascript" charset="utf-8" src="kendo/js/cultures/kendo.messages.zh-CN.js"&&/script&
&script type="text/javascript" charset="utf-8" src="kendo/js/cultures/kendo.culture.zh-CN.min.js"&&/script&
&div id="dialog"&&/div&
&script src="js/dialog.js"&&/script&
var dialog = $('#dialog').kendoGDialog({title:"弹窗"}).data('kendoGDialog');
19 &/body&
20 &/html&
string,function
宿主元素的内容
$("#dialog").kendoGDialog({
content: {
url: "/userDetails",
dataType: "json",
template: "User name: #= data.username #"
是否已iframe方式显示弹窗
点击确定执行的事件
var dialog = $('#dialog').kendoGDialog({
onOk: function() {
dialog.close();
}).data('kendoGDialog');
确定按钮文本
cancelText
取消按钮文本
defaultButtons
默认显示按钮
string('OK' || 'OK_CANCEL' || 'CANCEL' || 'NULL')
'OK_CANCEL'
extraButtons
自定义的按钮
var dialog = $('#dialog').kendoGDialog({
extraButtons: [{
text:'按钮', className: '', click:function(){
}).data('kendoGDialog');
将弹窗插入到
弹窗最小宽度
弹窗最大宽度
弹窗最小高度
弹窗最大高度
弹窗是否可见
$("#dialog").kendoGDialog({
position: {
重置弹窗大小
弹窗工具组件
"Close", "Refresh", "Minimize", and "Maximize"
自动关闭时间
是否可以拖动
当改变弹窗大小时触发事件
当内容加载完成或者点击刷新按钮内容加载完成时触发事件
打开弹窗触发事件
当异步加载内容出错时触发事件
开始移动弹窗时触发事件
结束移动弹窗时触发事件
deactivate
当弹窗关闭结束之后执行事件
关闭弹窗时执行事件
当弹窗打开之后执行的事件
例子dialog = $('#dialog').data('kendoGDialog')
dialog.open();
设置弹窗居中
dialog.center();
dialog.close();
dialog.destroy();
刷新弹窗内容
dialog.refresh();
setOptions
设置弹窗参数
dialog.setOptions({
title: '标题'
设置弹窗内容
dialog.content('弹窗内容');
dialog.maximize();
dialog.minimize();
dialog.title();
工具栏的图片是我自己做的,制作了一个关闭按钮,刷新、最大化、最小化没有做。如果项目中引用了kendo-ui就不需要这个了。同一个弹窗不能多次创建,可以先销毁在创建。
  kendo-ui中只是提供了windwo插件,并没有提供页内弹窗插件。现在分享项目中自己定制的基于window组件的弹窗插件,如果你的项目也是用的kendo-ui,只需要将组件代码引到项…
发表了一篇文章
注意:drawImage方法只能在图像完全载入后才能调用
getImageData与putImageData
  getImageData() 方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。putImageData() 方法将图像数据(从指定的 ImageData 对象)放回画布上。
getImageData() 方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。
对于 ImageData 对象中的每个像素,都存在着四方面的信息,即 RGBA 值:
R - 红色 (0-255)
G - 绿色 (0-255)
B - 蓝色 (0-255)
A - alpha 通道 (0-255; 0 是透明的,255 是完全可见的)
color/alpha 以数组形式存在,并存储于 ImageData 对象的 data 属性中。
  context.getImageData(x,y,width,height);
  context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight);
开始复制的左上角位置的 x 坐标。
开始复制的左上角位置的 y 坐标。
将要复制的矩形区域的宽度。
将要复制的矩形区域的高度。
规定要放回画布的 ImageData 对象。
ImageData 对象左上角的 x 坐标,以像素计。
ImageData 对象左上角的 y 坐标,以像素计。
可选。水平值(x),以像素计,在画布上放置图像的位置。
可选。水平值(y),以像素计,在画布上放置图像的位置。
dirtyWidth
可选。在画布上绘制图像所使用的宽度。
dirtyHeight
可选。在画布上绘制图像所使用的高度。
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="red";
ctx.fillRect(10,10,50,50);
var imgData=ctx.getImageData(30,30,50,50);
red=imgData.data[0];
green=imgData.data[1];
blue=imgData.data[2];
alpha=imgData.data[3];
  toDataURL()方法将canvas上的元素保存为图像。context.toDataURL()返回的是一串Base64编码的URL。
  context.toDataURL('canvas.png');
  canvas.png生成的图像
save与restore
  save方法用于保存上下文环境,restore方法用于恢复到上一次保存的上下文环境,都没有参数。Canvas 状态是以堆(stack)的方式保存的,每一次调用 save 方法,当前的状态就会被推入堆中保存起来。会保存strokeStyle, fillStyle, globalAlpha, lineWidth, lineCap, lineJoin, miterLimit, shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor, globalCompositeOperation 的值。你可以调用任意多次 save 方法。每一次调用 restore 方法,上一个保存的状态就从堆中弹出,所有设定都恢复。
  context.save();
  context.restore();
1 &canvas id="myCanvas" width="800" height="600"&
您的浏览器不支持canvas!
window.onload=function(){
var ctx=document.getElementById("myCanvas").getContext("2d");
ctx.fillStyle = 'red';
ctx.fillRect(10,10,150,150);
ctx.save();
ctx.fillStyle="green";
ctx.fillRect(30,30,110,110);
ctx.save();
ctx.fillStyle="yellow";
ctx.fillRect(50,50,70,70);
ctx.restore();//回到上一个状态,即 ctx.fillStyle="green";
ctx.save();
ctx.fillRect(70,70,30,30);
ctx.restore();
  canvas可以读取图片后,使用drawImage方法在画布内进行重绘。本文介绍canvas的图像处理
  drawImage() 方法在画布上绘制图像、画布或…
发表了一篇文章
  canvas可以绘制图像,自然而然的就可以制作动画,因为动画的每一帧都是图像。我们可以利用javascript的setInterval函数来实现动画效果。
下面是一个例子,小圆绕着红点…
发表了一篇文章
效果如下:
HTML5 Audio/Video 方法
addTextTrack()
向音频/视频添加新的文本轨道
canPlayType()
检测浏览器是否能播放指定的音频/视频类型
重新加载音频/视频元素
开始播放音频/视频
暂停当前播放的音频/视频
HTML5 Audio/Video 属性
audioTracks
返回表示可用音轨的 AudioTrackList 对象
设置或返回是否在加载完成后随即播放音频/视频
返回表示音频/视频已缓冲部分的 TimeRanges 对象
controller
返回表示音频/视频当前媒体控制器的 MediaController 对象
设置或返回音频/视频是否显示控件(比如播放/暂停等)
crossOrigin
设置或返回音频/视频的 CORS 设置
currentSrc
返回当前音频/视频的 URL
currentTime
设置或返回音频/视频中的当前播放位置(以秒计)
defaultMuted
设置或返回音频/视频默认是否静音
defaultPlaybackRate
设置或返回音频/视频的默认播放速度
返回当前音频/视频的长度(以秒计)
返回音频/视频的播放是否已结束
返回表示音频/视频错误状态的 MediaError 对象
设置或返回音频/视频是否应在结束时重新播放
mediaGroup
设置或返回音频/视频所属的组合(用于连接多个音频/视频元素)
设置或返回音频/视频是否静音
networkState
返回音频/视频的当前网络状态
设置或返回音频/视频是否暂停
playbackRate
设置或返回音频/视频播放的速度
返回表示音频/视频已播放部分的 TimeRanges 对象
设置或返回音频/视频是否应该在页面加载后进行加载
readyState
返回音频/视频当前的就绪状态
返回表示音频/视频可寻址部分的 TimeRanges 对象
返回用户是否正在音频/视频中进行查找
设置或返回音频/视频元素的当前来源
返回表示当前时间偏移的 Date 对象
textTracks
返回表示可用文本轨道的 TextTrackList 对象
videoTracks
返回表示可用视频轨道的 VideoTrackList 对象
设置或返回音频/视频的音量
HTML5 Audio/Video 事件
当音频/视频的加载已放弃时
当浏览器可以播放音频/视频时
canplaythrough
当浏览器可在不因缓冲而停顿的情况下进行播放时
durationchange
当音频/视频的时长已更改时
当目前的播放列表为空时
当目前的播放列表已结束时
当在音频/视频加载期间发生错误时
loadeddata
当浏览器已加载音频/视频的当前帧时
loadedmetadata
当浏览器已加载音频/视频的元数据时
当浏览器开始查找音频/视频时
当音频/视频已暂停时
当音频/视频已开始或不再暂停时
当音频/视频在已因缓冲而暂停或停止后已就绪时
当浏览器正在下载音频/视频时
ratechange
当音频/视频的播放速度已更改时
当用户已移动/跳跃到音频/视频中的新位置时
当用户开始移动/跳跃到音频/视频中的新位置时
当浏览器尝试获取媒体数据,但数据不可用时
当浏览器刻意不获取媒体数据时
timeupdate
当目前的播放位置已更改时
volumechange
当音量已更改时
当视频由于需要缓冲下一帧而停止
  在HTML5出现之前,web媒体大部分通过Flash来实现。这种方式造成了文件大加载慢,影响网站性能,开发难度高,维护麻烦,不易扩展等。这就导致HTML5自己开始支持媒体功能。HTML5…
发表了一篇文章
Mouse 事件
由鼠标或类似用户动作触发的事件:
元素被拖动时运行的脚本。
在拖动操作末端运行的脚本。
ondragenter
当元素元素已被拖动到有效拖放区域时运行的脚本。
ondragleave
当元素离开有效拖放目标时运行的脚本。
ondragover
当元素在有效拖放目标上正在被拖动时运行的脚本。
ondragstart
在拖动操作开端运行的脚本。
当被拖元素正在被拖放时运行的脚本。
onmousewheel
当鼠标滚轮正在被滚动时运行的脚本。
当元素滚动条被滚动时运行的脚本。
Media 事件
由媒介(比如视频、图像和音频)触发的事件(适用于所有 HTML 元素,但常见于媒介元素中,比如 &audio&、&embed&、&img&、&object& 以及 &video&):
当文件就绪可以开始播放时运行的脚本(缓冲已足够开始时)。
oncanplaythrough
当媒介能够无需因缓冲而停止即可播放至结尾时运行的脚本。
ondurationchange
当媒介长度改变时运行的脚本。
当发生故障并且文件突然不可用时运行的脚本(比如连接意外断开时)。
当媒介已到达结尾时运行的脚本(可发送类似“感谢观看”之类的消息)。
当在文件加载期间发生错误时运行的脚本。
onloadeddata
当媒介数据已加载时运行的脚本。
onloadedmetadata
当元数据(比如分辨率和时长)被加载时运行的脚本。
onloadstart
在文件开始加载且未实际加载任何数据前运行的脚本。
当媒介被用户或程序暂停时运行的脚本。
当媒介已就绪可以开始播放时运行的脚本。
当媒介已开始播放时运行的脚本。
onprogress
当浏览器正在获取媒介数据时运行的脚本。
onratechange
每当回放速率改变时运行的脚本(比如当用户切换到慢动作或快进模式)。
onreadystatechange
每当就绪状态改变时运行的脚本(就绪状态监测媒介数据的状态)。
当 seeking 属性设置为 false(指示定位已结束)时运行的脚本。
当 seeking 属性设置为 true(指示定位是活动的)时运行的脚本。
在浏览器不论何种原因未能取回媒介数据时运行的脚本。
在媒介数据完全加载之前不论何种原因终止取回媒介数据时运行的脚本。
ontimeupdate
当播放位置改变时(比如当用户快进到媒介中一个不同的位置时)运行的脚本。
onvolumechange
每当音量改变时(包括将音量设置为静音)时运行的脚本。
  全局属性和事件能够应用到所有标签元素上,在HTML4中有许多全局属性,比如id,class等。HTML5中又新增了一些特殊功能的全局属性和事件。
  HTML5属性能够赋给标…
发表了一篇文章
1 &!doctype html&
&title&NoteBook&/title&
&meta http-equiv="Content-Type" content="text/charset=utf-8"&
background-color: #E1C97F;
width: 500px;
height: 600px;
margin: 0 0 0 500px;
padding: 10px 10px;
border-bottom: 1px dotted black;
float: right;
margin-left: 700px;
&script src="http://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"&&/script&
25 &/head&
&div id="conten"&
&input type="button" name="button" id="back" value="返回"&
$(function(){
var storage = window.localS
var newjson = JSON.parse(storage.getItem('content'));
for(var i=0;i&newjson.i++){
var htm = "&p class='stor'&"+newjson[i]+"&/p&";
$(htm).appendTo("#conten");
$('#back').click(function() {
location.href = 'edit.html';
43 &/body&
44 &/html&
Description
HTMLStorage
Represents the list of key/value pairs that have been assigned to a single storage area.
Removes all key/value pairs from the Web Storage area.
Retrieves the current value associated with the Web Storage key.
initStorageEvent
Initializes a new Document Object Model (DOM) storage event that thecreateEvent method created.
Retrieves the key at the specified index in the collection.
removeItem
Deletes a key/value pair from the Web Storage collection.
Sets a key/value pair.
Gets the key that is updated.
Retrieves the length of the key/value list.
localStorage
Retrieves the Web Storage area specific to the current document.
Gets the new value of the key.
Gets the previous value of the key.
remainingSpace
Retrieves the remaining memory space, in bytes, for the storage object.
sessionStorage
Retrieves the Web Storage area for the session.
storageArea
Gets the Storage object of the affected document.
Gets the address of the document that the update affects.
  数据存储是每一个站点必不可少的功能,在HTML5之前通过cookie可以实现本地数据存储。但是cookie只能存储4kb的数据,并且cookie是随http请求一起发送到服务端,这必然浪…
发表了一篇文章
然后在当前目录下,通过命令终端运行npm install,这时你会发现多出一个node_modules文件夹,里面就是我们安装的模块。
  Grunt和模块都已经安装完成了,下面需要做的就是创建一个配置文件,来告诉Grunt需要去哪里,然后做什么等等。在上面的目录下新建一个文件Gruntfile.js(注意大小写),内容如下:
module.exports = function(grunt) {
'use strict';
// 配置Grunt各种模块的参数
grunt.initConfig({
oldMinFiles: [],
afterUglify: []
command: "",
options: ""
// 从node_modules目录加载模块文件
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-cmd-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-watch');
// 定义任务
grunt.registerTask('default', ['jsLint', 'concat', 'uglify']);
grunt.registerTask('check', ['jslint']);
只需要在当前目录执行命令
合并文件:
grunt concat
代码检查:
grunt check
后期将介绍grunt的每一个模块。
grunt.initConfig
配置各模块的参数,每项对应一个同名模块。
grunt.loadNpmTasks
加载所需的模块。
grunt.registerTask
定义具体的任务。第一个参数为任务名,第二个参数是一个数组,表示该任务需要依次使用的模块。default是默认任务,即直接输入grunt命令,后面不跟任何参数,这时所调用的模块为default对应的任务。
  大部分项目在部署之前都需要做的就是js、css文件的压缩、合并,以及一些文件的错误检查,甚至是将LESS文件转换成css文件,coffeescript文件转化成js文件等等。但是项目开发…
发表了一篇文章
dependencies与devDependencies:  
  一个node package有两种依赖,一种是dependencies,另一种是devDependencies,其中前者依赖的项是正常运行该包时所需要的依赖项,而后者则是开发的时候需要的依赖项,像一些进行单元测试之类的包。简单来记就是下面的
"dependencies": {}
//生产环境
"devDependencies": {}//开发环境
  在package.json所在目录执行npm install的时候,devDependencies里面的模块也会被安装的。如果我们只想安装dependencies里面的包,可以执行
npm install --production
如果只安装devDependencies,可以执行
npm install --dev
同理,使用npm install node_module –save自动更新dependencies字段值,使用npm install node_module –save-dev自动更新devDependencies字段值。
  每一个模块后面对应的就是他的版本号,如"^4.10.1"。下面是几个版本的表达式
大于等于1.2.7
&=1.2.7 &1.3.0
1.2.7,1.2.8,1.2.9
1.2.3 - 2.3.4
&=1.2.3 &=2.3.4
1.2 - 2.3.4
&=1.2.0 &=2.3.4
1.2.3 - 2.3
&=1.2.3 &2.4.0
&=1.2.3 &3.0.0
1.x(等价于1.X)
&=1.0.0 &2.0.0
&=1.2.0 &1.3.0
""(等价于*)
1(等价于1.x.x)
&=1.0.0 &2.0.0
1.2(等价于1.2.x)
&=1.2.0 &1.3.0
~1.2.3(&=1.2.3 &1.(2+1).0)
&=1.2.3 &1.3.0
~1.2(&=1.2.0 &1.(2+1).0)
&=1.2.0 &1.3.0
~1(&=1.0.0 &(1+1).0.0)
&=1.0.0 &2.0.0
~0.2.3(&=0.2.3 &0.(2+1).0)
&=0.2.3 &0.3.0
~0.2(&=0.2.0 &0.(2+1).0)
&=0.2.0 &0.3.0
~0(&=0.0.0 &(0+1).0.0)
&=0.0.0 &1.0.0
~1.2.3-beta.2
&=1.2.3-beta.2 &1.3.0
&=1.2.3 &2.0.0
&=0.2.3 &0.3.0
&=0.0.3 &0.0.4
^1.2.3-beta.2
&=1.2.3-beta.2 &2.0.0
^0.0.3-beta
&=0.0.3-beta &0.0.4
&=1.2.0 &2.0.0
&=0.0.0 &0.1.0
&=0.0.0 &0.1.0
&=1.0.0 &2.0.0
&=0.0.0 &1.0.0
参考文献:
  http://stackoverflow.com/questions//difference-between-tilde-and-caret-in-package-json
  https://www.npmjs.org/doc/misc/npm-config.html#production
  Node.js最重要的一个文件就是package.json,其中的配置参数决定了功能。例如下面就是一个例子
&name&: &test&,
&version&: &…
发表了一篇文章
  HTML5又增加了许多新的表单输入类型,不在仅仅是文本输入框。它让表单更丰富多彩了,下面是一个表单样表
从图中可以看出,表单样式更加多样,而且支持验证,实现了原本只能通过js才能完…
发表了一篇文章
加载模块:
  从node_module中加载less模块,如下:
grunt.loadNpmTasks('grunt-contrib-less');
// 开发环境grunt.registerTask('lessDev', ['less:development']);// 线上环境grunt.registerTask('lessPro', ['less:production']);
执行任务:
  在命令窗口中执行 grunt lessDev或者grunt lessPro。
完整如下:
Gruntfile.js:
module.exports = function (grunt) {
'use strict';
grunt.initConfig({
// 开发环境
development: {
options: {
paths: ["assets/css"]
// @import 加载文件的路径
"path/to/result.css": "path/to/source.less"
// 将path/to/source.less编译为path/to/result.css
// 线上环境
production: {
options: {
paths: ["assets/css"],
// @import 加载文件的路径
cleancss: true,
// 压缩css文件
modifyVars: {
// 重新定义全局变量
imgPath: '"http://mycdn.com/path/to/images"',
bgColor: 'red'
"path/to/result.css": "path/to/source.less"
grunt.loadNpmTasks('grunt-contrib-less');
// 开发环境
grunt.registerTask('lessDev', ['less:development']);
// 线上环境
grunt.registerTask('lessPro', ['less:production']);
options参数详解:
  类型: String Array Function
  默认值: 根目录.
  意义:定义@import加载文件的路径。默认值是文件的当前路径。 如果指定一个函数的源文件路径将是第一个参数。您可以返回到使用字符串或路径的数组。
rootpath:
  类型:String
  默认值:“”
  意义:所有文件都是基于这个路径
compress:
  类型:bool
  默认值:false
  意义:压缩编译之后的css文件,即删除css文件中的空行和空格
cleancss:
  类型: bool
  默认值: false
  意义: 使用来压缩css文件
cleancssOptions:
  类型: Object
  默认值: none
  意义:如果设置cleancss为true的话,此项才起效果,配置cleancss的选项
ieCompat:
  类型:bool
  默认值:true
  意义:编译之后的css文件适应于ie8
optimization:
  类型: Integer
  默认值:null
  意义:设置优化等级,数字越小,在树中创建的节点越少。会影响到调试。
strictImports:
  类型:bool
  默认值:false
  意义:如果设置为true,less将会以标准的模式来加载@import引用的文件
strictMath:
  类型:bool
  默认值:false
  意义:如果设置为true,表达式需要用括号括起来
strictUnits:
  类型:bool
  默认值:false
  意义:如果设置为true,less将会验证单位是否合法
syncImport:
  类型:bool
  默认值:false
  意义:异步加载通过@import引用的文件
dumpLineNumbers:
  类型:string(comments, mediaquery,all)
  默认值:false
  意义:
relativeUrls:
  类型:bool
  默认值:false
  意义:重写url为相对url
customFunctions:
  类型: Object
  默认值: none
  意义:自定义函数,一般是全局功能的。
  类型: string ('min', 'gzip')
  默认值:min
  意义:何种方式来压缩文件,gzip更消耗时间
sourceMap:
  类型:bool
  默认值:false
  意义:是否使用文件映射
sourceMapFilename:
  类型:string
  默认值:none
  意义:编写源与给定的文件名映射到一个单独的文件。
sourceMapUrl:
  类型:string
  默认值:none
  意义:重写css文件中的源映射。
sourceMapBasepath:
  类型:string
  默认值:none
  意义:设置在源映射中的less文件路径的基本路径。
sourceMapRootpath:
  类型:string
  默认值:none
  意义:在map文件中的less文件根目录
outputSourceFiles:
  类型:bool
  默认值:false
  意义:将less文件放到Map文件中,替换引用。
modifyVars:
  类型: Object
  默认值: none
  意义:重写全局变量
  类型:string
  默认值: none
  意义:标记,编译之后文件顶部标记
  之前介绍了自动构建工具Grunt,其中有一个模块是&grunt-contrib-less&,下面是配置Grunt自动编译less文件。
  Grunt是基于node,功能模块…
发表了一篇文章
它会将/public/less下的less文件编译到/public/css目录下。更详细的配置参数请阅读。
  lessmiddleware的0.1.x版与1.0.x版有些差别,请阅读https://github.com/emberfeather/less.js-middleware/wiki/Migration-0.1.x-1.0.x
  现在已经有许多站点使用Node.js,所以在Node.js上配置Less环境也是很重要的,下面分享下如何在Node上使用Less开发,前提是你电脑上已经安装node。
发表了一篇文章
但是这影响所有初始链接标记。你也可以在指定的脚本标签的增加选项,如下:
&script src="less.js" data-env="development"&&/script&
或者,你也可以在链接配置参数覆盖某些选项,如下:
&link data-dump-line-numbers="all" data-global-vars='{ myvar: "#ddffee", mystr: "\"quoted\"" }' rel="stylesheet/less" type="text/css" href="less/styles.less"&
以上三种配置参数的优先级为:link标签的&script标签&全局对象
对象属性名称不驼峰
link标签的配置只和时间选项有关,其他不起作用
观察模式:
  如果使用观察模式,则配置参数的env为development。然后在Less.js文件加载之后调用less.watch(),如下:
&script&less = { env: 'development'};&/script&
&script src="less.js"&&/script&
&script&less.watch();&/script&
  如果启动了观察模式,则浏览器会不断请求less文件,根据Last-Modified参数判断是否重新渲染页面,这会造成很大的性能消耗,所以在线上不要开启观察模式。如果是开发环境,这方便了我们观察效果。你也可以在href后面加上'#!watch'来触发观察模式。
完整demo:
  是重置浏览器默认样式,config.js是浏览器选项的配置参数,如下:
env: "development", // or "production"
async: false,
// load imports async
fileAsync: false,
// load imports async when in a page under
// a file protocol
poll: 1000,
// when in watch mode, time in ms between polls
functions: {},
// user functions, keyed by name
dumpLineNumbers: "all", // "comment" or "mediaQuery" or "all"
relativeUrls: false,// whether to adjust url's to be relative
// if false, url's are already relative to the
// entry less file
rootpath: ":/"// a path to add on to the start of every url
//resource
index.html
&!DOCTYPE html&
&meta http-equiv="Content-Type" content="text/charset=utf-8"&
&link rel="stylesheet/less" type="text/css" href="./less/reset.less" /&
&link rel="stylesheet/less" type="text/css" href="./less/styles.less" /&
&script src="./js/config.js"&&/script&
&script src="./js/less-1.3.3.min.js"&&/script&
&script&less.watch();&/script&
参数详解:
Type: BooleanDefault: false是否异步加载重要文件dumpLineNumbers
Type: String Options: ''| 'comments'|'mediaquery'|'all' Default: ''如果设置了,这增加了源代码行信息输出的CSS文件。这有助于您调试,分析其中一个特定的规则是从哪里来的。comments 选项用于输出user-understandable内容, mediaquery 选项用于使用火狐插件解析css文件信息.env
Type: StringOptions: development or productionDefault: depends on page URL运行环境,如果是production,你的css文件将被缓存到本地并且信息不会输出到控制台。如果url以file://开头或者在你本地或者没有标准的端口,这都将被认为是development模式。例如:less = { env: 'production' };errorReporting
Type: StringOptions: html|console|functionDefault: html设置编译失败时错误报告的方法。fileAsync
Type: BooleanDefault: false当以file协议访问页面,是否异步引入文件functions
Type: object用户自定义函数e.g.less = {
functions: {
myfunc: function() {
return new(less.tree.Dimension)(1);
}};可以像Less函数一样使用它。.my-class {
border-width: unit(myfunc(), px);}logLevel
Type: NumberDefault: 2在控制台输出日志的数量。如果是production环境,将不会输出任何信息。2 - Information and errors1 - Errors0 - Nothingpoll
Type: IntegerDefault: 1000在观察模式下,测试的时间。relativeUrls
Type: BooleanDefault: false使用相对路劲。如果设置FALSE,则url是相对根目录文件。globalVars
Type: ObjectDefault: undefined全局变量列表注入代码。“字符串”类型的变量必须显式地包含引号。less.globalVars = { myvar: "#ddffee", mystr: "\"quoted\"" };这个选项定义了一个可以被文件引用的变量。这个变量也可以在文件中重新定义。modifyVars
Type: ObjectDefault: undefinedSame format as globalVars.与 globalVars参数含义相反,它将会在你文件最后定义,这意味着它将重写你在文件定义的。rootpath
Type: StringDefault: false设置根目录,所有的Less文件都会以这个目录开始。useFileCache
Type: BooleanDefault: true (previously false in before v2)是否要使用每个会话文件缓存。缓存文件可以使用modifyVars,并且它不会再次检索所有文件。如果您使用观察模式或调用刷新加载设置为true,那么运行之前缓存将被清除。
  之前项目用过Less,现在负责的项目也要使用,所以就总结下Less,也方便以后查看。本文主要是讲浏览器端如何使用Less。
  LESS是一种由Alexis Sellier设…
472774人浏览
382262人浏览
305677人浏览
193475人浏览
180672人浏览

我要回帖

更多关于 vh什么意思 的文章

 

随机推荐