美文网首页
每日前端签到(第七十六天)

每日前端签到(第七十六天)

作者: 拿着号码牌徘徊 | 来源:发表于2019-10-31 08:12 被阅读0次
    第七十六天(2018-10-19)

    题目一:

    1. 通过设置target="_blank"即可实现链接在新窗口打开;
    2. head中为base元素设置target="_blank"即可为所有的链接设置默认的打开方式为新窗口打开;

    参考文档:<base>:文档根 URL 元素 - HTML(超文本标记语言) | MDN

    题目二:
    兼容性问题
    1.IE6margin双边距问题
    2.IE67 li间隙问题
    3.图片间隙问题——vertical-align:top
    4.ie6下高度小于19px处理成19px;font-size:0;或者overflow:hidden
    5.ie8以下滤镜问题,filter:alpha(opacity=50)
    6.IE6 position:fixed 不兼容,fixed定位ie6兼容,js处理,通过获取滚动高度,赋值给需要固定的元素,设置绝对定位,设置top
    7.ie6下父级的overflow:hidden是保不住子级的相对定位的(relative)-解决,给父级加定位
    8.ie6下,绝对定位的父级,宽高是奇数的话,定位偏移会出现1px的偏差
    9.ie6下,内容会撑开设置好的宽度
    10.ie6,7 3px问题
    11.<p><h3></h3></p>会把p元素分割成两个,原因,嵌套的规范性,p需要嵌套inline元素
    12.在ie6下,1px dotted #000 不兼容。精度问题,可以用背景平铺
    13.ie6下margin传递需要触发haslayout,父级有边框时,子元素margin值消失,解决办法,触发父级haslayout
    14.ie6下当一行子元素占有的宽度之和与父级的宽度相差超过3px或者有不满行状态的时候,最后一行子元素的下margin就会失效
    15.ie6下的文字溢出bug 条件1,子元素的宽度和父级的宽度相差小于3px的时候,2,两个浮动元素中间有注释或内联元素——解决办法:用div吧注释或内联元素包裹起来
    16.ie6下,当浮动元素和绝对定位元素是并列关系的时候,绝对定位会消失,解决办法:给定位元素外面包裹div
    17.ie6,7下,输入类型的表单控件上下各有1px的间隙——解决办法:给input加浮动
    18.ie6,7下,输入类型的表单控件加border:none无效,还是会出现边框——解决办法:1,给border:0;2,重置input的背景
    19.ie6,7下,输入类型的表单控件输入文字的时候,背景图片会跟随移动——解决办法:把背景加给父级
    20.处理ie6 png图片兼容问题js插件,DD_belatedPNG.js,也可以用CSS滤镜处理
    a.css处理
    b.微软behavior扩展,下载iepngfix.htc
    c.js插件
    21.css hack \9——IE10之前的浏览器解析,+,*——IE7包括IE7之前的浏览器解析, _ ——IE6包括IE6之前的IE浏览器
    22.important兼容问题,在IE6下,在important后面加一条同样的样式,会破坏important优先级作用,按照默认的优先级顺序来走
    23.IE6 margin负值不兼容,处理,只要position:relative;这个解决方案在圣杯布局中有出现。圣杯布局,可以用position:absolute;来定位
    题目三:
    JS实现继承的方式有以下几种:

    1.通过构造函数实现继承:
    function Parent1 () {
    this.name= '111';
    }
    function Child1 () {
    Parent1.call(this);
    this.type='222';
    }
    通过这种方式,只能继承定义在父类构造函数内的属性与方法,定义在prototype原型对象内的属性与方法则无法继承,因此对其改进。

    2.通过原型对象进行继承:
    function Parent2 () {
    this.name= '111';
    }
    function Child2 () {
    this.type='222';
    }
    Child2.prototype = new Parent2();
    通过这种方式,则既能继承构造函数内的属性与方法,也能继承原型链上的属性与方法。但是,由于令其原型对象指向父类的一个实例对象,使得所有子类的实例对象所访问到的属性指向同一个对象,所以会出现改变一个子类实例对象的父类中的属性,另一个子类对象的属性也跟着改变。因此我们有下一个方法来改进:

    3.组合方法进行继承:
    function Parent3 () {
    this.name= '111';
    }
    function Child3 () {
    Parent3.call(this);
    this.type='222';
    }
    Child3.prototype = new Parent3();
    但是这种方法,使得父类的构造函数执行了两次,为了减少父类的构造函数的不必要的多次执行,如下修改代码。

    4.组合方法进行继承优化:
    function Parent4 () {
    this.name= '111';
    }
    function Child4 () {
    Parent4.call(this);
    this.type='222';
    }
    Child4.prototype = Parent4.prototye;
    这样解决了前面提到的问题,但是这样简单粗暴的继承,使子类的原型对象指向了父类的原型对象,会导致当子类实例对象通过constructor属性获取其构造函数时,获得的是父类的构造函数(因为constructor属性在prototype属性中被继承),因此再进行优化:

    5.组合方法进行继承优化2:
    function Parent5 () {
    this.name= '111';
    }
    function Child5 () {
    Parent5.call(this);
    this.type='222';
    }
    Child5.prototype = Object.create(Parent5.prototype);
    Child5.prototype.constructor = Child5;
    由于Object.create()这个api的特性,父类的原型对象会继承在子类的原型对象的原型对象上,实现了子类原型对象与父类原型对象的隔离,这时再给子类的原型对象的constructor属性赋值。为什么直接在第四种方式的后面直接赋值呢?因为这是子类与父类的原型对象指向同一个对象,修改属性会同时修改子类与父类的原型对象。
    这样5种实现继承的方法各自的优缺点都明了了。
    题目四:
    我目前的做法:
    电脑开代理->手机wifi连电脑代理->手机访问开发环境->手机数据线连接电脑->访问:chrome://inspect/#devices,跟普通网页一样了。

    相关文章

      网友评论

          本文标题:每日前端签到(第七十六天)

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