添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
欢快的围巾  ·  Configuring Cesium to ...·  4 月前    · 
风流的板栗  ·  香港閱讀城·  10 月前    · 
考研的台灯  ·  OH 3.3.0 Frontail not ...·  11 月前    · 
知识渊博的斑马  ·  Excel ...·  2 年前    · 
自信的胡萝卜  ·  Nosql-neo4j-Cypher 语句 ...·  2 年前    · 
LayUI table中使用progress渲染问题 今天做施工进度进度条的时候,发现如果直接设置返回,是无效果的,需要在LayUI数据表格渲染完成后,重新渲染element元素。因为table渲染完成并不会渲染其他组件。table.render({ elem: "#LAY-app-list-xxx", url: "xxx" , cols: [[ xxxxxx field: 'Progress', width: 200, title: '维修进度', align: "center", templet: function(d) { var color = ''; if(30<d.Progress && d.Progress<100){ color='layui-bg-orange' }else if(0<d.Progress && d.Progress<=30){ color='layui-bg-red' return '<div class="layui-progress layui-progress-big" lay-showpercent="true"><div class="layui-progress-bar '+color+'" lay-percent="'+d.Progress+'%"></div></div><br>' ,xxxx ,xxxxx , done: function (res, currentCount) { //table渲染完成后渲染element进度条 element.render();
  • 2021年06月09日
  • 869 阅读
  • 今天在看文章 浅谈前端水印 的时候想到如果要整个网页添加水印怎么处理呢?搜索到一个简单的方法,测试可用。可视水印let watermark = {} let setWatermark = (str) => { let id = '1.23452384164.123412415' if (document.getElementById(id) !== null) { document.body.removeChild(document.getElementById(id)) let canvas = document.createElement('canvas') canvas.width = 280; canvas.height = 120; let context = canvas.getContext('2d'); context.rotate(-20 * Math.PI / 180); context.font = '15px Vedana'; context.fillStyle = 'rgba(180, 180, 180, 0.3)'; context.textAlign = 'left'; context.textBaseline = 'Middle'; context.fillText(str, canvas.width / 20, canvas.height); let div = document.createElement('div'); div.id = id; div.style.pointerEvents = 'none'; div.style.top = '3px'; div.style.left = '0px'; div.style.position = 'fixed'; div.style.zIndex = '100000'; div.style.width = document.documentElement.clientWidth + 'px'; div.style.height = document.documentElement.clientHeight + 'px'; div.style.background = 'url(' + canvas.toDataURL('image/png') + ') left top repeat'; document.body.appendChild(div); return id; // 该方法只允许调用一次 watermark.set = (str) => { setWatermark(str); // let id = setWatermark(str) // setInterval(() => { // if (document.getElementById(id) === null) { // id = setWatermark(str) // } // }, 2000) window.onresize = () => { setWatermark(str) export default watermark;使用方法:watermark.set('xxxxxx')参考: 网页添加水印隐藏水印作者:Mize 链接:https://www.zhihu.com/question/50677827/answer/122388524 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 function watermark(settings) { //默认设置 var defaultSettings={ watermark_txt:"text", watermark_x:20,//水印起始位置x轴坐标 watermark_y:20,//水印起始位置Y轴坐标 watermark_rows:5,//水印行数 watermark_cols:5,//水印列数 watermark_x_space:10,//水印x轴间隔 watermark_y_space:90,//水印y轴间隔 watermark_color:'#000000',//水印字体颜色 watermark_alpha:0.005,//水印透明度 watermark_fontsize:'80px',//水印字体大小 watermark_font:'微软雅黑',//水印字体 watermark_width:500,//水印宽度 watermark_height:90,//水印长度 watermark_angle:25//水印倾斜度数 //采用配置项替换默认值,作用类似jquery.extend if(arguments.length===1&&typeof arguments[0] ==="object" ) var src=arguments[0]||{}; for(key in src) if(src[key]&&defaultSettings[key]&&src[key]===defaultSettings[key]) continue; else if(src[key]) defaultSettings[key]=src[key]; var oTemp = document.createDocumentFragment(); //获取页面最大宽度 var page_width = Math.max(document.body.scrollWidth,document.body.clientWidth); //获取页面最大长度 var page_height = Math.max(document.body.scrollHeight,document.body.clientHeight); //如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔 if (defaultSettings.watermark_cols == 0 || (parseInt(defaultSettings.watermark_x + defaultSettings.watermark_width *defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (defaultSettings.watermark_cols - 1)) > page_width)) { defaultSettings.watermark_cols = parseInt((page_width-defaultSettings.watermark_x+defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space)); defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1)); //如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔 if (defaultSettings.watermark_rows == 0 || (parseInt(defaultSettings.watermark_y + defaultSettings.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (defaultSettings.watermark_rows - 1)) > page_height)) { defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space)); defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1)); var x; var y; for (var i = 0; i < defaultSettings.watermark_rows; i++) { y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i; for (var j = 0; j < defaultSettings.watermark_cols; j++) { x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j; var mask_div = document.createElement('div'); mask_div.id = 'mask_div' + i + j; mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt)); //设置水印div倾斜显示 mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)"; mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)"; mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)"; mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)"; mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)"; mask_div.style.visibility = ""; mask_div.style.position = "absolute"; //选不中 mask_div.style.left = x + 'px'; mask_div.style.top = y + 'px'; mask_div.style.overflow = "hidden"; mask_div.style.zIndex = "9999"; mask_div.style.pointerEvents = "none"; //mask_div.style.border="solid #eee 1px"; mask_div.style.opacity = defaultSettings.watermark_alpha; mask_div.style.fontSize = defaultSettings.watermark_fontsize; mask_div.style.color = defaultSettings.watermark_color; mask_div.style.textAlign = "center"; mask_div.style.width = defaultSettings.watermark_width + 'px'; mask_div.style.height = defaultSettings.watermark_height + 'px'; mask_div.style.display = "block"; oTemp.appendChild(mask_div); document.body.appendChild(oTemp); watermark({ watermark_txt:'hello'})浏览器终端下粘贴上面的代码,它的作用是在当前页面上增加了一个透明度只有0.005的很多hello的水印。截图后,是看不出来水印的,把图片放到PS里面,建一个图层在上面。全部填充为黑色,混合模式选择正片叠底这一类的(也就是让亮的更亮,暗的更暗),就可以看到水印了~所以两者结合起来😎,有时间整理下,这里先做下记录。
  • 2021年06月02日
  • 727 阅读
  • array.forEach和$.each()及$().each()的用法与区别 1.$.each():方法是jQuery中的方法,用于遍历数组或对象。用法:$.each(array,function(index,value){...}),有两个参数,第一个为待遍历的数组或对象,第二个为回调函数,函数中的两个参数,index为当前遍历到的元素下标或对象的key,value为当前遍历到的数组元素或对象的值。2.$().each():一看带有$,顾名思义也是jQuery中的方法,多用于遍历dom数组。用法$('selector').each(function(index,value){...})。3.forEach:即Array.prototype.forEach,只有数组才有的方法,等同于过去的for循环遍历数组。用法:arr.forEach(function(item,index,array){...}),其中回调函数有3个参数,item为当前遍历到的元素,index为当前遍历到的元素下标,array为数组本身。forEach方法不会跳过null和undefined元素。比如数组[1,undefine,null, ,2]中的四个元素都将被遍历到,注意与map的区别。【1】$('selector').each(function(index,value){...})$("input[name='ch']").each(function(index,value){ if($(this).attr("checked")==true){ //一些操作代码 }【2】$.each(array,function(index,value){})遍历对象 var obj = { one:1, two:2, three:3, four:4, five:5 }; $.each(obj, function(key, val) { console.log(key+":"+val); var arr1 = [ "one", "two", "three", "four", "five" ]; $.each(arr1, function(){ alert(this); });【3】arr.forEach(function(item,index,array){...})var arr=[1,2,3,4]; arr.forEach(function(val,index,arr){ arr[index]=2*val; console.log(arr);//结果是修改了原数组,为每个数乘以2
  • 2021年05月14日
  • 408 阅读
  • table.on('edit("tableId")', function (obj) { // 单元格编辑之前的值 var oldText = $(this).prev().text(); if (obj.data.IsPost == 1) { //重新赋值 $(this).val(oldText); layer.msg('已邮寄信息不可修改', { icon: 5, time: 2000 }); return; var value = obj.value //得到修改后的值 , data = obj.data //得到所在行所有键值 , field = obj.field; //得到字段
  • 2021年04月07日
  • 161 阅读
  • Webpack踩坑 无法解析Jquery及webpack-cli 最近在学习Vue,使用到webpack的时候,出现了错误,可能是3和4的版本问题webpack-dev-server安装好webpack-dev-server后,需要在package.json 的scripts 增加代码 "dev": "webpack-dev-server""scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "webpack-dev-server" 然后此时报错了~~~The CLI moved into a separate package: webpack-cli一大堆,一开始没看懂,搜也没搜明白,最后发现好简单,实际就是安装webpack-cli就好了无法解析jquery Module not found: Error: Can't resolve 'jquery' in 'F:Studywebpack-studysrc'看到这个有点懵,我都安装了的,然后也能运行起来,结果就是报这个错。由于jquery.placholder.min.js将UMD用作加载策略,因此它认识到它是通过require- 必需的,并尝试以相同的方式要求使用jQuery:"object"==typeof module&&module.exports?require("jquery"):jQueryWebpack查看require("jquery")并尝试捆绑jQuery库(在node_modules中不存在)解决方案是将jQuery作为外部添加到您的webpack.config.js:{ externals: { // require("jquery") is external and available // on the global var jQuery "jquery": "jQuery" }当模块标记为外部模块时,Webpack不会捆绑该模块,而是使用全局变量。参考资料:webpack Can't resolve 'jquery'.em。。。。上边的并不合适。。。还是使用ProvidePlugin的吧自动加载模块,而不必到处 import 或 require 。new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' })然后把import的地方干掉...参考资料:webpackjs ProvidePlugin.
  • 2020年04月16日
  • 17 阅读
  • JS/JQuery操作DOM元素笔记 原因自己目前在搭建一个.NET Core的框架,正在构建权限这块的东西,今天设置权限界面,需要使用JavaScript操作DOM元素,记录一下。页面大概是酱紫的(我使用的AdminLTE和LayUI,AdminLTE用的是一个大神改的,链接https://github.com/weituotian/AdminLTE-With-Iframe):我的需求就是如果用户要用除查询之外的权限,必须要有查询权限才可以,如果没有查询权限,则不能具有其他权限,这里记录的只是前端JavaScript的操作,不包含后台验证。比如我测试1下ces的管理选中的时候,要自动选中查询按钮。当查询按钮取消选中的时候,要把后边选中的按钮取消选中。主要是操作DOM模拟点击:$('.layui-form-checkbox').on('click', function (e) { debugger; //如果是选中的话,判断是不是Query 查询权限,不是的话,要先选中查询权限 if (this.classList.contains("layui-form-checked")) { //如果不是Query 并且Query 也没选中 if (this.previousElementSibling.name !== "Query" && !$(this).parent().find('input[name="Query"]').next()[0].classList.contains( "layui-form-checked")) { //让Query节点的那个点击选中 $(this).parent().find('input[name="Query"]').next().click(); } else { //不是选中状态,判断是不是Query 如果是Query 取消选中,那么后边的也应该取消选中 if (this.previousElementSibling.name === "Query") { $(this).parent().find('input[name!="Query"]').next().each(function(index, item) { if (item.classList.contains("layui-form-checked")) { $(item).click(); });知识点JQueryjQuery.parent(expr)//找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class") jQuery.parents(expr)//类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素 jQuery.children(expr)//返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点 jQuery.contents()//返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个jQuery对象返回,children()则只会返回节点 jQuery.prev()//返回上一个兄弟节点,不是所有的兄弟节点 jQuery.prevAll()//返回所有之前的兄弟节点 jQuery.next()//返回下一个兄弟节点,不是所有的兄弟节点 jQuery.nextAll()//返回所有之后的兄弟节点 jQuery.siblings()//返回兄弟姐妹节点,不分前后 jQuery.find(expr)//跟jQuery.filter(expr)完全不一样: jQuery.filter()//是从初始的jQuery对象集合中筛选出一部分,而 jQuery.find()//的返回结果,不会有初始集合中的内容,比如$("p").find("span"),是从<p>元素开始找<span>,等同于$("p span") JavaScript var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSibling; //获得s的下一个兄弟节点 var ps=s.previousSibling; //得到s的上一个兄弟节点 var fc=s.firstChild; //获得s的第一个子节点 var lc=s.lastChild; //获得s的最后一个子节点
  • 2019年05月15日
  • 49 阅读
  •