a个人经验总结
个人经验总结
js中事件有个 on前缀 比如 onclick onmousemove
jq中事件省略 on 如 click mousemove
html引入其他页面
<iframe src="1.html" frameborder="0" width="1205px" height="305px"></iframe>
jquery 中的setInterval()
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="js/jquery.min.js"></script> <script> $(function () { // setInterval("move()",20); // 原生js /*setInterval(function () { // 使用jq,这里要再加 function(){ move();} move(); },200);*/ function move(){ a=$("#a"); var val=parseInt(a.text()); a.text(val+1); } setInterval(move,300); // 使用jq 直接 move ! 连双引号都不用 }); </script> </head> <body> <div id="a" style="position: relative;">0</div> </body> </html>
screenX clientX pageX offsetX区别:
screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角。
pageX:跟screenX相比就是将参照点改成了浏览器内容区域的左上角,滚动条滚动时值会增加
clientX:参照点也是浏览器内容区域的左上角,但它不会随着滚动条而变动
offsetX: 参照点是对应div 内部的左上角为顶点
<!DOCTYPE html > <html lang="en"> <head> <title></title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <style> body {margin: 0;padding: 0;} .div { text-align: center; font-size: 24px; height: 300px; width: 1300px; line-height: 300px; color: yellow; } #d1 {background-color: red;} #d2 {background-color: green;} #d3 {background-color: blue;} #d4 { position: absolute; background-color: yellow; height: 150px; width: 120px; top: 0; } </style> <script type="text/javascript"> $(function () { window.onscroll = function () { $("#d4").css("top", getScrollTop()); }; document.onmousemove = function (e) { if (e == null) { e = window.event; } var html = "screenX:" + e.screenX + "<br/>"; html += "screenY:" + e.screenY + "<br/><br/>"; html += "clientX:" + e.clientX + "<br/>"; html += "clientY:" + e.clientY + "<br/><br/>"; if (e.pageX == null) { html += "pageX:" + e.x + "<br/>"; html += "pageY:" + e.y + "<br/>"; } else { html += "pageX:" + e.pageX + "<br/>"; html += "pageY:" + e.pageY + "<br/>"; } $("#d4").html(html); }; }); function getScrollTop() { var top = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; return top; } </script> </head> <body> <div id="d1" class="div">div1 height:300px width:1300px</div> <div id="d2" class="div">div2 height:300px width:1300px</div> <div id="d3" class="div">div3 height:300px width:1300px</div> <div id="d4"></div> </body> </html>
offsetX
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script> window.onload= function () { var div=document.getElementById('div2'); var p=document.getElementById('p1'); div.onmousemove= function (e) { p.innerHTML= e.offsetX+" "+ e.offsetY; } } </script> </head> <body> <div id="div2"> <div style="width:200px;height: 200px; background-color: #016aeb;float:left;"></div> <div style="width:200px;height: 200px; background-color: #269801;float:left;"></div> </div> <p id="p1" style="clear:both;"></p> </body> </html>
this = e.currentTarget e.target
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <div id="outer" style="background:#099"> click outer <p id="inner" style="background:#9C0">click inner</p> <br> </div> <script type="text/javascript"> function G(id){ return document.getElementById(id); } function addEvent(obj, ev, handler){ if(window.attachEvent){ obj.attachEvent("on" + ev, handler); }else if(window.addEventListener){ obj.addEventListener(ev, handler, false); } } function test(e){ alert("e.target.tagName : " + e.target.tagName + "\n e.currentTarget.tagName : " + e.currentTarget.tagName +"\n this.tagName: "+ this.tagName ); } var outer = G("outer"); var inner = G("inner"); // addEvent(inner, "click", test); //p addEvent(outer, "click", test); // 点 outer 是 div 点inner e.target是 p // this = e.currentTarget 谁调用,指谁 // e.target 触发事件的对象 </script> </body> </html>
onclick:所有主流浏览器都支持 onclick 事件属性
addEventListener(); Internet Explorer 8 及更早IE版本不支持 addEventListener() 方法,Opera 7.0 及 Opera 更早版本也不支持。 但是,对于这些不支持该函数的浏览器,你可以使用 attachEvent() 方法来添加事件句柄 (查看 "更多实例" 了解跨浏览器的解决方案)。
添加下标
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> a{float: left; margin-left: 20px;} </style> </head> <body> <nav> <a>1</a><a>2</a><a>3</a><a>4</a><a>5</a> </nav> </body> </html> <script> var nav=document.getElementsByTagName("nav")[0]; var aList=nav.getElementsByTagName("a"); for(var i =0; i<aList.length;i++){ aList[i].index=i; //为每个a设置下标index aList[i].onclick= function () { alert(this.index); } } </script>
神奇的label
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> label { border: 1px solid red; width: 60%; float: left; padding-top:100px; text-align: center; } input{display: none;} img{ filter:blur(5px); -webkit-filter:blur(5px); /*只有谷歌有效没效果*/ } </style> </head> <body> <label> <input type="file"/> <span>神奇的label,点击边框任意角落都可以上传文件</span> <img src="img/1.jpg" alt="神奇的css 滤镜"/> </label> </body> </html>
cssText
<div>123</div> <script> var div1=document.getElementsByTagName("div")[0]; div1.style.cssText="border:1px solid red;width:300px;height:300px;"; //批量添加 css //div1.style.color="red"; </script>
获取上传图片
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <input type="file"> <div></div> </body> </html> <script> var oInput=document.getElementsByTagName("input")[0]; var oDiv=document.getElementsByTagName("div")[0]; var oImg= document.createElement("img"); // 创建节点 oInput.onchange= function () { if(this.files[0].type.split("/")[0]=="image"){ console.log(this.files[0]); // 判断上传文件 用 this.files[0] oImg.src=this.files[0].name; }else{ alert("请重新上传图片"); } } oDiv.appendChild(oImg); </script>
最简 tab
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> ul{list-style: none;} li{float: left;width: 200px;} .p{color:red;} </style> <script src="js/jquery.js"></script> <script> $().ready(function () { $("li:first").addClass("p"); $("li").click(function () { var index=$(this).index()+1; $(this).addClass("p").siblings().removeClass("p"); $("div").eq(index).show().siblings().hide(); }); }); </script> </head> <body> <ul> <li>file</li> <li>edit</li> <li>view</li> </ul> <div style="clear: both;"> <div>file</div> <div style="display: none;">edit</div> <div style="display: none;">view</div> </div> </body> </html>
jquery: remove(): 把匹配到的删除 empty():把匹配到的元素的内容删除,保留元素
HTML 代码:
<p>Hello</p> how are <p>you?</p>
jQuery 代码:
$("p").remove();
结果:
how are
HTML 代码:
<p>Hello, <span>Person</span> <a href="#">and person</a></p>
jQuery 代码:
$("p").empty();
结果:
<p></p>
在 CSS 定义中:
1. a:hover 必须位于 a:link 和 a:visited 之后,这样才能生效!
2. a:active 必须位于 a:hover 之后,这 样才能生效!
于是得四者顺序:
a:link----->a:visited------>a:hover-------->a:active。
可以这样记:LoVe HAte(爱恨) [注意大写字母]
相对定位 绝对定位多应用 ul li
移动端小项目总结
注意:看html响应效果要看开发人员工具中的 Elements 而不是Sources
z-index:
所有主流浏览器都支持 z-index 属性。此属性参数值越大,则被层叠在最上面
CSS3 :nth-of-type() 选择器 所有主流浏览器均支持 :nth-of-type() 选择器,除了 IE8 及更早的版本。
CSS3 background-size 属性 contain 把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域
css3 animation:mes-circle1 1.2s linear 0s 1 normal both ;
name 时间 速度 延时 次数 逆向播放(播放放次数为0时,没效果) 若opacity:0 -> 1 则要加both
最简模式 css3 animation:mes-circle1 1.2s // 其他都有默认值
紧挨选择器
h1 + p {margin-top:50px;}
这个选择器读作:“选择紧接在 h1 元素后出现的段落,h1 和 p 元素拥有共同的父元素”。
getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持。
对于现代浏览器开发,还可以使用querySelector()和querySelectorAll()。他们的功能更加强大。
解释:getElementsByClassName()是HTML5的DOM API。
document.getElementsByClassName("wrapper"); //取得DOM中所有class = "wrapper"的元素
解释:querySelector()和querySelectorAll()
是新标准的Selectors API(选择符API)。IE8+、FF3.5+、Safari 3.1+、Chrome、Opera 10+支持
querySelector()接受一个css选择器作为参数,然后返回DOM中匹配的第一个元素
querySelectorAll()接受一个css选择器作为参数,然后返回DOM中匹配的元素的集合数组
document.querySelector("#wrapper") // 取得DOM中第一个id= “wrapper”的元素
document.querySelector(".wrapper") // 取得DOM中第一个class= “wrapper”的元素
document.querySelector("p") // 取得DOM中第一个<p></p>元素
document.querySelectorAll("p") // 取得DOM中所有的<p></p>元素......类比于querySelector()
P.S.原生的方法,便是getElementById()和getElementsByTagName()。这两个不会有兼容问题
函数放里面还是放外面? 放里面,放外在都可以
function testA(){
xxx;
var a=test();
function testB(){
xxx;
}
}
function testA(){
xxx;
var a=testB();
}
function testB(){
xxx;
}
添加下标 jq版本
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="jquery.js"></script> <script> $(function () { $("li").each(function (index) { /*添加索引下标*/ $(this).click(function () { console.log(index); }); });
/* $("li").click(function () {
console.log($(this).index()); /*这样也行 不用 each */
});
*/
}); </script> </head> <body> <li>123</li><li>123</li><li>123</li><li>123</li><li>123</li><li>123</li> </body> </html>
判断输入的为汉字再转码,
var keyword=$(this).val();
var keyword2="";
if(/^[\u4e00-\u9fa5]+$/.test(keyword)) {
keyword2 = encodeURI(keyword);
判断手机号码
function phone(phone){
var pho = /^1[34578]\d{9}$/;
return pho.test(phone);}
if(phone(1372303941)){
alert('yes')
}else{
alert('no')
}
时间戳
//格式化时间戳 console.log("ok: "+format_date(1496125699000)); function format_date(time){ var str=""; var year=new Date(time).getFullYear(); var month=new Date(time).getMonth()+1; var day=new Date(time).getDate(); str=year+'-'+month+'-'+day; return str; } //判断时间戳跟现在时间是否小于7天 var i="1496125699000"; if(i-new Date().getTime()<7*24*3600*1000){ // 再乘以1000 转换成毫秒 ! alert(1); }else{ alert(0); }
重复的代码写成函数;
有时要写成两个函数;
数组应用
var playforms=['全平台','恒企在线','会答'];
playforms[list.work_type]; // list.work_type=0;
自定义checkbox样式
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script> <script> $(function () { $("li").click(function () { if($(this).find("input").attr("checked")=="checked"){ $(this).find("input").removeAttr("checked"); $(this).css("backgroundPosition","0 0px"); }else{ $(this).find("input").attr("checked","checked"); $(this).css("backgroundPosition","0 -21px"); } }); }); </script> <style> li{list-style: none;float: left;background: url("checkbox.png") no-repeat;border: 1px solid red;} input[type=checkbox]{ visibility: hidden; } </style> </head> <body> <form action=""> <ul> <li><input type="checkbox"/>a</li> <li><input type="checkbox"/>b</li> <li><input type="checkbox"/>c</li> <li><input type="checkbox"/>d</li> </ul> </form> </body> </html>
chebox.png

css3 百度知道特效
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>000</title> <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script> <style> @keyframes test { from{ opacity: 0; top:100px; } to{ opacity: 1; top:10px; } } @-webkit-keyframes test { from{ opacity: 0; top:100px; } to{ opacity: 1; top:10px; } } </style> </head> <body style="position: relative;"> <div style="position: absolute;top:100px; animation: test 3s both; -webkit-animation: test 3s both;"> <img src="1234.png" alt="1234"/> </div> </body> </html>

delegate()
on():先click事件,再找 选择器
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script> </head> <body> <div style="width: 200px;height: 200px;background-color: #01ff70;"> <h1>1111111111111111</h1> <h2>22222222222222</h2> <p>33333424</p> <h3></h3> </div> <script> $(function () { /*$("div").delegate("p","click", function () { $("h3").text(123456); })*/ $("div").on('click','p', function () { $("h3").text('abc'); }) }); </script> </body> </html>

浙公网安备 33010602011771号