• Tools
  • js转化为树状数据
    /** * 构造树型结构数据 * @param {*} data 数据源 * @param {*} id id字段 默认 'id' * @param {*} parentId 父节点字段 默认 'parentId' * @param {*} children 孩子节点字段 默认 'children' */export function handleTree(data, id, parentId, children) {  let config = {    id: id || 'id',    parentId: parentId || 'parentId',    childrenList: children || 'children'  };   var childrenListMap = {};  var nodeIds = {};  var tree = [];   for (let d of data) {    let parentId = d[config.parentId];    if (childrenListMap[parentId] == null) {      childrenListMap[parentId] = [];    }    nodeIds[d[config.id]] = d;    childrenListMap[parentId].push(d);  }   for (let d of data) {    let parentId = d[config.parentId];    if (nodeIds[parentId] == null) {      tree.push(d);    }  }   for (let t of tree) {    adaptToChildrenList(t);  }   function adaptToChildrenList(o) {    if (childrenListMap[o[config.id]] !== null) {      o[config.childrenList] = childrenListMap[o[config.id]];    }    if (o[config.childrenList]) {      for (let c of o[config.childrenList]) {        adaptToChildrenList(c);      }    }  }  return tree;}
  • css怎么让文字竖着排列?
    p {  writing-mode: vertical-rl;}其中,vertical-rl表示竖排方向为从上至下,文字从右向左排列。还可以使用vertical-lr来实现文字从左向右排列。 需要注意的是,竖排文字在不同浏览器中的效果可能会有所不同,需要进行兼容性测试。writing-mode是CSS3的属性之一,用于控制元素的书写方式,包括从左到右、从右到左、从上到下以及从下到上等多种方式。下面是使用writing-mode属性的方法:语法格式:plaintextCopy codewriting-mode: horizontal-tb | vertical-rl | vertical-lr;属性值:horizontal-tb:表示从左到右,从上到下的水平书写方式,是浏览器默认的书写方式,不需要使用writing-mode属性来指定。vertical-rl:表示从上到下,从右到左的竖直书写方式,即文字顺序是从右向左排列。vertical-lr:表示从上到下,从左到右的竖直书写方式,即文字顺序是从左向右排列。示例代码:/* 将段落中的文字竖排 */p {  writing-mode: vertical-rl;}/* 将div中的文字从下到上竖排 */div {  writing-mode: vertical-lr;}需要注意的是,writing-mode属性可能会影响元素的布局和位置,需要根据实际情况进行调整。
  • JS中find方法的使用
    一:概念find()方法用于查找数组中符合条件的第一个元素,如果没有符合条件的元素,则返回undefined注意: find()对于空数组,函数是不会执行的。 find()并没有改变数组的原始值。二:语法array.find(function(currentValue, index, arr),thisValue)参数callback:必须。为数组中每个元素执行的函数,该函数接受三个参数:currentValue:必须。数组中正在处理的当前元素。index:可选。当前元素的索引值。arr:可选。当前元素所在的数组对象。thisValue:可选。传递给函数的值一般用"this"值。如果这个参数为空,"undefined"会传递给"this"值三:实例1、求数组中第一个大于1的值let arr1 = [1, 2, 3, 4, 5];let num = arr1.find(item => item > 1);console.log(num)  //輸出的結果是22、提取第一个id为1的对象 var arr = [{        id: 1,        name: '张一',        age: 25,        class: '一班'    }, {        id: 1,        name: '张二',        age: 25,        class: '二班'    }, {        id: 2,        name: '张三',        age: 25,        class: '三班'    }]    let obj = arr.find(item => item.id == 1)    console.log(obj);     // 结果:{id: 1, name: '张一', age: 25, class: '一班'}
  • Git操作之 git add 撤销、git commit 撤销
    1、gitadd添加多余文件撤销操作gitresetHEAD后面什么都不跟的,就是上一次add里面的内容全部撤销gitresetHEADXXX后面跟文件名,就是对某个文件进行撤销2、gitcommit撤销操作gitreset--softHEAD^ 这样就成功的撤销了commit操作注意,仅仅是撤回commit操作,您写的代码仍然保留。gitreset其他参数说明:--mixed 意思是:不删除工作空间改动代码,撤销commit,并且撤销gitadd.操作这个为默认参数,gitreset--mixedHEAD^和gitresetHEAD^效果是一样的。--soft 不删除工作空间改动代码,撤销commit,不撤销gitadd. --hard删除工作空间改动代码,撤销commit,撤销gitadd. 注意完成这个操作后,就恢复到了上一次的commit状态。commit注释写错了,只是想改一下注释,只需要:gitcommit--amend此时会进入默认vim编辑器,修改注释完毕后保存就好了。原文链接:https://blog.csdn.net/w958796636/article/details/53611133
  • js复制字符串内容到剪切板
    可以使用JavaScript的execCommand()方法来实现复制字符串内容到剪切板的功能,具体实现方法如下:1. 创建一个元素,将要复制的字符串内容赋值给该元素的value属性;2. 将该元素添加到文档中;3. 使用execCommand()方法执行“复制”操作;4. 移除该元素。复制字符串采用临时添加一个元素,模拟选中内容进行选中的方式进行复制,复制后移除临时添加的元素即可。Javascript代码:// 创建元素用于复制var el = document.createElement('textarea');// 将字符串放入元素中el.value = text;// 设置元素不可见el.setAttribute('readonly', '');el.style = {position: 'absolute', left: '-9990009px'};document.body.appendChild(el);// 选中元素el.select();// 复制内容document.execCommand('copy');// 移除元素document.body.removeChild(el);alert('复制成功')
  • js location对象详解
    Location对象属性属性描述hash获取网址后面的锚部分,#号开始的urlhost返回一个URL的主机名和端口hostname返回URL的主机名href返回完整的URLpathname返回的URL路径名。port返回一个URL服务器使用的端口号protocol设置或返回当前URL的协议,取值为‘http:’,’https:’,’file:’等等。search设置或返回从问号(?)开始的URL(查询部分)。Location对象方法方法说明assign()载入一个新的文档reload()重新载入当前文档replace()用新的文档替换当前文档注window.location.assign(url)加载 URL 指定的新的 HTML 文档。就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面。window.location.replace(url)通过加载 URL 指定的文档来替换当前文档,这个方法是替换当前窗口页面,前后两个页面共用一个窗口,所以是没有后退返回上一页的
  • css实现按钮点击水波纹效果和两边扩散效果
    点击查看代码                Document            .btn,        .btn2 {            position: relative;            width: 150px;            height: 60px;            background: #409eff;            outline: 0;            border: none;            padding: 12px 20px;            overflow: hidden;            color: #fff;        }        .btn::before,        .btn2::before {            content: '';            display: block;            position: absolute;            width: 100%;            height: 100%;            left: 0;            top: 0;            transition: 0.2s;            background: #fff;            opacity: 0;        }        .btn:active::before,        .btn2:active::before {            opacity: 0.2;        }        .btn::after {            content: '';            display: block;            position: absolute;            width: 200%;            height: 100%;            left: var(--x, 0);            top: var(--y, 0);            background-image: radial-gradient(circle, #fff 10%, transparent 10.01%);            background-repeat: no-repeat;            background-position: 50%;            transform: translate(-50%, -50%) scale(10);            opacity: 0;            transition: transform 0.8s, opacity 0.8s;        }        .btn:active::after {            transform: translate(-50%, -50%) scale(0);            opacity: 0.3;            transition: 0s;        }        .btn2::after {            content: '';            display: block;            position: absolute;            background: rgb(255, 255, 255, 0.7);            left: 0;            top: 0;            right: 0;            bottom: 0;            opacity: 0;            transition: all 0.8s, opacity 0.8s;        }        .btn2:active::after {            left: var(--l, 0);            right: var(--r, 0);            opacity: 0.3;            transition: 0s;        }            水波纹散开        两边散开    (() => {        const el = document.querySelector('.btn');        el.addEventListener('mousedown', e => {            const { left, top } = el.getBoundingClientRect();            el.style = `--x:${e.clientX - left}px;--y:${e.clientY - top}px`;        });        const el2 = document.querySelector('.btn2');        el2.addEventListener('mousedown', e => {            const { left, right } = el2.getBoundingClientRect();            el2.style = `--l:${e.clientX - left}px;--r:${right - e.clientX}px`;        });    })();原理,通过监听按下事件,获取到点击坐标,将获取到的坐标通过style代入到自定义变量中,css中写入相关样式,引用伪元素,只需改变点击坐标点即可总结,网上水波纹的例子有许多,但很多都不完善,如连续点击后水波纹会失效,本文已优化,并通过自定义css变量来实现,相对于较简单
  • mysql报错:1044 -Access denied for user ‘用户名‘@‘%‘ to database
    远程连接工具可以成功连接数据库,但是只会显示information_schema这个自动生成的数据库,其他的数据库无法显示来 解决方法本地连接root,找到mysql数据库,修改user表中需要连接的用户名数据找到Grant_priv,和Super_priv两个字段,将值改为Yflushprivileges(见下方注释)重启mysql注释解析flushprivilegesflush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。
  • css去掉相邻的线(双线)
    在表格的样式中添加border-collapse: collapse;以设置边框合并(如果border-collapse的属性值为collapse,则会忽略border-spacing和empty-cells属性border-collapse 设置表格的边框是否被合并为一个单一的边框,还是像在标准的HTML中那样分开显示。值说明collapse如果可能,边框会合并为一个单一的边框。会忽略border-spacing和empty-cells属性separate默认值。边框会被分开。不会忽略border-spacing和empty-cells属性inherit规定应该从父元素继承border-collapse属性的值
  • hashchange介绍
    hashchange事件是html5新增的api,用来监听浏览器链接的hash值变化。目前流行的spa框架的路由都有使用到该特性,接下来简单介绍下:当URL的片段标识符更改时,将触发hashchange事件(跟在#符号后面的URL部分,包括#符号)属性类型描述targetEventTarget上下文为window对象typeDOMStringevent类型bubblesBoolean事件是否能冒泡cancelableBoolean事件是否能被取消oldURLString跳转前的URLnewURLString跳转后的当前URLhashchange跳转到对应的锚点示例应用:https://mackhly.hlytools.top/article/54.html
  • 1
  • 2
  • 3
  • ···
  • 378
  • 379
  • 380
  • 381
最新文章
  • jpg怎么转换成ico图标
  • json是什么意思
  • 如何进行网站流量统计分析?
  • 网页定时刷新是干嘛的
  • user agent检测详解
  • 支付宝微信二维码如何合并?
  • 如何制作ico图标
  • 随机密码生成器安全吗?
  • Base64是什么
  • 时间戳是什么意思
冀ICP备2020020658号