每日思考(2020/01/02)

题目概览

  • 对GBK和UTF-8的理解
  • 对z-index的理解
  • bind、call、apply的区别?

题目解答

对GBK和UTF-8的理解

  • 含义

    • GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符
    • UTF-8编码:它是一种全国家通过的一种编码,如果你的网站涉及到多个国家的语言,那么建议你选择UTF-8编码
  • 区别
    • UTF8编码格式很强大,支持所有国家的语言,正是因为它的强大,才会导致它占用的空间大小要比GBK大,对于网站打开速度而言,也是有一定影响的
    • GBK编码格式,它的功能少,仅限于中文字符,当然它所占用的空间大小会随着它的功能而减少,打开网页的速度比较快
  • 网页乱码
    • 如果网页源代码是gbk编写的,而内容中的文字是utf-8的,那么,此时打开浏览器就会出现HTML乱码。反之也会出现乱码。解决办法是使用专业的编辑软件进行HTML网页的编写。例如,尽量不要直接使用记事本进行编写
    • HTML网页编码是gbk,但是程序从程序库中调出呈现的是utf-8编码的内容也会造成编码乱码。此时,程序查询数据库数据显示数据进行转码即可
      mysql_query("SET NAMES 'UTF-8'") //将查询数据转码为UTF-8
    • 浏览器不能自动检测网页编码,造成网页乱码,解决办法是网页加入meta charset编码标签
      <meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />

对z-index的理解

  • 取值

    /* 字符值 */
    z-index: auto;
    
    /* 整数值 */
    z-index: 0;
    z-index: 3;
    z-index: 289;
    z-index: -1;/* 使用负值降低优先级 */
    
    /* 全局值 */
    z-index: inherit;
    z-index: initial;
    z-index: unset;
  • 特性
    • 支持负值
    • 支持css3 animation动画
      @keyframes zIndex{
          0% {z-index:-1;}
          100% {z-index:51;}
      }
    • 两个div,无设置定位(z-index设置与否都是失效的)或者两个都已定位元素且z-index相同,层级关系按照文档流的顺序显示,后面的覆盖前面的
      <div style="width:100px;height:100px;background-color:red;position:relative;top:10px;"></div>
      <div style="width:50px;height:50px;background-color:blue;"></div>
      
      <div style="width:100px;height:100px;background-color:red;position:relative;z-index:1;"></div>
      <div style="width:50px;height:50px;background-color:blue;position:relative;top:-50px;z-index:1;"></div>
    • 如果两个元素都没有设置z-index,使用默认值auto,一个定位一个没有定位,那么定位元素覆盖未定位元素
      <div style="width:100px;height:100px;background-color:red;"></div>
      <div style="width:50px;height:50px;background-color:blue;position:relative;top:-50px;"></div>
      
      <div style="width:100px;height:100px;background-color:red;"></div>
      <div style="width:50px;height:50px;background-color:blue;position:relative;top:-25px;z-index:-5;"></div>
    • 如果父元素z-index有效,那么子元素无论是否设置z-index都和父元素一致,在父元素上方
      <div style="width:100px;height:100px;background-color:red;position:relative;z-index:10;">
          <div style="width:50px;height:50px;background-color:blue;position:relative;z-index:-5;"></div>
      </div>
    • 如果父元素z-index失效(未定位或者使用默认值),那么定位子元素的z-index设置生效
      <div style="width:100px;height:100px;background-color:red;position:relative;">
          <div style="width:50px;height:50px;background-color:blue;position:relative;z-index:-5;"></div><!--z-index为-5所以在父元素的后面>
      </div>
    • 如果兄弟元素的z-index生效,那么其子元素覆盖关系由父元素决定
      <div style="width:100px;height:100px;background-color:red;position:relative;z-index:5;">
          <div style="width:50px;height:250px;background-color:blue;position:relative;z-index:50;"></div>
      </div>
      <div style="width:100px;height:100px;background-color:yellow;margin-top:-40px;position:relative;z-index:10;">
          <div style="width:30px;height:150px;background-color:black;position:relative;z-index:-10;"></div>
      </div>

bind、call、apply的区别?

  • 相同:callapply都是为了解决改变this的指向。作用都是相同的,
  • 不同:只是传参的方式不同。
    • 除了第一个参数外,call可以接收一个参数列表

      //fun.call(obj, arg1, arg2, arg3,...) 指定作用域 同时执行函数
      Function.prototype.myCall = function (context = window) {
        context.fn = this;
        var args = [...arguments].slice(1);
        var result = context.fn(...args);
        // 执行完后干掉
        delete context.fn;
        return result;
      }
    • apply只接受一个参数数组。
      //fun.apply(obj, [arg1, arg2, arg3, ...]) 指定作用域 同时执行函数,后面的参数是数组
      Function.prototype.myApply = function (context = window) {
        context.fn = this;
        var result
        // 判断 arguments[1] 是不是 undefined
        if (arguments[1]) {
          result = context.fn(...arguments[1])
        } else {
          result = context.fn()
        }
        delete context.fn
        return result;
    • bind绑定完之后返回一个新的函数,不执行
      //const fb = fun.bind(obj) fb(arg1, arg2, ...) 返回一个函数,在使用 bind 之后,只会返回一个修改了作用域的函数,等再次调用时才会执行
      Function.prototype.myBind = function (context) {
        if (typeof this !== 'function') {
          throw new TypeError('Error')
        }
        var _this = this
        var args = [...arguments].slice(1)
        // 返回一个函数
        return function F() {
          // 因为返回了一个函数,我们可以 new F(),所以需要判断
          if (this instanceof F) {
            return new _this(...args, ...arguments)
          }
          return _this.apply(context, args.concat(...arguments))
        }
      }

原文地址:https://www.cnblogs.com/EricZLin/p/12142867.html

时间: 2024-11-02 16:09:04

每日思考(2020/01/02)的相关文章

[記事]2020/01 計畫

咕咕,產出文章真的好難 在此提醒 現在時間: 2020/01/11 12:50 2020 的第 1 個月已經過去快要一半啦 2020/01 月規劃 & 展望 邊做邊補充,希望 2 月來看可以打很多勾 3 FOCUS [ ] 最後一周的複習,堅持下去 [ ] 提高組 3 sessions [ ] 專注把其他小小.生活.細節處做好 Todo General [ ] 2019 檢討與檢視與整理 [ ] 2020 New Year resolutions Algos [ ] 線段樹入門 [ ] BIT

shell 如何生成一个序列 01 02 03 04 05

seq 命令介绍 用途: seq - print a sequence of numbers 语法: seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq [OPTION]... FIRST INCREMENT LAST 常用选项 -s, --separator=STRING use STRING to separate numbers (default: \n) -w, --equal-width equalize width by paddi

2016年05月01.02日【EPM-易通元】最新价位公布

涨了.涨了.又涨了! 我们的「EPM易通元」天天见涨!太给力了!! 2016.05月01.02日今天早晨已涨0.01美金,目前已到0.40美金啦!如果你有1000个易通元,你今天就收益10美金 如果你有10000个易通元,今天就收益100美金 如果你有100000个易通元,你今天就收益1000美金 如果你有1000000个易通元,你今天就收益10000美金. 恭喜买到「EPM易通元」的朋友们,买到即是赚到! 买入210美金到3500美金 :1美金:6.3人民币兑换,举例买入3500美金(人民币2

linux下生成00 01 02..99的这些数

[[email protected] ~]# seq -s " " -w 9901 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

01.01教程简介01.02软件的基本工作界面01.03模型设计的一般过程

xue.taoao.com 我的学习记录 01.01教程简介 --- 01.02软件的基本工作界面 - 任务窗口 拖拽到实例中 - 底部显示单位 - 确定当前环境 - 放大缩小 - 鼠标旋转缩放移动 --- 01.03模型设计的一般过程 ----- 原有凸台基础上    插入一个凸台 进入草图环境  选择原有凸台的一个面为基准面   空格  正视于    画一个圆形 - 智能尺寸-标注并且同时设置尺寸 - - 拉伸切 和凸台一样     拉伸切除-选择基准面进入草图   正视于  画圆  给定深

2020/01/10日报

日报内容详情: 日期:2020/01/10 前言: 今天洗漱完,本来是准备走路去上课的,但是走到外面一看,天气阴霾,下起了小雨,让人感觉是很不舒适,计划也赶不上变化啊,只好做公交去上课了.好了,不多说废话,开始今天的学习记录. 学习记录 上午: 开始的时候就下载了两个漏洞扫描软件,NESSUS和Acunetix,这两个软件都是开源的,Nessus使用的是vm镜像版的,这个软件安装时真的慢,感觉电脑都有点卡了,当然这应该是我电脑太破了,已经在暗示我换一台了. 终于安装好了,要开始使用操作了,因为我

人工智能行业每日必读(01&#183;16)

北京地铁正研究「刷脸」安检方案 1 月 16 日消息,北京市人大代表.北京市地铁运营有限公司党委书记.董事长谢正光透露,正在探索基于乘客信用的智慧安检模式,加强乘客信用体系建设,建立地铁『白名单』及快速安检通道制度.」据悉,目前,「刷脸」的快捷安检方案正在研究中,将在客流量较大的车站先行试点. 来源:http://www.egsea.com/news/detail?id=553902 云测数据荣登2019「ToB行业影响力·产品价值榜」 1月14日,2019 ToB行业影响力价值榜单重磅揭晓.云

每日思考(2020/01/04)

题目概览 对<meta>标签的理解 rgba()和opacity这两个的透明效果有什么区别? 为浏览器元素添加一个随机颜色的边框 在浏览器中输入url到页面显示出来的过程发生了什么 题目解答 对<meta>标签的理解 定义:元素可提供相关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词等等.标签位于文档的头部<head></head>标签内,不包含任何内容. 标签的属性定义了与文档相关联的[名称/值对]. HTML

每日思考(2020/01/03)

题目概览 对影子(Shadow)DOM的了解 怎样修改自动填充表单的黄色背景? 对arguments的理解 题目解答 对影子(Shadow)DOM的了解 概念:是浏览器的一种能力,它允许在浏览器渲染文档(document)的时候向其中的 Dom 结构中插入一棵 DOM 元素子树,但是特殊的是,这棵子树(shadow-dom)并不在主 DOM 树中.可以想象成我们在 Vue 或者 React 中使用的一个个组件,是一种将 HTML 结构.Style 封装起来的结构. <!--> 浏览器开发者设置