<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if IE 6]> 仅IE6可识别 <![endif]-->
<!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->
<!—[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]→
Lt 小于运算符
lte 小于或等于运算
注释必须要多写! 1.方便后台看 2.方便自己查错和优化
为何用hbuilder运行的ajax用post请求json无效,而wamp运行的post,get方式都可以访问json?
$.trim(str) 删除字符串开始和末尾的空格
事先先沟通约定好,比如交互的数据格式需求是怎么样的啊,功能模块的逻辑是怎么样的等等。提前先和产品还有后台沟通好。
可以预先先沟通要交互的数据格式和字段写成文档,就算后期要调整工作量也没那么大。
<a href="javascipt:;"> 最佳
属性选择器 [disabled]
Localhost 即 127.0.0.1
$("p").after(function(n){
return "<div>上面的P元素下标是 " + n + "。</div>";
});
$("p").after("<p>Hello world!</p>");
/* object2 合并到 object1 中 */
$.extend(object1, object2);
document.querySelectorAll
git commit操作的是本地库,git push操作的是远程库。 git commit是将本地修改过的文件提交到本地库中。 git push是将本地库中的最新信息发送给远程库。
要绑定数据 用{{data}} 而非ng-model=‘data‘, 因为ng-model 只能双向绑定用于表单元素
JSON内不能包含注释。 如果(某个)属性需要引号,则必须使用双引号。所有的属性名必须在双引号内。字符类型的属性值必须使用双引号。其它类型值(如布尔或数字)不应该使用双引号
是:first-child没有::first-child
Json 易出错,且不会报错,故有bug要重点检查json
$scope.$apply()会自动地调用$rootScope.$digest()。
在$digest循环中,watchers会被触发。当一个watcher被触发时,AngularJS会检测scope模型。 $scope.$apply()必须放在需要执行代码的后面
Google在大多数时候,对于软件开发来说,都是更好的搜索引擎,所以,哪怕你费尽千辛万苦,也一定要用Google来搜索想要寻找的项目、文档和资料,必须的!
同步不响应的时候,加一个$scope.$apply()即可!
eval(‘(‘ + jsonstr + ‘)‘); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
ajax可直接访问json,方法如下:
代码不运行,很可能是受其他代码影响,通常改成异步抓取,然后加一个闭包就可以了!
异步抓取在这里即setTimeout定时器
看一段糟糕的代码:
setTimeout(function() {
while (true) {
}
}, 100);
setTimeout(function() {
alert(‘你好!‘);
}, 200);
setTimeout是异步,那么,不管前面的代码怎么样,他条件满足了就会执行,但上面的代码,由于任务队列里有一个死循环,而后面的弹出代码在队列的后面,循环不息,所以后面的永远不会被执行到。
浏览器是基于一个事件循环的模型,在这里面,可以有多个任务队列,比如render是一个队列,响应用户输入是一个,script执行是一个。任务队列里放的是任务,同一个任务来源的任务肯定在同一个任务队列里。
任务有优先级,鼠标或键盘响应事件优先级高,大概是其他任务的3倍。
任务的执行过程中可能产生:
spin:不影响Event Loop并延后执行
pause:停止Event Loop并延后执行
spin,如setTimeout的异步方式,就是spin方式,当执行到setTimeout时,此任务先暂停并保存,继续执行后续任务,当条件满足时,再将setTimeout的执行任务放回任务队列的后面,等待执行,假如前面有一个2s的任务,那原本是delay 1s的任务实际执行时会是在第3s的时候才执行。
pause,则是当在js中获取元素的offsetWidth等需要更新dom操作的动作时发生的。当执行到此任务时,将停止事件循环的工作,也就是先停止js引擎解析执行,跳到渲染引擎更新用户界面至当前状态,这期间,不处理后续任务,当前执行的脚本暂停,界面保持响应,但无法处理输入(事件循环停了),直到成功返回才继续执行任务。
遇到需求:
- 需求细化分解
- 逐个分析
- 将问题转化为代码,找关键点
imgbox.style.transform = "translateX(-"+boxwidth * index+"px)" /*变量都要加"++",而且必须是双引号!!*/
element.scrollHeight |
返回整个元素的高度(包括带滚动条的隐蔽的地方) |
element.scrollLeft |
返回当前视图中的实际元素的左边缘和左边缘之间的距离 |
element.scrollTop |
返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离 |
1."+boxwidth * index+"必须都放在"++"内部! 2.必须加px!*/
searchbox.style.backgroundColor = ‘rgba(255,0,0,‘+opacity+‘)‘
/*为什么这里必须统一?内双外也双,内单引号,外也得单引号!!*/
element.offsetWidth |
返回元素的宽度,包括边框和填充,但不是边距 |
element.offsetLeft |
返回当前元素的相对水平偏移位置的偏移容器 |
element.offsetParent |
返回元素的偏移容器 |
Min-width, max-width
Min-length, max-length
ngChange 和$scope.$watch的区别,ngChange 仅仅监控munally change NOT programmatically. 但是$scope.$watch都会监控。
$scope.$watch(‘username‘, function(now, old) {
// console.log(`${now}--${old}`);
if (!/^\w[\w_\d]{5,15}$/.test(now)) {
$scope.error_message = (‘用户名违规‘);
return;
}
$scope.error_message = ‘‘;
});
});
将 "时间戳" 转换为 "年月日" 的格式.
比如如下代码:
var da = 1402233166999;
da = new Date(da);
解决因为压缩代码造成注入对象失败问题的方式就是将第二个参数换成一个数组
.controller(‘DemoController‘, [‘$scope‘, ‘$log‘, function($scope, $log) {
$scope.value = new Date();
$scope.do = function() {
$log.warn($scope.value);
};
}]);
即等同于:
angular.module("myapp",[]).controller("DemoController",["$scope","$log",function(a,b){a.value=new Date();a.do1=function(){b.warn(a.value)}}]);
用a代表$scope, b代表$log
AngularJS 应用在加载时,文档可能会由于AngularJS 代码未加载完而出现显示 AngularJS 代码,进而会有闪烁的效果, ng-cloak 指令是为了防止该问题的发生。
调用js函数的方式:
<div><a href="javascript:close();">×</a></div>
移动端宽度千万不要用px,除非以下必要情况:
1.是固定像素的,比如两边固定宽度,中间自适应宽度
2.缩放图片(img,background)等
高度能不给死就不给死,高度可以用px
两端固定像素,中间自适应原理:
两端脱标,中间100%宽,用padding或者margin(用margin时宽度和margin都要用百分比表示)留出两边空间,然后两边定位,或者浮动上去。
移动端web是以百分比布局为主的 定最小宽度和最大宽度为辅的布局。
换句话说:就是所有元素有宽的都是百分比设宽度,没有的都是设置 min-width和max-width来达到自适应的目的
rem」是指根元素(root element,html)的字体大小,好开心的是,从遥远的 IE6 到版本帝 Chrome 他们都约好了,根元素默认的 font-size 都是 16px。
window.open(‘20 文员修改后页面.html‘)
label中不能放a,button标签,否则a,button点击无效
textarea标签内不要留空格,不然内部光标不会定位在最左上角
要跳转就要用form标签包起来
按钮默认会跳转,设置type=‘button‘ 后点击才不会跳转
如果按钮不跳转,很可能也是type设置的问题
所有表单元素都要有name属性,相当于绑定了该元素和相关内容
6.8
@media mediatype and|not|only (media feature) {
CSS-Code;s
}
你也可以针对不同的媒体使用不同 stylesheets :
<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">
响应式设计学习
6.7
以下命令行都适用于git bash其他的暂未尝试!!
--help
用法 :
git --help
--version
cd d:job/wechat
远程操作的第一步,通常是从远程主机克隆一个版本库,这时就要用到git clone命令。
$ git clone <版本库的网址>
比如,克隆jQuery的版本库。
$ git clone https://github.com/jquery/jquery.git
该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。
从https://github.com/jquery/jquery.git克隆到本地目录
ls查看文件夹内部文件
mkdir demo 新建一个叫做demo的文件夹
开发完成后将代码提交到远端Git仓库步骤如下:
git add
-A
添加到待提交中(如果想添加
index.php
,也可以直接写
$ git add index.php,
如果文件多就用
-A
)
git commit是百度的方式,通常写法是git commit -m ‘test‘ 引号中算是说明原因
git push/pull push是网上传,pull是往本地下载
提交完成之后必须点击‘快捷发布
’如下图所示: