当前位置: 首页 > news >正文

建设信用卡秒批网站安徽汽车网网站建设

建设信用卡秒批网站,安徽汽车网网站建设,建筑学网站,定制包装需要多少钱js实现手机通讯录效果图需求需求一#xff1a;锚点通过#id配合a标签使用css中scroll-behavior属性的使用需求二需求三获取汉字拼音的首字母方法1#xff1a;使用插件#xff0c;这里推荐pinyin-pro方法2#xff1a;使用unicode去重数组中冗余的对象法一#xff1a;用Map去… js实现手机通讯录效果图需求需求一锚点通过#id配合a标签使用css中scroll-behavior属性的使用需求二需求三获取汉字拼音的首字母方法1使用插件这里推荐pinyin-pro方法2使用unicode去重数组中冗余的对象法一用Map去重法二用双层for循环配合splice使用代码实现Htmlcssjs需要引入的工具代码效果图 需求 手机通讯录这样的功能在很多场景下都是可以见到的多出现在移动端它通常有以下特点 锚点 点击右侧的英文字母会跳转到相应的区块并且在此过程页面不刷新智能识别左侧的地名或者人名。在相应首字母不存在的情况下不会出现相应的首字母列表比如下图没有字母E,F对应的人名或则地名则不显示EF空列表 数据流精准定位可以随意添加数据自动根据人名或者地名汉语拼音的第一个首字母来准确定位并将当前人名或地名精准存放在相应的字母列表当中 需求一锚点 锚点是css里一个非常神奇的功能。实现这样的功能我一般做好以下两点基本就是完美的了。 通过#id配合a标签使用 nava href#11/aa href#22/aa href#33/aa href#44/aa href#55/a/navdivdiv id11/divdiv id22/divdiv id33/divdiv id44/divdiv id55/div/div这一看就明白a标签用于右侧字母导航栏。a标签里href的属性值用#id表示分别与左侧列表里的div的id名字一一对应即可实现点击跳转这一特点也叫锚点这在css里还是挺高级的。 css中scroll-behavior属性的使用 使用这个属性可以让你的锚点跳转看起来更加丝滑 :root{font-size: 2rem;scroll-behavior: smooth;}MDN官网是这样介绍的 当用户手动导航或者 CSSOM scrolling API 触发滚动操作时CSS 属性 scroll-behavior 为一个滚动框指定滚动行为其他任何的滚动例如那些由于用户行为而产生的滚动不受这个属性的影响。在根元素中指定这个属性时它反而适用于视窗。 /* Keyword values */ scroll-behavior: auto; scroll-behavior: smooth;/* Global values */ scroll-behavior: inherit; scroll-behavior: initial; scroll-behavior: unset;换句话说如果不使用这个属性那么在锚点跳转过程中会突然跳转到相应位置非常生硬用户体验感比较差。 如果使用这个属性在锚点跳转过程中会有过渡效果。使得整个过程看起来更加合理丝滑。 需求二需求三 先分析这这两个需求应该如何实现 智能识别以及数据流精准定位 1. 先获取地名或者人名汉字拼音的第一个汉字的首字母 2. 将此首字母打印没有问题然后将其放在一个变量里 3. 准备26个英文字母将这个字符串分割成26个元素然后遍历一下这个数组。 4. 遍历第一个汉字拼音的首字母 5. 再拿26个字母 与 第一个汉字拼音的首字母比较 6. 如果两个字母相同将第一个汉字拼音的首字母 对应的地名 放入一个新数组 7. 做个判断。当某个首字母对应的汉字为空则不渲染这个字母列表 8. 如果数组中的对象有重复调用去重函数 9. 输出 分析 难点1这里面循环判断输出都没有什么难以实现的难度不大。难的是如何将汉字转化为拼音并获取到拼音的首字母 难点2如果出现重复怎么去重 难点3有没有别的方式优化程序可以跳过去重 获取汉字拼音的首字母 方法有二 方法1使用插件这里推荐pinyin-pro script srchttps://unpkg.com/pinyin-pro3.12.0/dist/index.js/script这是一款具有非常强大的汉字转换方法的插件用路径在线引入即可使用。并且pinyin-pro 支持各种浏览器以及 Nodejs 环境运行。 方法2使用unicode unicode这是一种文字编码标准是以\u6211\u559c\u6b22\u4f60等形式出现的 eg \u6211\u559c\u6b22\u4f60 我喜欢你 \u6211\u7231\u4f60 我爱你 \u4f60\u597d\u5e05\u554a 你好帅啊 \u6211\u6211\u559c\u6b22\u5403\u70b8\u9171\u9762 我喜欢吃炸酱面 这就是uniode我个人更喜欢用第二种方式。将文字编码打包成一个文件需要的时候随时本地调用即可非常安全。 去重数组中冗余的对象 这里推荐两种去重方法 法一用Map去重 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0meta http-equivX-UA-Compatible contentieedgetitle/title /head body/body /html scriptlet obj [{ name: 米面, id: 1 },{ name: 牛肉, id: 2 },{ name: 蔬菜, id: 3 },{ name: 水果, id: 3 },{ name: 饮料, id: 1 },{ name: 咖啡, id: 4 },{ name: 茶叶, id: 3 }];const map new Map();const newArr obj.filter(csdn !map.has(csdn.id) map.set(csdn.id, 1));console.log(newArr); /script输出结果 法二用双层for循环配合splice使用 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0meta http-equivX-UA-Compatible contentieedgetitle/title /head body/body /html scriptlet obj [{ name: 米面, id: 1 },{ name: 牛肉, id: 2 },{ name: 蔬菜, id: 3 },{ name: 水果, id: 3 },{ name: 饮料, id: 1 },{ name: 咖啡, id: 4 },{ name: 茶叶, id: 3 }];function fn1(tempArr) {for (let i 0; i tempArr.length; i) {for (let j i 1; j tempArr.length; j) {if (tempArr[i].id tempArr[j].id) {tempArr.splice(j, 1);j--;};};};return tempArr;};console.log(fn1(obj)); /script输出结果 两种去重方法得到的结果是一模一样的。这两种方法可以复制后直接调用。值得一提的是除了Map还有set 还有for of /forEach /for in等方法虽然各有特点但都有自己的最合适的使用场景详情可阅读前文有详细介绍。 我个人更喜欢用第二种方法因为用双层for循环配合splice去重的方法是最不耗费性能的。虽然结构复杂让人看的恶心但毕竟“省钱”。 代码实现 按照分析的思路去执行即可怎么想就怎么做 程序如人生 Htmlcss !doctype html htmlheadmeta charsetutf-8title/titlestyle:root{font-size: 2rem;scroll-behavior: smooth;}#righta {display: block;text-decoration: none;color: black;text-align: center;}#right {position: fixed;right: 0.2rem;top: 1vh;font-size: .7rem;display: flex;flex-wrap: wrap;align-items: center;width: .5rem;padding: 0% 1rem;text-align: center;height: 100vh;background-color: greenyellow;overflow-y: scroll;}#list p {background: -webkit-linear-gradient(left, #2b80ff, #8098aa);}#list {height: 500vh;font-size: 2rem;}/style/headbodydiv idlist!-- pA/pspan/spanspan/spanpB/pspan/spanspan/span --/divdiv onclickdata() idkl styledisplay: block;position: absolute;top: 0%;6button来吧展示/button/divdiv idrighta href#AA/aa href#BB/aa href#CC/aa href#DD/aa href#EE/aa href#FF/aa href#GG/aa href#HH/aa href#II/aa href#JJ/aa href#KK/aa href#LL/aa href#MM/aa href#NN/aa href#OO/aa href#PP/aa href#QQ/aa href#RR/aa href#SS/aa href#TT/aa href#UU/aa href#VV/aa href#WW/aa href#XX/aa href#YY/aa href#ZZ/a/div/body htmljs需要引入的工具代码 script src./data.js/script //人名地名的假数据script src./unicode.js/script //汉字转换拼音的打包文件含有编码和方法script src./jquery-3.6.1.js/script //引入jquery文件方便简化代码这三个文件比较大我放在资源里了可以免费下载希望对大家有帮助 其次还需要一个实现功能的js文件 注释也是必不可少的 script// ----------数组中相同对象去重选择两层for循环配合splice使用// function deWeight(arr) {// for (var i 0; i arr.length - 1; i) {// for (var j i 1; j arr.length; j) {// if (arr[i].one arr[j].one) {// arr.splice(j, 1);// j--;// }// }// }// return arr;// }//---------------------function data() {document.querySelector(#kl).style.display none// --------把地名拼音第一个首字母放到a数组里let a [];for (let j 0; j arrs.length; j) {var chinaName arrs[j].name;var easyName pinyin.getCamelChars(chinaName);// console.log(easyName);// console.log(easyName); //每个地名拼音的首字母缩写 a.push(easyName[0]) //第一个汉字拼音的首字母}//------------// let obj {}let add [];//-----------遍历一下26个字母let strarr ABCDEFGHIJKLMNOPQRSTUVWSYZ.split();for (let i 0; i strarr.length; i) {//-------------//----------遍历第一个汉字拼音的首字母let names [];for (let j 0; j a.length; j) {//----------//----------26个字母 与 第一个汉字拼音的首字母比较if (strarr[i] a[j]) {//----------如果两个字母相同将第一个汉字拼音的首字母 对应的地名 放入数组names egB 北京 B北海道 names [北京北海道]names.push(arrs[j].name)//----------console.log(names);}//----------}if (names.length ! 0) {//----------B 北京 oneB two[北京北海道] B 北海道 oneB two[北京北海道]let obj {one: strarr[i],two: names}//----------//----------将对象放入数组add.push(obj)// console.log(add);//----------}}console.log(add);//----------//----------调用去重函数将数组里重复的对象去除// deWeight(add);//----------//----------输出let str ;for (let i 0; i add.length; i) {str p id ${add[i].one}${add[i].one}/pspan${add[i].two.join(br/)}/span}$(#list).html(str)//----------}// data()/script创作不易如果对你有帮助请三连支持。
http://www.ho-use.cn/article/10814075.html

相关文章:

  • 保定网站建设的过程163k地方门户网站系统
  • 网站上的验证码怎么做的网络运营商自动选择
  • 机构编制网站建设天水网站开发技术招聘
  • 做服务的网站吗三星网上商城官网
  • 免费打开网站东莞网站平台费用
  • 全网推广方案关键词seo
  • 网站建设框架编写目的建立英语
  • 有名的网站深圳网站建设定制开发
  • 找别人做网站的注意事项学校建立网站
  • 中建八局第一建设公司网站网站弹出
  • 哪里建网站便宜wordpress建站访问提示不安全
  • 企业介绍微网站怎么做的六数字域名做网站好不好
  • 房子装修网站公司免费邮箱如何注册
  • 中国最大的中文网站沈阳建设工程信息网 最佳中项网
  • 如何建设红色旅游网站公司网站建设需要注意哪些问题
  • 网站建设工作的函找设计网站公司
  • 企业网站建设的研究开发方法及技术路线专业做网站的软件
  • 建筑企业资质查询网站苏州企业宣传片制作公司
  • 微网站与微信的关系wordpress页面关联目录
  • ppt模板免费下载哪个网站好河南商务网站建设
  • 做网站公司需要帮客户承担广告法吗规范网站建设
  • 宁乡网站开发公司推荐360网站卫士代备案流程
  • 烟台网站建设 烟台网亿网络品牌建设找晓哥
  • 仿唧唧帝笑话门户网站源码带多条采集规则 织梦搞笑图片视频模板wordpress服务器如何使用
  • 网站设计有哪些福建建设厅官网
  • 金融网站开发公司制作网页软件免费
  • 自己做网站和推广wordpress自动分类插件
  • 网站建设与域名备案wordpress你好多莉
  • 建设进出口外贸网站网站建设外包被骗
  • 菏泽 兼职做网站非寻服饰网站建设规划书