美文网首页
JS 一些比较陌生但实用的API

JS 一些比较陌生但实用的API

作者: 风之化身呀 | 来源:发表于2017-09-17 18:56 被阅读47次

1、window.getComputedStyle方法

功能:获取最终应用在元素身上的样式
语法: getComputedStyle("元素", "伪元素"),第二个参数可选
返回值:元素的样式对象
IE6-8不支持该属性,有个对应属性currentStyle。
与style的区别:style只能拿到元素style属性中的样式信息,getComputedStyle可以拿到任意属性/值的集合,与getPropertyValue配合使用就可以拿到任意属性值。
Tip:jquery/zepto的css方法拿不到伪元素样式,但该方法可以!!

2、Element.getBoundingClientRect方法

功能:相对于视口,获取指定元素size和position
语法:element.getBoundingClientRect()
返回值:包含bottom,height,left,right,top,width,x,y的对象(Chrome下),基准点是视口左上角。
Tip:当Element被display:none后,返回的所有属性都为0

3、Object.assign方法

语法:Object.assign(target, ...sources),返回target对象,将sources中所有可枚举属性赋值到target对象,但是只是浅复制,即复制引用,看下列子:

function test() {
  'use strict';

  let obj1 = { a: 0 , b: { c: 0}};
  let obj2 = Object.assign({}, obj1);
  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
  
  obj1.a = 1;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
  
  obj2.a = 2;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
  
  obj2.b.c = 3;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}
  
  // 深度复制
  obj1 = { a: 0 , b: { c: 0}};
  let obj3 = JSON.parse(JSON.stringify(obj1));
  obj1.a = 4;
  obj1.b.c = 4;
  console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}
}

test();

注意:Object.assign()方法是浅复制,使用时要注意这点

4、scrollIntoView & scrollIntoViewIfNeed

  • scrollIntoView(param)
<body>
    <div class="chunk"></div>
    <div class="btn">click</div>
    <script>
    const btn = document.querySelector('.btn');
    const test = document.querySelector('.chunk');
    btn.addEventListener('click', function() {
      test.scrollIntoView();
    })
    </script>
</body>

param可取boolean和object,当为Boolean时,取true(默认值)与可视区域顶部对齐;当object时,可设置两个key,一个block,取值为start/end,功能类似于取Boolean,另一个behavior,取值instant(auto)/smooth;兼容性有限!

  • scrollIntoViewIfNeed
    scrollIntoViewIfNeeded是比较懒散的,如果元素在可视区域,那么调用它的时候,页面是不会发生滚动的。其次是scrollIntoViewIfNeeded只有Boolean型参数,也就是说,都是瞬间滚动

相关文章

  • JS 一些比较陌生但实用的API

    1、window.getComputedStyle方法 功能:获取最终应用在元素身上的样式语法: getCompu...

  • 调研油猴插件

    1. 介绍 方便用户往网页里注入js、dom元素。提供一些扩展api方便 js 开发,但看起来 api 也没有很强...

  • JavaScript知识点

    记录JavaScript学习中的一些零碎笔记、知识点、技巧,看似很基础但很实用。 数据类型 比较的奥秘 JS中的各...

  • 比较实用的js方法

    1获取元素 原生JS添加类名 删除类名 检查是否含有某个CSS类名 3获取距离页面的距离getBoundingCl...

  • nodejs一些核心模块的简单介绍

    这里的是一些比较常见的方法,想要了解更多可查看nodejs的中文档:path | Node.js API 文档 一...

  • 2021-01-21 axios封装

    axios/index.js api/index.js api/people.js api/base.js mai...

  • Fetch

    api/base.js 基础域名 api/index.js api集中管理 utils/http.js 封装请求 ...

  • 实现简单的js数据监听

    Object.defineProperty,用过js的应该都不陌生了,vue就是利用此api实现了vue的数据绑定...

  • web API

    以后是对于初学者有帮助的一些JS的方法API,使用即说明 ■JS组成■1,ECMAScript : js的核心标准...

  • 上传

    axios封装 上传api.js api.js vue文件

网友评论

      本文标题:JS 一些比较陌生但实用的API

      本文链接:https://www.haomeiwen.com/subject/nghmsxtx.html