zoukankan      html  css  js  c++  java
  • YY前端笔试总结

    1.一个元素float以后。为什么要清除浮动?清除浮动的方法有哪些?

    浮动确实是经经常使用,也知道清除浮动的必要性。但要我道个所以然,还是得绞尽脑汁。我个人的理解是,当一个元素float以后,就脱离正常的文档流,高度塌陷,也就是浮动元素原来的占位空间就消失了。那么紧跟着的元素的宽度就会占领浮动元素的位置,好像浮动元素不存在似的。那么疑问就来了。假设紧跟着的元素没有不论什么的清除浮动行为,可是感觉好像认的浮动元素一样,给他让出空间。请看:

    <span style="font-size:18px;"><div style="float:left;with:100px;height:100px;background:yellow;">float content</div>
    <div class="normal" style="background:red;height:800px;">normal content</div></span>
    效果:

    事实上,经过求证.normal元素并没有认得float元素。他的宽度事实上有延伸到float那边,仅仅是float元素覆盖在他的上面,即z-index比較高,不信,你看一下效果(.class{margin-left:-10px;}):


    只是。.normal元素的text文本倒像是认得float元素一样,这个不知道该怎么解释。或许是w3c的规定吧?所以大概了解float的工作原理以后。我们就知道该怎样去清除浮动了。

    (1)父级的元素中清除浮动:利用定高来清除浮动,只是这种方法的唯一确定是父级的元素中必须是定高布局。

    (2)借用伪元素来清除浮动,在父级的元素中上使用。.normal:after{content:"";clear:both;display:inline-block||block;} .normal{_zoom:1//触发haslayout}

    (3)最方便也最经常使用的是在紧跟的浮动元素后面用clear:both;

    (4)导航栏浮动以后ul元素上常常会用overflow:hidden来清除浮动;

    (5)bootstrap经经常使用的是加入空白元素<div class="clearfix"></div>  .clearfix{clear:both;}

    以上就是我能想到的清除浮动的方法。

    2.Javascript跨域訪问问题

    在实际项目中没有机会去领略Javascript跨域訪问问题,但倒是听说过。Javascript出于安全考虑以及同源策略的限制。不同意跨域调用其它页面的对象。可是程序猿是万能的。总想破不能为万能,因此就有了跨域訪问的技术。这样不久降低代码的开发并且还实现代码共享。何乐而不为呢?so,赶紧去补及一下有关的实现技术。

    參考: JavaScript跨域总结与解决的方法,认真研读以后,对跨域有了进一步的了解,希望尽快用得上这伟大的技术。

    跨域技术分不同的场合不同的方法:

    (1)主域同样可是子域不同一时候,採取document.domain+iframe的设置:

    域名一:http://www.a.com/a.html  域名二:http://script.a.com/b.html(主域为a.com,二级域为a.com前面的。ps:顺便弄清一下主域和二级甚至多级域的概念,比如:baidu.com是主域。那么*.baidu.com都是二级域。。。不懂继续度娘去)

    在www.a.com域名下的a.html下设置代码:

    document.domain=a.com;

    var iframe=document.createElement("iframe");

    iframe.src="http://script.a.com/b.html";

    iframe.style.display="none";

    document.body.appendChild("iframe");

    window.onload=function(){

         var doc=iframe.documentContent||iframe.contentWindow.document;

        alert(doc.document.getElementsByTagName('h1')[0].lastChild.nodeValue);

    }

    另外在script.a.com的b.html上也要加上document.domain=a.com;假设两者之间没有不论什么挂钩以及约定的话。那后果不堪设想。

    这种方法简单是简单,但也会带来一些问题。试想。假设script.a.html受到攻击或是安全上的问题,那同主域的其它域名也会引起安全上的漏洞。另一个方面是假设页面中引入过多的iframe框架的话,页面会非常难控制。

    (2)这种方法是最熟悉的,动态创建script标签,然后再用回调函数去处理。

    动态创建script以及相关操作就不用详说了,有趣的是推断节点是否载入完成。不是用window.onload而是js.onload

    js.onload=js.onreadystatuschange=function(){

        if(!this.readyState||this.readyStatu==='loaded'||this.readyState==='complete'){

            //callback函数在此

           js.onload=is.onreadystatechange=null;

        }

    }

    还有其它的方法,在刚刚的博客上也用具体的解说。眼下还是没法理解。慢慢的去琢磨,去运用。

    3.reflow是什么?

    reflow是回流的意思。作用在浏览器渲染页面时对元素的构建,理解是理解了。但还是不能非常好的道出个所以然。所以查了非常多资料,认为别人写的不错。所以转载了一下,地址:怎样降低浏览器reflow。方便以后看。

    4.other other

    其它的相对而言还是比較简单的,考的都是基础,基础较扎实细心的话一般都没有问题--期待走得更远更高。come on!




  • 相关阅读:
    appium连接夜游神的方法
    selenium自动化测试配置工具整理
    appium+Python 启动app(三)登录
    appium+Python 启动app(二)
    appium+Python 启动app(一)
    appium滑动操作(向上、向下、向左、向右)
    【Prometheus专题】4. Prometheus通过webhook集成Slack或Mattermost发送告警
    【Prometheus专题】3. Prometheus监控组件的配置
    【Prometheus专题】2. Prometheus监控组件安装
    【Prometheus专题】1. Prometheus介绍(何为Prometheus)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5184379.html
Copyright © 2011-2022 走看看