zoukankan      html  css  js  c++  java
  • wW3school前端小知识

    1、css一行文本超出...

    overflow: hidden;
    text-overflow:ellipsis;
    white-space: nowrap;

    2、多行文本超出显示...

    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;

    3、IOS手机容器滚动条滑动不流畅

    overflow: auto;
    -webkit-overflow-scrolling: touch;

    4、修改滚动条样式,隐藏div元素的滚动条

    div::-webkit-scrollbar {
        display: none;
    }

    div::-webkit-scrollbar滚动条整体部分

    div::-webkit-scrollbar-thumb滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)

    div::-webkit-scrollbar-track滚动条的轨道(里面装有Thumb)

    div::-webkit-scrollbar-button滚动条的轨道的两端按钮,允许通过点击微调小方块的位置

    div::-webkit-scrollbar-track-piece内层轨道,滚动条中间部分

    div::-webkit-scrollbar-corner边角,即两个滚动条的交汇处

    div::-webkit-resizer两个滚动条的交汇处上英语通过拖动调整元素大小的小空间,注意此方案有兼容性问题,一般需要隐藏滚动条时我都是用一个色块通过定位改上去,或者将子级元素调大,父级元素使用overflow-hidden截掉滚动条部分。

    5、使用css写出一个三角形角标

    元素宽高设置为 0,通过border属性来设置,让其他三个方向的border颜色为透明或者和背景色保持一致,剩余一条border的颜色设置为需要的颜色

    div {
        width: 0;
        height: 0;
        border: 5px solid #transparent;
        border-top-color: red;
    }

    6、解决ios audio 无法自动播放、循环播放的问题

    ios手机在使用audio或者video播放的时候,个别机型无法实现自动播放,可以使用下面的代码hack

    // 解决ios audio无法自动播放、循环播放的问题
    var music = document.getElementById('video');
    var state = 0;
    
    document.addEventListener('touchstart', function(){
        if(state==0){
            music.play();
            state=1;
        }
    }, false);
    
    document.addEventListener("WeixinJSBridgeReady", function () {
        music.play();
    }, false);
    
    //循环播放
    music.onended = function () {
        music.load();
        music.play();
    }

    7、水平垂直居中

    一般使用两种方式,定位或者flex

    div {
        width: 100px;
        height: 100px;
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        margin: auto;
    }
    
    //父级控制子集居中
    .parent {
        display: flex;
        justify-content: center;
        align-items: center;
    }

    8、隐藏页面元素

    display-none:元素不存在,从dom中删除

    opacity-0:元素透明度将为 0,但元素仍然存在,绑定的时间仍旧有效扔可触发执行

    visibility-hidden:元素隐藏,但元素仍旧存在,页面中无法触发该元素的事件

    9、前端工程化

    一般来说前端工程包含:项目初始化、项目开发、继承、构建、打包、测试、部署等流程。工程化就是以工程的角度来解决这些问题。(webpack仅仅是前端工程化中的一环,在整个工程化过程中帮我们解决了大多数问题)

    10、contenteditable

    html中大部分标签都是不可以编辑的,但是添加了contenteditable属性之后,标签会变成可编辑状态

    <div contenteditable="true"></div>

    不过通过这个属性把标签变成可编辑状态后只有input事件,没有change事件。也不能像表单一样通过maxlength控制最大长度。

    11、calc

    这是一个css属性,可以计算css的值。

    div {
        width: calc(25% - 20px);
    }

    12、Proxy 和 Object.defineProperty 区别

    Proxy 的意思是代理,可以拦截对象上的一个操作。通过 new 的方式创建对象,第一个参数是被拦截的对象,第二个参数是对象操作的描述。实例化后返回一个新的对象

    new Proxy(target, {
        get(target, property) {
    
        },
        set(target, property) {
    
        },
        deleteProperty(target, property) {
    
        }
    })

    Proxy 区别于 Object.definedProperty

    Object.defineProperty 只能监听到属性的读写,而 Proxy 除读写外还可以监听属性的删除,方法的调用等

    通常情况下我们想要监视数组的变化,基本要靠重写数组方法的方式实现,这也是 Vue 的实现方式,而 Proxy 可以直接监视数组的变化

    const list = [1, 2, 3];
    const listproxy = new Proxy(list, {
        set(target, property, value) {
            target[property] = value;
            return true; // 标识设置成功
        }
    });
    
    list.push(4);

    Proxy 是以非入侵的方式监管了对象的读写,而 defineProperty 需要按特定的方式定义对象的属性

    13、Reflect

    Reflect 的静态方法和 Proxy 描述中的方法完全一致。也就是 Reflect 成员方法就是 Proxy 处理对象的默认实现

    Proxy 对象默认的方法就是调用了 Reflect 内部的处理逻辑,也就是如果我们调用 get 方法,那么在内部,proxy 就是将 get 原封不动的交给了 Reflect

    const proxy = new Proxy(obj, {
        get(target, property) {
            return Reflect.get(target, property);
        }
    })

    判断对象是否存在某个属性,可以使用 in 操作符,可以使用Reflect.has(obj, name);

    删除一个属性可以使用 delete,也可以使用 Reflect.deleteProperty(obj, name);

    获取所有属性名可以使用 Object.keys,也可以使用 Reflect.ownKeys(obj);

    14、解析 get 参数

    通过 replace 方法获取 url 中的参数键值对,可以快速解析 get 参数

    const q = {};
    location.search.replace(/([^?&=]+)=([^&]+)/g,(_,k,v)=>q[k]=v);
    console.log(q);

    15、解析连接 url

    可以通过创建 a 标签,给 a 标签赋值 href 属性的方式,获取到协议, pathname,origin 等 location 对象上的属性

    // 创建a标签
    const aEle = document.createElement('a');
    // 给a标签赋值href路径
    aEle.href = '/test.html';
    // 访问aEle中的属性
    aEle.protocol; // 获取协议
    aEle.pathname; // 获取path
    aEle.origin;
    aEle.host;
    aEle.search;
  • 相关阅读:
    CSS3中的3D效果
    JavaScript判断数据类型方法?
    JS函数中的arguments是什么?
    Vue组件之间通信的几种方式
    Vue插槽详解
    CSS文本溢出效果&滚动条样式设置
    Fibonacci数列计算的三种方法
    堆内存和栈内存详解[转]
    带头结点的单链表反转
    汉诺塔问题
  • 原文地址:https://www.cnblogs.com/chao202426/p/14062078.html
Copyright © 2011-2022 走看看