web 前端 h5 学习记录

1、深拷贝 JSON.parse(JSON.stringify(data))

深拷贝可以解决数据改变却不渲染的问题,不过不能拷贝函数

2、原生监听dom 监听滚动

div 加style overflow: auto,则溢出就加个滚动条,监听滚动条h5端用原生dom,dom放在渲染完的生命周期里,则每次滚动都可监听到,centerContent为class

const centerScroll = document.querySelector('.centerContent');
centerScroll.onscroll =()=>{
  console.log('我滚动了')
}  

给个链接参考http://dev.ksazx.com/web_index.html,下面链接的js代码

<script type="text/javascript">
    function showQQ(flag) {
        var my_tips = document.getElementById("qq_code");
        if (flag) {
            my_tips.style.display = "block";
        } else {
            my_tips.style.display = "none";
        }
    }

    function showWeChat(flag) {
        var my_tips = document.getElementById("wechat_code");
        if (flag) {
            my_tips.style.display = "block";
        } else {
            my_tips.style.display = "none";
        }
    }

    function showPhone(flag) {
        var my_tips = document.getElementById("telephone_code");
        // var telephone_text = document.getElementById("telephone_text");
        if (flag) {
            my_tips.style.display = "block";
        } else {
            my_tips.style.display = "none";
        }
    }

    //初始化Swiper
    var mySwiper = new Swiper('.swiper-container', {
        // 循环轮播
        loop: true,
        // 分页器
        pagination: {
            el: '.swiper-pagination',

            // 动态分页器:当你的slide很多时,为true后,分页器会有大小显示
            dynamicBullets: true,
        },
        // 前进后退按钮
        navigation: {
            nextEl: '.swiper-button-next',
            prevEl: '.swiper-button-prev',
            hiddenClass: 'my-button-hidden',
        },
        // 自动轮播
        autoplay: {
            delay: 5000,
            /**
             * stopOnLastSlide => true: 当切换到最后一个slide时停止自动切换
             */
            stopOnLastSlide: true,
            /**
             * disableOnInteraction:用户操作swiper之后,是否禁止自动轮播
             * true(默认) => 停止
             * false      => 恢复自动轮播
             */
            disableOnInteraction: false,
        },
    });
    //鼠标移出隐藏按钮,移入显示按钮
    mySwiper.el.onmouseover=function(){
        mySwiper.navigation.$nextEl.removeClass('hide');
        mySwiper.navigation.$prevEl.removeClass('hide');
    };
    mySwiper.el.onmouseout=function(){
        mySwiper.navigation.$nextEl.addClass('hide');
        mySwiper.navigation.$prevEl.addClass('hide');
    };
    function showSwiperButton(flag) {
        var my_tips = document.getElementById("button-prev");
        var my_tips2 = document.getElementById("button-next");
        if (flag) {
            // my_tips.style.display = "inline-flex";
            // my_tips2.style.display = "inline-flex";
            my_tips.style.background = "rgba(0,0,0,0.6)";
            my_tips2.style.background = "rgba(0,0,0,0.6)";
        }
        else {
            // my_tips.style.display = "none";
            my_tips.style.display = "inline-flex";
            my_tips2.style.display = "inline-flex";
            my_tips.style.background = "rgba(0,0,0,0.2)";
            my_tips2.style.background = "rgba(0,0,0,0.2)";
            // my_tips.style.transition = "opacity 2s";
            // my_tips2.style.transition = "opacity 2s";
            // my_tips2.style.display = "none";
        }
    }


    function partCar() {
        window.location.href='http://dev.ksazx.com/html/part_car.html';
    }

    var point = document.querySelectorAll('.point');
    console.log("point" + point);
    var hav = document.querySelectorAll('.hav');
    var scroll = true; //是否减去导航条高度
    function link() {
        scroll = false;
    }

    window.onscroll = function () {
        //为了保证兼容性,这里取两个值,哪个有值取哪一个
        //scrollTop就是触发滚轮事件时滚轮的高度
        for (var i = 0; i < hav.length; i++) {
            hav[i].classList.remove("itemActive")
        }
        var scrollTop;
        if (scroll) {
            scrollTop = document.documentElement.scrollTop + 80 || document.body.scrollTop + 80;
        } else {
            scrollTop = document.documentElement.scrollTop | document.body.scrollTop;
            document.scrollingElement.scrollTop = scrollTop - 79; //不要加114
            scroll = true;
        }
        for (var index = 0; index < point.length; index++) {
            if (index != point.length - 1) {
                if (scrollTop >= point[index].offsetTop - 80 && scrollTop <= point[index + 1].offsetTop - 80) {
                    hav[index].classList.add("itemActive")
                }
            } else {
                if (scrollTop >= point[index].offsetTop) {
                    hav[index].classList.add("itemActive")
                }
            }
        }
    }
</script>
</body>
</html>

3、遍历这样子的数组用hasOwnProperty

let carMap = {
      0: {
        quantity: 0,
        selling_price: 0,
        name: 0
      },
      aa:{
        f:2
      }
    };
for(let item in carMap){
      if(carMap.hasOwnProperty(item)){ //判断是否是继承属性(原型链继承)
        console.log(carMap[item])
      }
  }

打印出来长这样
image.png

4、async-awai异步方法

await会等待执行完再执行后面的代码

5、模板字符串基础

https://www.cnblogs.com/newze/p/7535470.html

6、后台传的完整的html展示出来用什么方法

vue 里面有个v-html,
原生 用insertAdjacentHTML

var str = `<p>这是一个插入的段落</p>
        <h1>这是一个插入的段落</h1>
        box.insertAdjacentHTML('afterend',str)
image.png

taro小程序


image.png
image.png

7map双循环用这样子的方法

image.png

下面这样子的写法是错误的,会改变原来的数组,所以不setData的时候也会改变


image.png

7 、一张图片的链接如果被第二张图片给替换了,在有缓存的情况下只会显示第一张图片

8、循环数据的方法

image.png

map循环

image.png

set 数组抓取再去重,数组数据必须是唯一的

image.png

只会返回为true的数据

image.png

image.png

用for in 就要去判断 这个属性是不是非继承的

image.png

image.png

9拼英排序 可数组自带的方法 sort 也 可以用这个 https://github.com/MisterChangRay/Mtils2

image.png

image.png
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./Mtils.min.js"></script>
</head>
<body>
  <script>
   
    let data = [
      {title:'我不是沙雕谢谢'},
      {title:'我不'},
      {title:'订单是'},
      {title:'沙'},
      {title:'杀雕'},
    ]
    let data2 = [
      {title:'w',item:[{name:'我不是沙雕谢谢'},{name:'我不'}]},
      {title:'d',item:[{name:'订单是'}]},
      {title:'s',item:[{name:'沙'},{name:'杀雕'}]},
    ]
    data.map(v=>{
      v.key = Mtils.utils.makePy(v.title).substr(0,1)
    })
    let ary = [];
    data.map(v=>{
      ary = [...ary,v.key]
    })
    ary.sort();
    let list = [];
    let copyData = JSON.parse(JSON.stringify(data))
    ary.forEach((v,i)=>{
      copyData.forEach((value,index)=>{
        if(value.key==v){
          list = [...list,copyData[index]];
          copyData.splice(index,1);
        }
      })
    })
    console.log(list)
  </script>
image.png

10、小说翻页动画用turnjs 但是是jq的

下面这个是自动翻页

 <style>
    #box{
      width: 300px;
      position: relative;
      height:95px;
      border:2px solid yellow;
      margin:50px auto;
      overflow: hidden;
    }
    #box>div{
      position: absolute;
      width:100%;
      top:0;
      transition: all 1000ms ease;
    }
    #box>div>p{
      text-align: center;
      background: lightblue;
      line-height: 40px;
      margin-top: 5px;
      margin-bottom: 5px;
    }
  </style>
</head>
<body>
  <div id='box'>
    <div id='container'>
    </div>
  </div>
  <script>
    let ary = [
      {title:'aaaaa'},
      {title:'bbbbb'},
      {title:'ccccc'},
      {title:'ddddd'},
      {title:'eeeee'},
      {title:'fffff'},
      {title:'ggggg'},
      {title:'hhhhh'},
      {title:'iiiii'},
      {title:'jjjjj'},
    ]
    ary.forEach((v,i)=>{
      container.innerHTML += `<p>${v.title}</p>`;
    })
    let i = 1;
    setInterval(()=>{
      if(i>=ary.length/2) i=1;
      container.style.top = i*-90 +'px';
      i++;
    },4000)
  </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,128评论 0 3
  • Web前端技术由 html、css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度...
    hnscdg阅读 645评论 0 0
  • 婆婆擀的面条细长,绵滑,均匀入味,含在嘴里多少温暖的滋味,永远是慈母手中牵挂的那根绳。记忆的爱河里婆婆擀过三次面条...
    沐源工作室阅读 701评论 6 4
  • 上周每天早上去到渝中区,怀旧之情在心里泛滥。 周一去了七星岗,上次好像是去年,也是去渝中区党校学习。在金汤包吃了油...
    任旻阅读 172评论 0 1
  • 红尘升起袅袅一缕烟 刻骨之痛千回百转 瓦砾上溅起的雨珠 让思绪升腾飞跃千山 一字一句的肝肠寸断 泪水将红笺褪染 浩...
    禅唱阅读 1,259评论 0 1