zoukankan      html  css  js  c++  java
  • 原生技巧篇

    按钮翻面

    地图

    小案例

    https://developers.arcgis.com/javascript/latest/key-features/

    这种过渡好帅

    鼠标跟随背景移动

    核心代码

          const el = document.getElementById("wrapper");
          const d = el.getBoundingClientRect();
          let x = e.clientX - (d.left + Math.floor(d.width / 2));
          let y = e.clientY - (d.top + Math.floor(d.height / 2));
          // Invert values
          x = x - x * 2;
          y = y - y * 2;
          // 圆点
          console.log([x, y]);
          //移动的距离/2
          document.documentElement.style.setProperty("--scale", 1.6);
          document.documentElement.style.setProperty("--x", x / 2 + "px");
    
          document.documentElement.style.setProperty("--y", y / 2 + "px");
    

    案例

    <template>
      <div>
        home-card
        <div class="yl-flex">
          <div
              id="wrapper"
              @mousemove="handleMouseMove"
              @click="handleMouseLeave"
          >
            <img id="image"/>
          </div>
        </div>
      </div>
    </template>
    
    <script>
    const debounce = (fn, ms = 0) => {
      let timeoutId;
      return function(...args) {
        clearTimeout(timeoutId);
        timeoutId = setTimeout(() => fn.apply(this, args), ms);
      };
    };
    export default {
      name: "home-card",
      methods: {
        handleMouseMove:debounce(function(e){
          const el = document.getElementById("wrapper");
          const d = el.getBoundingClientRect();
          let x = e.clientX - (d.left + Math.floor(d.width / 2));
          let y = e.clientY - (d.top + Math.floor(d.height / 2));
          // Invert values
          x = x - x * 2;
          y = y - y * 2;
          // 圆点
          console.log([x, y]);
          //移动的距离/2
          document.documentElement.style.setProperty("--scale", 1.6);
          document.documentElement.style.setProperty("--x", x / 2 + "px");
    
          document.documentElement.style.setProperty("--y", y / 2 + "px");
        },80),
    
        handleMouseLeave() {
          document.documentElement.style.setProperty("--scale", 1);
          document.documentElement.style.setProperty("--x", 0);
          document.documentElement.style.setProperty("--y", 0);
        }
      }
    }
    </script>
    
    <style scoped lang="scss">
    :root {
      --scale: 1.5;
      --y: 0;
      --x:0;
    }
    
    .yl-flex {
       100%;
      height: 800px;
      box-sizing: border-box;
      overflow: hidden;
      margin: 0;
      background-color: black;
      outline: none;
      border: none;
    
      #wrapper {
         100vw;
        height: 100vh;
    
        #image {
           100vw;
          height: 100vh;
          background-image: url("https://images.unsplash.com/photo-1539035104074-dee66086b5e3?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjI0MX0&auto=format&fit=crop&w=2550&q=80");
          background-size: cover;
          transform: translateX(var(--x)) translateY(var(--y)) scale(var(--scale));
          transition: ease-out 0.7s;
    
        }
      }
    }
    
    </style>
    

    测试框架

    Jest到目前为止,最流行的通用JavaScript测试框架。适用于大多数项目,大多数框架和库,并且对TypeScriptBabel具有强大的支持

    JavaScript和Node.js应用程序中的通用测试的另一个流行选择

    • jasmine

    Jasmine是一个行为驱动的JavaScript测试框架。它很容易上手,易于使用。

    测试React组件的JavaScript测试实用程序

    Angular应用程序的端到端测试框架,经常与Jasmine一起使用

    • Cypress

    一个完整的JavaScript端到端测试框架。它使用自己的测试运行程序,并且与Enzyme具有某些语法相似性

    这个感觉很叼的样子

    焦点

    可以加上tabindex=0 来包含文本的元素可聚焦,就可以给div添加获取或者失去焦点的事件

    首字母大写

    text-transform css 属性指定如何将元素的文本大写

     p{
            text-transform: capitalize;
        }
    
    dom.style.textTransform='capitalize'
    

    顶级await 模块

    <script type="module">
        let add = value =>
            new Promise(res => setTimeout(() => res(value), 2000));
        try {
            const text = await add('ccc')
            console.log(text);
        } catch (e) {
    
        }
        console.log(2);
    </script>
    

    Number 自增有趣的知识点

    let a = new Number(5);
    a.sex=10;
    console.log(a.sex); // 10
    console.log(10 + a);//15
    a++
    console.log(a);// 6
    console.log(a.sex); // undefined
    
    我们用函数试试,相同的想过
     function dis() { return this }
     let a=dis.call(5)
     a.sex=10 
     a++
     a.sex // undefined
    

    其实a++ 替换了当前的类型

    其实我们可以使用toString

    let a = {
        sex: 1, x: 10, toString() {
            return this.x++
        }
    }
    console.log(a + a + a);
    

    html

    • <sub> -下标文字
    • <sup> -上标文字
    <div>
        123<sup>2</sup>+log<sub>2</sub>
    </div>
    

    React(渲染库) vue(微型框架) Angular(全功能框架)
    

    很火的css框架

    https://github.com/tailwindlabs/tailwindcss

    一个有趣的过渡特效

    背景图片和背景颜色的技巧

      .card {
        background: #f0ead6;
        background-image: url(https://assets.codepen.io/489403/egypt.jpg);
        background-repeat: no-repeat;
        background-size: 140% 100%;
      }
    

    当图片没有加载出来的时候直接加载颜色,等图片加载出来了会覆盖颜色

    四舍五入的保留小数位数

    function round(value, decimals) {
        return Number(Math.floor(parseFloat(value + 'e' + decimals)) + 'e-' + decimals);
    }
    

    div 进行拉伸

    .aaa{
                 400px;
                height: 500px;
                resize: both;
                border:2px solid #ccc;
                overflow: hidden;
            }
    

    决定自己的高度的是你的态度,而不是你的才能

    记得我们是终身初学者和学习者

    总有一天我也能成为大佬

  • 相关阅读:
    软件工程5
    软件工程3
    软件工程4
    软件工程2
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    个人作业——04
    清风不知道——冲刺日志(第一天)
    清风不知道——凡是预则立
    2020软件工程作业05
  • 原文地址:https://www.cnblogs.com/fangdongdemao/p/14696025.html
Copyright © 2011-2022 走看看