王朝235网址导航
立即发布
当前位置:首页 > JS代码
文章资讯分类
文章资讯
  • JavaScript 对数据处理的5个API JavaScript 对数据处理的5个API

    JavaScript 对数据处理的5个API

    在 JavaScript 中,对数值进行四舍五入操作的场景有以下几种:向上取整:ceil向下取整:floor四舍五入:round固定精度:toFixed固定长度:toPrecision取整:parseInt、位运算本文将对这 6 个 API 进行简单的讲解和总结。1、向上取整: ceilceil 是`天花板`的意思,表示在一个数值之上,且距离该数最近的整数。ceil 是 Math 对象的静态方法,需要传递一个参数,其调用方法如下: Math.ceil(12.34); //13 Math.ceil(12.68); //13 2、向下取整: floorfloor 是`地板`的意思,表示在一个数值之下,且距离该数最近的整数。floor 是 Math 对象的静态方法,需要传递一个参数,其调用方法如下: Math.floor(12.34); // 12 Math.floor(12.68); // 12 3、四舍五入: roundround 的作用是对一个浮点数进行四舍五入,并保留整数位。round 也是 Math 对象的静态方法,也需要传递一个参数,其调用方法如下: Math.round(12.34); // 12 Math.round(12.54); // 13 4、固定精度: toFixedtoFixed 和上面三个方法不同,它是 Number 原型上实现的一个方法,其作用是对一个浮点数进行四舍五入并保留固定小数位。 toFixed 需要传递一个参数,其调用方式如下: 100.456001.toFixed(2); // 100.46 100.456001.toFixed(3); // 100.456 5、固定长度: toPrecisiontoPrecison 也是 Number 原型上实现的一个处理浮点数的方法,和 toFixed 不同的是,它是对一个浮点数进行四舍五入并保留固定长度的有效数字,包括整数部分。 99.456001.toPrecision(5); // 99.456 100.456001.toPrecision(5); // 100.46 6、取整: parseIntparseInt 是 全局对象 window上的一个方法,其作用是对一个可转换的数值取整,分为以下两种情况:1. 将字符串数值转化为 Number 整数,对字符串的每一个字符进行转化,直到遇到不可转化的字符(包括小数点)停止。2. 对浮点类型数值取整,忽略小数部分,不做四舍五入处理 // 字符串数值 parseInt('100') ; // 100 parseInt('100axt'); // 100 parseInt('100xh20'); // 100 parseInt('100.78'); // 123 // Number 类型 parseInt(100.12) ; // 100 parseInt(100.78); // 100 7、取整: 位运算| 0   : 和 0 进行 按位或 操作,原值不变~~   : 两次 按位非 操作得到的也是原值>> 0 : 右移 0 位<< 0 : 左移 0 位>>> 0: 无符号右移 0 位这些位运算符在实现取整操作时,会表现出一些共同的特征:对于 Number 类型来说,直接应用位操作, 和 parseInt 得到的结果几乎一样;对于其他类型,内部会先通过 Number() 将其转换为一个数值,然后再应用位操作。对特殊 NaN 和 Infinity 值应用位操作时,这两个值都会被当成 0 来处理 。对于 Number 类型,直接应用位运算。 ~~ 100.12; // 100 100.78 | 0; // 100 100.45 >> 0; // 100 100.50 << 0; // 100 100.96 >>> 0; // 100 对于其他类型,先使用 Number() 转换为数值类型,再进行位运算。 ~~ '100.12' // 100, Number('100.12') == 100.12 '100.50' >> 0; // 100,Number('100.50') == 100.50 '100.96' << 0; // 100,Number('100.96') == 100.96 ~~ 'abc' // 0 , Number('abc') == NaN '12abc' >> 0; // 0, Number('12abc') == NaN undefined | 0 ; // 0, Number(undefined) == NaN ~~null; // 0 , Number(null) == 0 true >> 0; // 1 , Number(true) == 1 false >> 0; //0 , Number(false) == 0 [] << 0; // 0 , Number([]) == 0 ~~NaN; // 0 Infinity >>> 0; // 0 位运算作用于最基本的层次上,即按内存中表示数值的位来操作数值。位运算能取整的原因是:ECMAScript 中的数值以64位双精度浮点数存储,但位运算只能作用于整数,因此要先将 64 位的浮点数转换成 32 位的整数,然后再进行位运算,最后再将计算结果转换成64位浮点数存储。
    2022-09-22 5
  • javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈 javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型。javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据。本文主要讨论javascript中数组的声明、转换、排序、合并、迭代等等基本操作。创建数组和数组检测1、使用Array构造函数 创建数组。 //创建一个空数组 var cars = new Array(); //创建一个指定长度的数组 var cars = new Array(20); //向构造函数传递数组项 var cars = new Array('Mercedes-benz','BMW','Audi'); 这里要注意的是,当只传递一个参数给Array构造函数时,如果参数是数字则会创建一个指定长度的数组,如果参数是一个字符串则创建一个只包含该字符串的长度为1 的数组。 var cars = new Array(1); //[undefined × 1] var cars = new Array('BMW'); //["BMW"] 另外使用 Array 构造函数创建数组时也可以省略掉 new 操作符,和上面的一样只是去掉new关键字即可,这里不做演示。2、使用 数组字面量法 创建数组这种方法使用一对方括号'[]'表示数组,直接把数组项书写在方括号中,多个数组项之间用逗号 ',' 隔开。注意:为避免兼容性问题请不要在最后一个项后面添加 ‘,’ 。 //创建一个空数组 var cars = []; //创建一个包含3个项的数组 var cars = ['Mercedes-benz','BMW','Audi']; 在读取和设置数组的值时,只需通过方括号提供相应项的索引即可 var cars = ['Mercedes-benz','BMW','Audi']; console.log(cars[0]); //输出 “Mercedes-benz” cars[2] = 'Jeep'; //把Audi修改为Jeep cars[3] = 'Audi'; //增加第四项 Audi 通过数组的 length 属性可读取数组的长度,但是该属性不是只读的,通过修改该属性可以变更数组的长度。如果新length小于原length则会删掉原数组中多余的数组项;若新length大于原length则数组中仍保持原来的数组项,但是length被增加到了新length,当访问这些不存在的项时会返回 undefined。 var cars = ['Mercedes-benz','BMW','Audi']; console.log(cars.length) // console.log(cars) //["Mercedes-benz", "BMW", "Audi"] cars.length=2; console.log(cars) //["Mercedes-benz", "BMW"] cars.length=4; console.log(cars) //["Mercedes-benz", "BMW"] cars //["Mercedes-benz", "BMW", undefined × 2] 3、检测数组有两种方法可以检测某个对象是否为数组 value instanceof Array 和 Array.isArray(value)。Array.isArray()方法是ES5中新增的方法,其优势在于当页面中的多个框架间传递数组时,仍可正确返回数据类型。数组转换toString() 方法可以返回由数组中项组成的字符串,项与项之间由“,”连接。当进行转换时会调用数组中每个项的 toString() 方法;toLocaleString()会返回与tostring类似的结果,只不过其调用的是数组中每项的 toLocaleString();valueOf会返回数组本身;join()函数接受一个字符串类型的参数,返回之类似tostring(),不同之处在于该函数使用传递给他的参数作为数组项之间的连接符。队列和栈通过push()和pop()函数可实现 LIFO(Last-in-first-out)。push() 方法接收任意数量的参数,把它们逐个添加到当前数组的末尾,返回修改后数组的长度。而pop()方法则从数组末尾一处最后一项2,减少数组的length值,然后返回数组移除的项。 var cars = new Array(); cars.push('Mercedes-benz','BMW'); // console.log(cars); // ["Mercedes-benz", "BMW"] cars.push('Audi'); // console.log(cars); // ["Mercedes-benz", "BMW", "Audi"] cars.pop(); // "Audi" console.log(cars); // ["Mercedes-benz", "BMW"] 与pop()类似,还有shift()方法,不同之处在于,shift()从数组的前端移除项。shift配合push使用可以实现 FIFO(First-In-First-Out)。 var cars = new Array(); cars.push('Mercedes-benz','BMW'); // console.log(cars); // ["Mercedes-benz", "BMW"] cars.push('Audi'); // console.log(cars); // ["Mercedes-benz", "BMW", "Audi"] cars.shift(); // "Mercedes-benz" console.log(cars); // ["BMW", "Audi"] 合并&拼接concat()该方法会基于当前数组中的所有项创建一个新数组,先创建一个当前数组的副本,然后将接受到的参数添加到这个副本的末尾,最后返回新构建的数组。如果没有为方法提供参数,则会仅复制当前数组并返回该副本。传递给concat()的参数可以是一个或多个数组,该方法会将这些数组中的项都添加到新构建的结果数组中。如果传递的参数不是数组,这些值会被简单的添加到结果数组的末尾处。splice()上面提到的方法都是在数组的结尾或头部进行操作,splice() 不同,它可用于在数组的任意位置删除指定数量的项并在当前位置插入新项。删除任意数量的项,需指定两个参数:第一个参数指定要删除的第一个项的位置,第二个参数是要删除的项数。如 splice(0,2)会删除当前数组的前两项。插入任意数量的项,需指定三个参数:第一个参数指定要插入的第一个项的位置,第二个参数是0,第三至n个参数是需要插入的任意的项。如splice(2,0,'a','b')替换任意数量的项,需指定三个参数:第一个参数指定需替换的第一个项的位置,第二个参数指定需替换的项的个数,第三个以后的参数为要替换的新项。如splice(2,2,'a','b') var cars = ['Mercedes-benz','BMW','Audi']; cars.splice(0,1); // ['BMW','Audi']; cars.splice(0,0,"Mercedes-benz"); // ["Mercedes-benz", "BMW", "Audi"] cars.splice(2,1,"Tesla"); // ["Mercedes-benz", "BMW", "Tesla"] 项的位置ES5中提供了两个位置方法 indexOf() 和 lastIndexOf()。这两个方法都接收两个参数,第一个参数为要查找的项,第二个参数为在数组中查找时的起点位置。这两个方法的唯一区别在于indexOf由前往后查找,lastindexof是由后往前查找。它们都返回要查找的项在数组中的位置,如果没找到则返回 -1 。在比较参数是否与数组中的项相等时是使用全等操作符(===)。 var cars = ['Mercedes-benz','BMW','Audi','Tesla']; cars.indexOf('BMW'); // cars.indexOf('bmw'); // -1 cars.indexOf('BMW',1); // cars.indexOf('BMW',2); // -1 var cars = ['Mercedes-benz','BMW','Audi','Tesla']; cars.lastIndexOf('BMW'); // cars.lastIndexOf('bmw'); // -1 cars.lastIndexOf('BMW',0); // -1 cars.lastIndexOf('BMW',2); // 数组排序实际应用中经常会遇到要对数组进行排序的情况,javascript中有两个可以直接用来排序的法:reverse()和sort()。一个用来反转数组排序,另一个用来排序。 var cars = ['Mercedes-benz','BMW','Audi','Tesla']; var numbers = [1,2,3,14,15,16]; cars.sort(); // ["Audi", "BMW", "Mercedes-benz", "Tesla"] numbers.sort(); // [1, 14, 15, 16, 2, 3] cars.reverse(); // ["Tesla", "Mercedes-benz", "BMW", "Audi"] numbers.reverse(); // [3, 2, 16, 15, 14, 1] reverse()方法可以反转数组中的项。sort() 方法在排序时会调用较数组中各项的toString()然后进行比较,所以在对numbers 排序后,数组项“16”排在了"2"和“3”前面。由此可见,默认情况下sort()在排序时并不总是如人所愿。其实sort方法还可以接收一个比较函数作为参数以干预sort()的排序行为。比较函数接受两个参数,第一个参数应该位于第二个参数前则返回负数,如果两个参数相等返回0,如果第一个参数应该位于第二个参数后面则返回正数。 numbers.sort(compare); // [1, 2, 3, 14, 15, 16] function compare(item1,item2){ return item1 - item2; } 数组迭代ES5中定义了迭代数组的方法,每个方法都接受两个参数,第一个参数为要在每个项上执行的函数,第二个参数为作用域对象(可选)。传入这些方法的函数接受3个参数:数组中的项、该项在数组中的索引、数组本身。every() 对数组中的每个项执行给定函数,如果每项都返回true则返回true。some() 对数组中的每个项执行给定函数,如果任何一项返回true则返回true。filter() 对数组中的每个项执行给定函数,返回所有返回值为true的项组成的数组。map() 对数组中的每个项执行给定函数,返回每个数组项的执行结果组成的数组。forEach() 对数组中的每个项执行给定函数。 var cars = ['Mercedes-benz','BMW','Audi','Tesla']; cars.every(function(item, index, arr){return item.length>4}); // false cars.some(function(item, index, arr){return item.length>4}); // true cars.filter(function(item, index, arr){return item.length>4}); // ["Mercedes-benz", "Tesla"] cars.map(function(item, index, arr){return 'New-' + item}); // ["New-Mercedes-benz", "New-BMW", "New-Audi", "New-Tesla"] cars.forEach(function(item, index, arr){ // code }); reduce() 和 reduceRight() 会逐个遍历数组中的每个项,并用给定函数将前两项的计算结果作为基础参与下一个项的计算,依次递归,直至结束。reduceRight与reduce的不同之处仅仅在于递归顺序的不同,reduceRight是从结尾向前递归。 var numbers = [1, 2, 3, 4, 5, 6, 7]; var sum = numbers.reduce(function(pre, cur, index, arr){ return pre + cur; }); console.log(sum); // 总结javascript中有很多对数组进行操作的方法,熟练使用它们非常有助你提高写代码的速度和代码执行的效率(一般情况下,要尽量避免自己实现JS已有的方法),需要注意的是部分方法是 ES5 中新增的,使用时需考虑浏览器支持情况。
    2022-09-22 4
  • JavaScript实现把rgb颜色转换成16进制颜色和16进制颜色转换成rgb颜色 JavaScript实现把rgb颜色转换成16进制颜色和16进制颜色转换成rgb颜色

    JavaScript实现把rgb颜色转换成16进制颜色和16进制颜色转换成rgb颜色

    本文章是以prototype原型的方式,给string字符串类型添加方法,用于实现颜色值格式的转换。如果你不用原型方法,那么你只要借鉴实现方法就好了。RGB转换为16进制 String.prototype.colorHex = function () { // RGB颜色值的正则 var reg = /^(rgb|RGB)/; var color = this; if (reg.test(color)) { var strHex = "#"; // 把RGB的3个数值变成数组 var colorArr = color.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(","); // 转成16进制 for (var i = 0; i < colorArr.length; i++) { var hex = Number(colorArr[i]).toString(16); if (hex === "0") { hex += hex; } strHex += hex; } return strHex; } else { return String(color); } }; 使用方法: "rgb(255,255,255)".colorHex(); // #ffffff 16进制转换为RGB String.prototype.colorRgb = function () { // 16进制颜色值的正则 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; // 把颜色值变成小写 var color = this.toLowerCase(); if (reg.test(color)) { // 如果只有三位的值,需变成六位,如:#fff => #ffffff if (color.length === 4) { var colorNew = "#"; for (var i = 1; i < 4; i += 1) { colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1)); } color = colorNew; } // 处理六位的颜色值,转为RGB var colorChange = []; for (var i = 1; i < 7; i += 2) { colorChange.push(parseInt("0x" + color.slice(i, i + 2))); } return "RGB(" + colorChange.join(",") + ")"; } else { return color; } }; 使用方法: "#fff".colorRgb(); // rgb(255,255,255) "#ffffff".colorRgb(); // rgb(255,255,255)
    2022-09-15 11
  • JavaScript 获取图片尺寸和字节大小 JavaScript 获取图片尺寸和字节大小

    JavaScript 获取图片尺寸和字节大小

    本地图片字节大小本地图片是比较简单的,使用 File Api 即可 <input type="file" id = 'file' multiple/><br/> <script> document.getElementById("file").addEventListener("change", selectFile, false); function selectFile(e) { var files = e.target.files; console.log(files[i].size); } </script> 宽高需要使用 FileReader 来宽高 dataurl,然后使用 Image 来获取宽高。 <input type="file" id = 'file' multiple/><br/> <script> document.getElementById("file").addEventListener("change", selectFile, false); function selectFile(e) { var files = e.target.files; var f = files[0]; var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { var img = new Image(); img.src = e.target.result; img.onload = function(){ console.log(img.width); console.log(img.height); }; }; })(f); reader.readAsDataURL(f); } </script> 网络图片字节大小通过 fetch 请求获取字节大小,在这里获取头信息 Content-Length 为空,需要使用 blob 数据中的 size。 <span id='output'></span><br/> <img id="preview" width="300"/> <script> fetch('/images/gzjzz2.png').then(function(res){ return res.blob() }).then(function(data){ document.getElementById("output").innerHTML = `${data.size} bytes` }) document.getElementById("preview").src = '/images/gzjzz2.png' </script> 宽高只需要使用 Image 即可 <span id='output'></span><br/> <img id="preview" width="300"/> <script> var img = new Image(); img.src = '/images/gzjzz2.png'; img.onload = function(){ content = `宽:${img.width} 高:${img.height}` document.getElementById("output").innerHTML = content; }; document.getElementById("preview").src = '/images/gzjzz2.png' </script>
    2022-09-12 8
  • CSS样式大全 CSS样式大全

    CSS样式大全

    1、字体属性:(font)    大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD    样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)    行高 {line-height: normal;}(正常) 单位:PX、PD、EM    粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常)    变体 {font-variant: small-caps;}(小型大写字母) normal;(正常)    大小写 {text-transform: capitalize;}(首字母大写) uppercase;(大写) lowercase;(小写) none;(无)    修饰 {text-decoration: underline;}(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁)    常用字体: (font-family)    "Courier New", Courier, monospace, "Times New Roman", Times, serif, Arial, Helvetica, sans-serif, Verdana2、背景属性: (background)    色彩 {background-color: #FFFFFF;}    图片 {background-image: url();}    重复 {background-repeat: no-repeat;}    滚动 {background-attachment: fixed;}(固定) scroll;(滚动)    位置 {background-position: left;}(水平) top(垂直);    简写方法 {background:#000 url(..) repeat fixed left top;} /*简写·这个在阅读代码中经常出现,要认真的研究*/3、区块属性: (Block) /*这个属性第一次认识,要多多研究*/    字间距 {letter-spacing: normal;} 数值 /*这个属性似乎有用,多实践下*/    对齐 {text-align: justify;}(两端对齐) left;(左对齐) right;(右对齐) center;(居中)    缩进 {text-indent: 数值px;}    垂直对齐 {vertical-align: baseline;}(基线) sub;(下标) super;(下标) top; text-top; middle; bottom; text-bottom;    词间距word-spacing: normal; 数值    空格white-space: pre;(保留) nowrap;(不换行)    显示 {display:block;}(块) inline;(内嵌) list-item;(列表项) run-in;(追加部分) compact;(紧凑) marker;(标记) table; inline-table; table-raw-group; table-header-group; table-footer-group; table-raw; table-column-group; table-column; table-cell; table-caption;(表格标题) /*display 属性的了解很模糊*/4、方框属性: (Box)    width:; height:; float:; clear:both; margin:; padding:; 顺序:上右下左5、边框属性: (Border)    border-style: dotted;(点线) dashed;(虚线) solid; double;(双线) groove;(槽线) ridge;(脊状) inset;(凹陷) outset;    border-width:; 边框宽度    border-color:#;    简写方法border:width style color; /*简写*/6、列表属性: (List-style)    类型list-style-type: disc;(圆点) circle;(圆圈) square;(方块) decimal;(数字) lower-roman;(小罗码数字) upper-roman; lower-alpha; upper-alpha;    位置list-style-position: outside;(外) inside;    图像list-style-image: url(..);7、定位属性: (Position)    Position: absolute; relative; static;    visibility: inherit; visible; hidden;    overflow: visible; hidden; scroll; auto;    clip: rect(12px,auto,12px,auto) (裁切)8、css属性代码大全:1)、 CSS文字属性:    color : #999999; /*文字颜色*/    font-family : 宋体,sans-serif; /*文字字体*/    font-size : 9pt; /*文字大小*/    font-style:itelic; /*文字斜体*/    font-variant:small-caps; /*小字体*/    letter-spacing : 1pt; /*字间距离*/    line-height : 200%; /*设置行高*/    font-weight:bold; /*文字粗体*/    vertical-align:sub; /*下标字*/    vertical-align:super; /*上标字*/    text-decoration:line-through; /*加删除线*/    text-decoration: overline; /*加顶线*/    text-decoration:underline; /*加下划线*/    text-decoration:none; /*删除链接下划线*/    text-transform : capitalize; /*首字大写*/    text-transform : uppercase; /*英文大写*/    text-transform : lowercase; /*英文小写*/    text-align:right; /*文字右对齐*/    text-align:left; /*文字左对齐*/    text-align:center; /*文字居中对齐*/    text-align:justify; /*文字分散对齐*/    vertical-align属性    vertical-align:top; /*垂直向上对齐*/    vertical-align:bottom; /*垂直向下对齐*/    vertical-align:middle; /*垂直居中对齐*/    vertical-align:text-top; /*文字垂直向上对齐*/    vertical-align:text-bottom; /*文字垂直向下对齐*/2)、CSS边框空白    padding-top:10px; /*上边框留空白*/    padding-right:10px; /*右边框留空白*/    padding-bottom:10px; /*下边框留空白*/    padding-left:10px; /*左边框留空白3)、CSS符号属性:    list-style-type:none; /*不编号*/    list-style-type:decimal; /*阿拉伯数字*/    list-style-type:lower-roman; /*小写罗马数字*/    list-style-type:upper-roman; /*大写罗马数字*/    list-style-type:lower-alpha; /*小写英文字母*/    list-style-type:upper-alpha; /*大写英文字母*/    list-style-type:disc; /*实心圆形符号*/    list-style-type:circle; /*空心圆形符号*/    list-style-type:square; /*实心方形符号*/    list-style-image:url(/dot.gif); /*图片式符号*/    list-style-position: outside; /*凸排*/    list-style-position:inside; /*缩进*/4)、CSS背景样式:    background-color:#F5E2EC; /*背景颜色*/    background:transparent; /*透视背景*/    background-image : url(/image/bg.gif); /*背景图片*/    background-attachment : fixed; /*浮水印固定背景*/    background-repeat : repeat; /*重复排列-网页默认*/    background-repeat : no-repeat; /*不重复排列*/    background-repeat : repeat-x; /*在x轴重复排列*/    background-repeat : repeat-y; /*在y轴重复排列*/    指定背景位置    background-position : 90% 90%; /*背景图片x与y轴的位置*/    background-position : top; /*向上对齐*/    background-position : buttom; /*向下对齐*/    background-position : left; /*向左对齐*/    background-position : right; /*向右对齐*/    background-position : center; /*居中对齐*/5)、CSS连接属性:    a /*所有超链接*/    a:link /*超链接文字格式*/    a:visited /*浏览过的链接文字格式*/    a:active /*按下链接的格式*/    a:hover /*鼠标转到链接*/    鼠标光标样式:    链接手指 CURSOR: hand    十字体 cursor:crosshair    箭头朝下 cursor:s-resize    十字箭头 cursor:move    箭头朝右 cursor:move    加一问号 cursor:help    箭头朝左 cursor:w-resize    箭头朝上 cursor:n-resize    箭头朝右上 cursor:ne-resize    箭头朝左上 cursor:nw-resize    文字I型 cursor:text    箭头斜右下 cursor:se-resize    箭头斜左下 cursor:sw-resize    漏斗 cursor:wait    光标图案(IE6) p {cursor:url("光标文件名.cur"),text;}6)、CSS框线一览表:    border-top : 1px solid #6699cc; /*上框线*/    border-bottom : 1px solid #6699cc; /*下框线*/    border-left : 1px solid #6699cc; /*左框线*/    border-right : 1px solid #6699cc; /*右框线*/    以上是建议书写方式,但也可以使用常规的方式 如下:    border-top-color : #369 /*设置上框线top颜色*/    border-top-width :1px /*设置上框线top宽度*/    border-top-style : solid/*设置上框线top样式*/    其他框线样式    solid /*实线框*/    dotted /*虚线框*/    double /*双线框*/    groove /*立体内凸框*/    ridge /*立体浮雕框*/    inset /*凹框*/    outset /*凸框*/7)、CSS表单运用:    文字方块    按钮    复选框    选择钮    多行文字方块    下拉式菜单 选项1选项28)、CSS边界样式:    margin-top:10px; /*上边界*/    margin-right:10px; /*右边界值*/    margin-bottom:10px; /*下边界值*/    margin-left:10px; /*左边界值*/9、CSS 属性:1)、字体样式(Font Style)    序号 中文说明 标记语法    1 字体样式 {font:font-style font-variant font-weight font-size font-family}    2 字体类型 {font-family:"字体1","字体2","字体3",...}    3 字体大小 {font-size:数值|inherit| medium| large| larger| x-large| xx-large| small| smaller| x-small| xx-small}    4 字体风格 {font-style:inherit|italic|normal|oblique}    5 字体粗细 {font-weight:100-900|bold|bolder|lighter|normal;}    6 字体颜色 {color:数值;}    7 阴影颜色 {text-shadow:16位色值}    8 字体行高 {line-height:数值|inherit|normal;}    9 字 间 距 {letter-spacing:数值|inherit|normal}    10 单词间距 {word-spacing:数值|inherit|normal}    11 字体变形 {font-variant:inherit|normal|small-cps }    12 英文转换 {text-transform:inherit|none|capitalize|uppercase|lowercase}    13 字体变形 {font-size-adjust:inherit|none}    14 字体 {font-stretch:condensed|expanded|extra-condensed|extra-expanded|inherit|narrower|normal| semi-condensed|semi-expanded|ultra-condensed|ultra-expanded|wider}2)、文本样式(Text Style)    序号 中文说明 标记语法    1 行 间 距 {line-height:数值|inherit|normal;}    2 文本修饰 {text-decoration:inherit|none|underline|overline|line-through|blink}    3 段首空格 {text-indent:数值|inherit}    4 水平对齐 {text-align:left|right|center|justify}    5 垂直对齐 {vertical-align:inherit|top|bottom|text-top|text-bottom|baseline|middle|sub|super}    6 书写方式 {writing-mode:lr-tb|tb-rl}3)、背景样式    序号 中文说明 标记语法    1 背景颜色 {background-color:数值}    2 背景图片 {background-image: url(URL)|none}    3 背景重复 {background-repeat:inherit|no-repeat|repeat|repeat-x|repeat-y}    4 背景固定 {background-attachment:fixed|scroll}    5 背景定位 {background-position:数值|top|bottom|left|right|center}    6 背影样式 {background:背景颜色|背景图象|背景重复|背景附件|背景位置}4)、框架样式(Box Style)    序号 中文说明 标记语法    1 边界留白 {margin:margin-top margin-right margin-bottom margin-left}    2 补  白 {padding:padding-top padding-right padding-bottom padding-left}    3 边框宽度 {border-width:border-top-width border-right-width border-bottom-width border-left-width}      宽度值: thin|medium|thick|数值    4 边框颜色 {border-color:数值 数值 数值 数值}  数值:分别代表top、right、bottom、left颜色值    5 边框风格 {border-style:none|hidden|inherit|dashed|solid|double|inset|outset|ridge|groove}    6 边  框 {border:border-width border-style color}    上 边 框 {border-top:border-top-width border-style color}    右 边 框 {border-right:border-right-width border-style color}    下 边 框 {border-bottom:border-bottom-width border-style color}    左 边 框 {border-left:border-left-width border-style color}    7 宽  度 {width:长度|百分比| auto}    8 高  度 {height:数值|auto}    9 漂  浮 {float:left|right|none}    10 清  除 {clear:none|left|right|both}5)、分类列表    序号 中文说明 标记语法    1 控制显示 {display:none|block|inline|list-item}    2 控制空白 {white-space:normal|pre|nowarp}    3 符号列表 {list-style-type:disc|circle|square|decimal|lower-roman|upper-roman|lower-alpha|upper-alpha|none}    4 图形列表 {list-style-image:URL}    5 位置列表 {list-style-position:inside|outside}    6 目录列表 {list-style:目录样式类型|目录样式位置|url}    7 鼠标形状 {cursor:hand|crosshair|text|wait|move|help|e-resize|nw-resize|w-resize|s-resize|se-resize|sw-resize}
    2022-09-10 9
  • js常用公共方法-防抖节流插槽版(可用于防止重复提交) js常用公共方法-防抖节流插槽版(可用于防止重复提交)

    js常用公共方法-防抖节流插槽版(可用于防止重复提交)

    /** * 防抖函数(可用于防止重复提交), 就是指触发事件后在 n 秒内函数只能执行一次 * 节流函数, 就是指连续触发事件但是在 n 秒中只执行一次函数。节流会稀释函数的执行频率 * * @param func 执行函数 * @param time 执行时间间隔 * @param isDebounce 是否防抖或者节流 * @param ctx event */ const debounce = (func, time, isDebounce, ctx) => { var timer, lastCall, rtn; // 防抖函数 if (isDebounce) { rtn = (...params) => { if (timer) clearTimeout(timer); timer = setTimeout(() => { func.apply(ctx, params); }, time); }; // 节流函数 } else { rtn = (...params) => { const now = new Date().getTime(); if (now - lastCall < time && lastCall) return; lastCall = now; func.apply(ctx, params); }; } return rtn; }; export default { name: 'Debounce', abstract: true, props: { time: { type: Number, default: 800, }, events: { type: String, default: 'click', }, isDebounce: { type: Boolean, default: true, }, }, created() { this.eventKeys = this.events.split(','); this.originMap = {}; this.debouncedMap = {}; }, render() { const vnode = this.$slots.default[0]; this.eventKeys.forEach(key => { const target = vnode.data.on[key]; if (target === this.originMap[key] && this.debouncedMap[key]) { vnode.data.on[key] = this.debouncedMap[key]; } else if (target) { this.originMap[key] = target; this.debouncedMap[key] = debounce( target, this.time, this.isDebounce, vnode ); vnode.data.on[key] = this.debouncedMap[key]; } }); return vnode; }, }; 使用方法: <Debounce :time='200' > <el-button @click.native="handleUserLogin">登录</el-button> </Debounce> main.js // 防抖 or 节流 import Debounce from '@/utils/debounce' Vue.component('Debounce', Debounce)
    2022-09-10 10
  • js常用公共方法-判断当前环境是否是微信环境 js常用公共方法-判断当前环境是否是微信环境

    js常用公共方法-判断当前环境是否是微信环境

    /** * 判断当前环境是否是微信环境 */ function isWeixin(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i) == "micromessenger") { return true; } else { return false; } }
    2022-09-10 10
  • js常用公共方法-判断是在手机端|平板端|PC端 js常用公共方法-判断是在手机端|平板端|PC端

    js常用公共方法-判断是在手机端|平板端|PC端

    /** * 判断是在手机端|平板端|PC端 * @returns 0:手机端 1:PC端 2:平板端 */ function os(){ var ua = navigator.userAgent; isWindowsPhone = /(?:Windows Phone)/.test(ua), isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone, isAndroid = /(?:Android)/.test(ua), isFireFox = /(?:Firefox)/.test(ua), isChrome = /(?:Chrome|CriOS)/.test(ua), isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)), isPhone = /(?:iPhone)/.test(ua) && !isTablet, isPc = !isPhone && !isAndroid && !isSymbian; if (isAndroid || isPhone) { return 0 } else if(isPc) { return 1 } else if (isTablet) { return 2 } }
    2022-09-10 11
  • js常用公共方法-金额大写 js常用公共方法-金额大写

    js常用公共方法-金额大写

    /** * 金额大写 * @param price 要转换大写的金额 */ function digitUppercase(price) { let fraction = ['角', '分']; let digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; let unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; let head = price < 0 ? '欠' : ''; price = Math.abs(price); let s = ''; for (let i = 0; i < fraction.length; i++) { s += (digit[Math.floor(price * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, ''); } s = s || '整'; price = Math.floor(price); for (let i = 0; i < unit[0].length && price > 0; i++) { let p = ''; for (var j = 0; j < unit[1].length && price > 0; j++) { p = digit[price % 10] + unit[1][j] + p; price = Math.floor(price / 10); } s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s; } return head + s.replace(/(零.)*零元/, '元') .replace(/(零.)+/g, '零') .replace(/^整$/, '零元整'); }
    2022-09-10 10
  • js常用公共方法-检测密码强度 js常用公共方法-检测密码强度

    js常用公共方法-检测密码强度

    /** * 检测密码强度 * @param str 字符串 * @returns 1:密码弱 2:密码中等 3:密码强 4:密码很强 */ function checkPwd(str) { var nowLv = 0; if (str.length < 6) { return nowLv }; if (/[0-9]/.test(str)) { nowLv++ }; if (/[a-z]/.test(str)) { nowLv++ }; if (/[A-Z]/.test(str)) { nowLv++ }; if (/[\.|-|_]/.test(str)) { nowLv++ }; return nowLv; }
    2022-09-10 12