本文仅记录本人学习知识,文章出现的题目都是转载网络的。互相学习,一块儿成长!
var arr = new Array(5); function insertRandom(n) { if (n < 0) return let tmp = Math.floor(Math.random() * 31 + 2) if (arr.indexOf(tmp) !== -1) return insertRandom(n) arr[n] = tmp return insertRandom(n - 1) } insertRandom(arr.length - 1)
语法:css
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> main { width: 100%; padding: 60px 80px 80px; background: #b4a078; } div { padding: 12px; margin: 20px auto; background: white; border: 10px solid hsla(0, 0%, 100%, .5); background-clip: padding-box; } label {color: #f4f0ea;} </style> <body> <main> <div>A paragraph of filler text. La la la de dah de dah de dah de la.</div> </main> </body> </html>
语法:html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> main{ width: 100%; padding: 0; display: flex; flex-wrap: wrap; justify-content: space-around; align-items: center; } div:nth-of-type(1) { width: 60px; height: 60px; border-radius: 50%; background: #fafafa; margin: 105px 29px; box-shadow: 0 0 0 10px #E8E2D6, 0 0 0 20px #E1D9C9, 0 0 0 30px #D9CFBB, 0 0 0 40px #D2C6AE, 0 0 0 50px #CABCA0, 0 0 0 60px #C3B393, 0 0 0 70px #BBA985, 0 0 0 80px #B4A078; } div:nth-of-type(2){ width: 200px; height: 120px; background: #efebe9; border: 5px solid #B4A078; outline: #B4A078 dashed 1px; outline-offset: -10px; margin-bottom: 20px; } </style> <body> <main> <div></div> <div></div> </main> </body> </html>
语法:html5
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> main {width: 100%;} div { width: 209px; margin: 29px auto; padding: 8px 16px; border-radius: 8px; background: #f4f0ea; outline: 6px solid #b4a078; box-shadow: 0 0 0 5px #b4a078; } </style> <body> <main> <div>例子</div> </main> </body> </html>
语法:正则表达式
.el { margin-left: calc(10% + 10px); //将元素的左边距指定为其父级宽度的 “10%” 加上额外的 “10px”; margin-left: calc(10% - 10px); //将元素的左边距指定为其父级宽度的 “10%” 减去额外的 “10px”: }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> main { width: 100%; padding: 80px 0px; display: flex; flex-wrap: wrap; justify-content: space-around; } div { width: 229px; height: 139px; margin: auto; color: #f4f0ea; padding: 16px 29px 28px 20px; background: #b4a078 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJwAAAAqCAMAAABx9cIXAAAArlBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8tivQqAAAAOXRSTlMAcBBQoPHQMJDgH/uwCwLs2iUU+MhgGuZ2BgRq1sx8VT+lnFk7K/WYAbyHgDXBuKqUi0llTbNFrYJ+UzMgAAAFQUlEQVRYw7VY53qiQBSlKS2IICq22Ets0ViSef8X27kwMo2yZL89f5Q77XD7oHDQZjf1oN5mmlKGljlV3+PRPVCqYSOENOXf0YsnLiKYxL2CWUP9u4EI+ovVfyDnOUd91OVEoeUiFu4lVGTsujbiEM1+Tc7Teo6zNo+zL73bVeMfy/j+iMb9DgKc2Jm6j0T4U1m5H0jC1uOmrE0OfTxjxYsGZOYZ5UMkt3snMvuxsBaPl3Z+djy3Yz+VN05z6zKfdIgLcB7QQFVwyMwIleCD7rhHgHb8WueobQS48tySgzuLVYvY5f6Wrgt/Ra7Nixv99uT0Zlz26vLLZHYcJYOjIev3o+QUlbVpYvlPTk9mlOhu8BtysJ1+n63MtdPTBkoBTLDPWEwMzhjC4kgTSATPNzF4LYRhUcGXXgWP7AdurVShNcHTmnJsak2QD1n1urq8/ADsjkpthOAQbOxq2k6e1YVXcHgZtePtRbVBrCxhDhmFk6hgfnEaxNyCeQ74Zc3cnDMEx5wqeZjCyw3p3uddbr6C4P7i/ARcmHowDc4l87zCz48qcncauBIgrd1T2/exUQvq1ZIcQwEpZyZb0Q2FcxdV5D7FjYS3+1YAT/xvXuS0Y+FcZQtpSHaekyi4VpAbNHCkCjJuySaJ8gtkenmc+lhXtMZY1sE7K4ixIK4gNxMWyV78JBnT3hW2DKJaPUhODufZEE8mK9lDtFWQi0sTwZFQD6GIKoVovrLCTktxgtDWGHxBE0P+DzLT6yI5ORF0hsU5cJMmhSdrOBmX184a+gt0MzuvRHJyhE+UYkzS4RtrFBkjGK5JDjJBIJMTo/6NE0h+3Mc/P3hpWDwLjHavSQ7YhBXksOtelHKD4R8LG79klvk6cqD+BdZZLmxQuPDIYaQotGxTCDGFOyQDrxSHhFI0UuqhgyqgJuT23CK5rHuV5Jxkr1rwUCW5Ss1ZqVm35eTWbDAHagmyqNIsHj4kK04yS5pDQynGAqEN/rnipcPiWSu2qOvl6uBQERBjKPvFOKfpNRYzvty+zP4DOZxu7PKr3Yk0Hk+ltMoF9ck5h8PhXSTXAyGxklWawSBvXYhTxcXkvrHxWyw5vSJsaJ76EMl5DdpfduFvqb3A04c48M/FRc6HprY2uXADXSpPjvj3hK4QG7WbYRhx1oIHxPodTQhRPGsRvjqbfX1y4AztlkTOcakHj7FJNPE6RtSpbV7tRiyn2dbp1bkvoIbXJuf5ZE9KjrZ+D8o/zinkjSCldMhatnZLvgDB0h5+F7vFkYvecnAGcvwhvpdD7ogw1pkW/VDycLgqaz7NILDzLafeu6tEcT+KUjNaW22yTE4lJ3q9mOd4nWZD5YCRT6Zj9rnbPvFdG4JmE9Ymt6TLKDnmpVOlBG5OcjyCEOYE7E0s8oRrZYRS7BWenN3MwZg9pwVPVn4S3sHDlnYertjnxuKp6w74v8DOaSCADeJ6AbGk2pErxJQODiYIwxrwtzJb/ESjgqAZyC0V+F0NclRxW6l8saMGWdVHGO3lkFJbyt/AdgZIOlfGvcw5UVxNclRxMjk6HBCT9RGgf5muNa+3Xm59lMKdsYntO5U9RquepwXPQ4QIjLrkhu1slWYmAIHGh7LxWtdEMnzgG7LsrkhGB4rQUiDn2znoU3KBgRGQbwkZNCZLQfnJ7Lh3EQ/36p0gVXNX6aeNBETrG8nYv2yZBh2JnAxn20AUm0WARTa+Z0z5rUZjjpqOuc/xrEddchTnSnIAT99GPtSLaDv1iqcd38/2Bptz/KkGeeOmUYKcpvCeDYqH/gH0uaoGeLQhjwAAAABJRU5ErkJggi8qICB8eEd2MDB8YzcwNDdjMGQ3NzA2ZTI2ZDhlZTlhMDVjOTFkZDA3MzggKi8=') no-repeat bottom right / 78px 21px; } div:nth-of-type(1) { background-position: right 29px bottom 28px; } div:nth-of-type(2) { background-origin: content-box; margin: 29px 0; } div:nth-of-type(3) { background-position: calc(100% - 29px) calc(100% - 28px); } </style> <body> <main> <div class="block1">background-position方案</div> <div class="block2">background-origin方案</div> <div class="block3">calc方案</div> </main> </body> </html>
块级元素:算法
名称 | 做用 | 名称 | 做用 |
---|---|---|---|
head | div | ||
meat | 申明页面的诸多属性 | ul | |
title | 窗口标题 | li | |
style | 样式 | ol | |
body | 文本内容 | p | |
header | 头部块 | dl | |
section | 内容块 | dt | |
footer | 底部块 | dd | |
article | 文章标签 | form | |
hr | 下划线 | table | |
h1-h6 | 描述标题 | theader | |
aside | tbody | ||
nav | tr | ||
menu | th | ||
bir |
行内元素:json
名称 |
---|
label |
a |
span |
td |
input |
button |
strong |
b |
i |
边框(borders):api
背景:跨域
渐变:数组
文本效果:浏览器
2D转换属性
2D转换方法
3D转换属性:
3D转换方法
过渡
动画
实现思路:用正则表达式中的replace方法匹配,'s'是指空白符(包括空格,换行符,回车符,换页符,制表符等);<br/>
若是正则表达式不太明白的掘友,能够查看我以前写过有关正则表达式的我的总结篇
var trim = function(str){ str.replace(/\s*/g,""); //去除字符串内全部的空格 str.replace(/^\s*|\s*$/g,""); //去除字符串内两头的空格 str.replace(/^\s*/,""); //去除字符串内左侧的空格 str.replace(/(\s*$)/g,""); //去除字符串内右侧的空格 }
占位:
不占位:
仅对块内文本元素:
function delLast(str, target) { return str.split('').reverse().join('').replace(target, '').split('').reverse().join(''); } const str = delLast('asdfghhj', 'h') console.log(str) // asdfghj
能够继承的经常使用属性
function transfor (str){ var reg=/-[a-z]/g; return str.replace(reg,function(vc){ return vc.slice(1).toUpperCase(); }) } transfor("get-element-by-id"); //getElementById
_self: 在当前窗口打开页面 _blank: 在新窗口打开页面 _top: 在整个框架打开页面不是很理解(在iframe或者frameset里用的比较多)
字符转ascii码:用charCodeAt()
ascii码转字符:用fromCharCode(number)
数组转字符串: Array.join("-")
字符串转数组: String.split(",")
function tansfrom(str){ //先把字符串转为数组 var charStr=str.split(""); //遍历数组 for(let i=0;i<charStr.length;i++){ if(charStr[i].charCodeAt()>=65&&charStr[i].charCodeAt()<=90){ charStr[i]=String.fromCharCode(charStr[i].charCodeAt()+32); }else if(charStr[i].charCodeAt()>=97&&charStr[i].charCodeAt()<=122){ charStr[i]=String.fromCharCode(charStr[i].charCodeAt()-32); } } return charStr.join(""); } tansfrom("abA");
BFC 全称为 块格式化上下文。是Web页面的可视化CSS渲染出的一部分。它是块级盒布局出现的区域,也是浮动层元素进行交互的区域。
一个块格式化上下文由如下之一建立:
特性:
function strCount(str, target) { let count = 0 if (!target) return count while(str.match(target)) { str = str.replace(target, '') count++ } return count } console.log(strCount('abcdef abcdef a', 'abc'));
function substrCount(str, target) { let count = 0; while (str.includes(target)) { const index = str.indexOf(target); count++; str = str.substring(index + target.length); } return count; }
var str="abcdacd"; var target="a"; var childInNums = str.split(target).length - 1;
stroage
localStorage和sessionStorage localStorage保存数据会一直保存没有过时时间,不会随浏览器发送给服务器。大小5M或更大 sessionStorage仅当前页面有效一旦关闭就会被释放。也不会随浏览器发送给服务器。大小5M或更大 localStorage和sessionStorage都继承于Storage,提供了统一的api来访问和设置数据。api列表为: clear 清空存储中的全部本地存储数据 getItem 接受一个参数key,获取对应key的本地存储 key 接受一个整数索引,返回对应本地存储中索引的键 removeItem 接受一个参数key,删除对应本地存储的 keysetItem 接受两个参数,key和value,若是不存在则添加,存在则更新。
localStorage.setItem('order', 'a109'); console.log(localStorage.key(0)); // order console.log(localStorage.getItem('order')) // a109 localStorage.removeItem('order'); localStorage.clear();// 对象访问方式一样有效 localStorage.order = 'b110'; localStorage.order; // b110
postmessage
postMessage()方法容许来自不一样源的脚本采用异步方式进行有限的通讯,能够实现跨文本档、多窗口、 跨域消息传递。html5引入的message的API,主要的功能: 1.页面和其打开的新窗口的数据传递 2.多窗口之间消息传递 3.页面与嵌套的iframe消息传递 4.上面三个问题的跨域数据传递 postMessage(data,origin)方法接受两个参数 1.data:要传递的数据,html5规范中提到该参数能够是JavaScript的任意基本类型或可复制的对象, 然而并非全部浏览器都作到了这点儿,部分浏览器只能处理字符串参数,因此咱们在传递参数的 时候须要使用JSON.stringify()方法对对象参数序列化,在低版本IE中引用json2.js能够实现相似效果。 2.origin:字符串参数,指明目标窗口的源,协议+主机+端口号[+URL],URL会被忽略,因此能够不写, 这个参数是为了安全考虑,postMessage()方法只会将message传递给指定窗口, 固然若是愿意也能够建参数设置为"*",这样能够传递给任意窗口,若是要指定和当前窗口同源的话设置为"/"。
index.html
<div style="width:200px; float:left; margin-right:200px;border:solid 1px #333;"> <div id="color">Frame Color</div> </div> <div> <iframe id="child" src="https://www.test2.com/test2.html"></iframe> </div> window.onload=function(){//传输数据 window.frames[0].postMessage('getcolor','http://lslib.com'); }
test2.html
window.addEventListener('message',function(e){ //接收消息 if(e.source!=window.parent) return; var color=container.style.backgroundColor; window.parent.postMessage(color,'*'); },false);
一开始就针对低版本浏览器进行构建页面,完成基本的功能,而后再针对高级浏览器进行效果、
交互、追加功能达到更好的体验。
一开始就构建站点的完整功能,而后再针对低版本浏览器进行兼容。
好比一开始使用 CSS3 的特性构建了一个应用,而后逐步针对各大浏览器进行 hack
使其能够在低版本浏览器上正常浏览。
若低版本用户居多,则优先采用渐进加强的开发流程; 若高版本用户居多,则为了提升大多数用户的使用体验,那固然优先采用优雅降级的开发流程。
typeof 只能判断基本类型 string,number,boolean,undefined,object
null 会被判断成 object
比较全面的是使用 Object.prototype.toString 方法,只须要对返回值进行字符串分割便可
const typeCheck = (obj) => { const typeStr = Object.prototype.toString.call(obj); //返回格式:[object xxxxx] return typeStr.toLowerCase().slice(8, typeStr.length - 1); }; console.log(typeCheck("str")); //string console.log(typeCheck(1)); //number console.log(typeCheck(() => null)); //function console.log(typeCheck({a: 1})); //object console.log(typeCheck([1, 2, 3]));//array console.log(typeCheck(new Set([1,2,3]))); //set