12-27前端冲刺JS数组去重(完美版)CSS实现布局响应式变化浏览器-requestIdleCallback和requestAnimationFrame

JS数组去重(完美版)-CSS实现布局响应式变化-浏览器-requestIdleCallback和requestAnimationFrame

JS数组去重(数组中包含数组对象,对象,bool对象,undefined ,null等等的完美去重)
let arr=["1","1",1,1,false,false,true,true,undefined,undefined,{},{},99,99,NaN,NaN,[1,2],[1,2],{a:1},{a:1}];

function includeArray(arr1,arr2){
    let j;
    for( j  = 0; j < arr1.length; j++){
        if(arr1[j].toString() === arr2.toString()){
            return false;
        }
    }
    if(j >= arr1.length){
        return true;
    }else{
        return false;
    }
}
function includeObject(objectArr,obj2){
    let j;
    for(j = 0; j < objectArr.length; j++){
        if(JSON.stringify(obj2) === JSON.stringify(objectArr[j])){
            return false;
        }
    }
    if(j>=objectArr.length){
        return true;
    }else{
        return false;
    }
}
function unique (arr) {
    let array=[];
    let brr = []; //存下数组中的数组
    let crr = []; //存下数组中的对象
    let obj={};
    for(let i=0;i<arr.length;i++){
        if(arr[i] instanceof Object){
            if(arr[i] instanceof  Array){
                if(includeArray(brr,arr[i])){
                    brr.push(arr[i]);
                }
            }else{
                if(includeObject(crr,arr[i])){
                    crr.push(arr[i]);
                }
            }
        }else{
            if(!obj[arr[i]])
            array.push(arr[i]);
            obj[arr[i]]=1
        }
    }
    return array.concat(brr).concat(crr);
}

console.log(unique(arr));
//打印[
//   '1',      false,
//   true,     undefined,
//   99,       NaN,
//   [ 1, 2 ], {},
//   { a: 1 }
// ]
//
CSS实现一个简单的响应式布局

响应式布局实现方式
1.媒介查询
通过媒介查询设置样式Media Queries
它根据条件告诉浏览器如何为指定视图宽度渲染页面。

直接在css文件上使用@media screen and (max-width:980px) {
    #head {...}
    #content{ ... }
    #footer {...}
}
或者
<style media="screen and (min-width:340px) and (max-width:720px)"> 
        body{    
        		background:rgb(16,136,65);
        }
</style>
或者导入外文件<link rel = "stylesheet" href = "#" meida ="screen and (min-width:340px) and (max-width:720px)">

字体响应式rem
rem是相对于根元素的

html{font-size:100%;}
完成后,你可以定义响应式字体:
@media (min-width:640px){body{font-size:1rem;}}
@media (min-width:960px){body{font-size:1.2rem;}}
@media (min-width:1200px){body{font-size:1.5rem;}}

使用百分比
高宽不固定通过使用百分比来达到响应式布局

如果期望以下的div,该如何书写样式

在视口宽度 <=750px展示为长宽都为200px的红色方块
在视口宽度 >750px且 <=1400px 时展示为 长宽400px的蓝色方块
在视口宽度 >1400px 是展示为 长宽 600px 的黑色方块

<div class='container'></div>

实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
    <title>响应式布局</title>
    <style>
        @media (max-width:750px) {
            .container {
                width: 200px;
                height: 200px;
                background-color: red;
            }
        }
        @media (min-width:750px) and (max-width: 1440px) {
            .container {
                width: 400px;
                height: 400px;
                background-color: blue;
            }
        }
        @media (min-width:1440px) {
            .container {
                width: 600px;
                height: 600px;
                background-color: black;
            }
        }
    </style>
</head>
<body>
<div class="container"></div>
</body>
</html>
浏览器requestIdleCallback 与 requestAnimationFrame 的作用分别是什么?有何异同?

requestAnimationFrame:
定义:是每次屏幕被刷新时被调用的,此方法有一个参数,传入的这个方法将在下一次屏幕刷新时被调用
作用:传入的方法在每次屏幕刷新时都会被调用
requestIdleCallback:
定义:则是在每次屏幕刷新时,判断当前帧是否还会有多余的时间,如果有则会调用requestIdleCallback
作用:传入的方法在屏幕刷新完成有空余时间的时候会调用
二者区别:前者一定会被调用,后者必须是屏幕刷新完成之后有空余时间才会进行调用。如果浏览器处于忙碌状态那么requestIdleCallback
函数一直不会被调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值