• 每日思考(2020/03/07)


    题目概览

    • src、href、link的区别是什么?
    • 用css画一个太阳
    • 实现一个flattenDeep函数,把多维数组扁平化

    题目解答

    src、href、link的区别是什么?

    • href是Hypertext Reference的缩写,表示超文本引用。用来建立当前元素和文档之间的链接。常用的有:link、a。例如:

      <link href="reset.css" rel=”stylesheet“/>
      

      浏览器会识别该文档为css文档,并行下载该文档,并且不会停止对当前文档的处理。这也是建议使用link,而不采用@import加载css的原因。

    • src表示引用资源,表示替换当前元素,用在img,script,iframe上,src是页面内容不可缺少的一部分。src是source的缩写,是指向外部资源的位置,指向的内部会迁入到文档中当前标签所在的位置;在请求src资源时会将其指向的资源下载并应用到当前文档中,例如js脚本,img图片和frame等元素

      <script src="script.js"></script>
      

      当浏览器解析到该元素时,会暂停浏览器的渲染,直到该资源加载完毕。这也是将js脚本放在底部而不是头部得原因

    • link和@import的区别

      • link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS
      • link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载
      • link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持
      • ink支持使用Javascript控制DOM去改变样式;而@import不支持

    用css画一个太阳

     <div class="sun">
       <div class="sun-light sl1"></div>
       <div class="sun-light sl2"></div>
       <div class="sun-light sl3"></div>
       <div class="sun-light sl4"></div>
       <div class="sun-light sl5"></div>
       <div class="sun-light sl6"></div>
       <div class="sun-light sl7"></div>
       <div class="sun-light sl8"></div>
    </div>
    
    // css
    .sun {
      margin: 200px;
       200px;
      height: 200px;
      border-radius: 50%;
      background: red;
      box-shadow: 0 0 21px #fe9e9e;
      position: relative;
    }
    // 光线的宽高据 sun-body 而动
    .sun-light {
       100px;
      height: 6px;
      background: yellow;
      position: absolute;
      left: 0;
      top: 0;
    }
    .sl1 {
      left: 50px;
      top: -58px;
      transform: rotate(90deg);
    }
    .sl2 {
      top: -14px;
      left: 160px;
      transform: rotate(-45deg);
    }
    .sl3 {
      top: 97px;
      left: 205px;
    }
    .sl4 {
      top: 206px;
      left: 160px;
      transform: rotate(45deg);
    }
    .sl5 {
      top: 252px;
      left: 50px;
      transform: rotate(90deg);
    }
    .sl6 {
      top: 206px;
      left: -60px;
      transform: rotate(-45deg);
    }
    .sl7 {
      top: 97px;
      left: -105px;
    }
    .sl8 {
      top: -14px;
      left: -60px;
      transform: rotate(45deg);
    }
    

    实现一个flattenDeep函数,把多维数组扁平化

    // 多维数组扁平化 
    var arr=[1,2,[3,4,[5,6,7]],9,[10,11]]
    // 方法一  循环数组+递归调用
    function steamroller (arr){
      // 1.创建一个新数组,保存扁平后的数据
      var newArr=[];
      // 2.for循环原数组
      for(var i=0;i<arr.length;i++){
        if(Array.isArray(arr[i])){
          // 如果是数组,调用steamroller 将其扁平化
          // 然后在push 到newArr中
          newArr.push.apply(newArr,steamroller(arr[i]))
        }else {
          // 反之 不是数组,直接push进newArr
          newArr.push(arr[i])
        }
      }
      // 3.返回新的数组
      return newArr
    }
    console.log(steamroller(arr)) // [ 1, 2, 3, 4, 5, 6, 7, 9, 10, 11 ]
    
    // 方法二  利用apply+some
    // 利用arr.some判断当数组中还有数组的话,递归调用steamroller2扁平函数(利用apply扁平), 用concat连接,最终返回arr;
    function steamroller2(arr){
      while(arr.some(item=> Array.isArray(item))){
        arr=[].concat.apply([],arr)
      }
      return arr
    }
    console.log(steamroller2(arr))
    
    // 方法三   reduce方法
    // 当数组中还有数组的话,递归调用steamroller3扁平函数(利用reduce扁平), 用concat连接,最终返回arr.reduce的返回值;
    function steamroller3(arr){
      return arr.reduce((prev,next)=>{
        return prev.concat(Array.isArray(next)?steamroller3(next):next)
      },[])
    }
    console.log(steamroller3(arr))
    
    // 方法四   es6 展开运算符
    // 利用arr.some判断当数组中还有数组的话,递归调用flatten扁平函数(利用es6展开运算符扁平), 用concat连接,最终返回arr;
    
    function steamroller4(arr){
      while(arr.some(item=> Array.isArray(item))){
        // arr=[].concat.apply([],arr)
        arr=[].concat(...arr)
      }
      return arr
    }
    console.log(steamroller4(arr))
    
  • 相关阅读:
    Codeforces 812E Sagheer and Apple Tree
    bzoj 4765: 普通计算姬
    bzoj 4552: [Tjoi2016&Heoi2016]排序
    bzoj 1096: [ZJOI2007]仓库建设
    bzoj 1030: [JSOI2007]文本生成器
    bzoj 1095: [ZJOI2007]Hide 捉迷藏
    JS实现HashMap
    A4纸表格打印
    JAVA字符串格式化-String.format()的使用
    证书打印CSS知识点总结
  • 原文地址:https://www.cnblogs.com/EricZLin/p/12439823.html
Copyright © 2020-2023  润新知