• 2018年前端年末小结


    前言:2018年即将接近尾声,现对前端基础做一个小结与巩固。

    【一、HTML+CSS】:

    <!-- 声明为 HTML5 文档,不区分大小写:<!doctype html> -->
    <!DOCTYPE html>
    <!-- HTML文档的后缀名可以是:.htm -->
    <html>
    <head>
    <!-- 中文网页需要使用 <meta charset="utf-8"> 声明编码 -->
    <meta charset="utf-8">
    <title>网页标题</title>
    <!-- 内部样式(单一页面对应) -->
    <style type="text/css">
    #div1, #div2{
    150px; height:50px; margin:10px 0;padding:10px;border:1px solid #aaaaaa;
    }
    p:first-child{
    background:yellow;
    }
    a:hover{
    /* text-decoration:none; */
    border: 1px solid;
    padding: 5px;
    border-radius: 50%;
    }
    </style>
    <!-- 外部样式(推荐:切换主题) -->
    <link rel="stylesheet" type="text/css" href="#"/>
    <!-- <script src="#" type="text/javascript" charset="utf-8"></script> -->
    </head>
    <body>
    <!-- 多数标签是成对的:均具有四个通用属性:id+ -->
    <h1 id="abc">我的第一个标题</h1>
    <p class="className" style="-moz-animation: .25s, 100ms;" title="我的第一个段落">
    翻译: <q>My first paragraph.</q><br/>
    <b>粗体文本</b><br/>
    <code>计算机代码</code><br/>
    <em>强调文本</em><br<br/>/>
    <i>斜体文本</i><br/>
    <kbd>键盘输入</kbd> <br/>
    <pre>预格式化文本</pre><br/>
    <small>更小的文本</small><br/>
    <strong>重要的文本</strong><br/>
    <abbr> (缩写)</abbr><br/>
    <address> (联系信息)</address><br/>
    <!-- (文字方向) -->
    <p><bdo dir="rtl">该段落文字从右到左显示。</bdo></p>
    <blockquote> (从另一个源引用的部分)</blockquote><br/>
    <cite> (工作的名称)</cite><br/>
    <del> (删除的文本)</del><br/>
    <ins> (插入的文本)</ins><br/>
    <sub> (下标文本)</sub><br/>
    <sup> (上标文本)</sup><br/>
    </p>

    <!-- 单标签、块标签占少数,块标签不会自动换行,行标签占一行可以转换为块标签 -->
    <br/>
    <span>块标签</span>
    <br/>
    <!-- 对比路径引用+去除下划线 -->
    <a href="#abc" target="_blank" style="text-decoration:none;">回到顶栏并跳转新页面</a>
    <br/>
    <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    <img id="drag1" src="#" alt="可拖拽的图片" width="120" height="30" draggable="true" ondragstart="drag(event)"/>
    <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    <hr/>
    <h6>最小的标题:<del>javascript</b></h6>
    <!-- 文本框 -->
    <textarea rows="10" cols="30" id="demo">我是一个文本框</textarea>
    <br/>
    <!-- 表单 -->
    <form name="input" action="html_form_action.php" method="get">
    Username: <input type="text" name="user">
    <input type="submit" value="Submit">
    </form>
    <button type="button" onclick="myFunction()" style="color: red;">点击按钮</button>
    <!-- 脚本 -->
    <script type="text/javascript">
    //img:drag阻止默认事件+draggable允许拖拽
    function drag(ev){
    ev.dataTransfer.setData("Text",ev.target.id);
    }
    //***********************************************
    //div
    function drop(ev){
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
    }
    function allowDrop(ev){
    ev.preventDefault();
    }
    //点击
    function myFunction(){
    document.getElementById("demo").style.color="greenyellow";
    alert("点击改变demo样式")
    }
    </script>
    <!-- 菜单列表:去除点 -->
    <ul style="list-style-type:none">
    <li>1.项目</li>
    <li>2.项目</li>
    </ul>
    <!-- 表格 -->
    <table border="1" style="tr:nth-child(2n){background:orange;}">
    <tr>
    <th>表格标题</th>
    <th>表格标题</th>
    </tr>
    <tr>
    <td>表格数据</td>
    <td>表格数据</td>
    </tr>
    </table>
    <!-- 框架:如获取某网页数据 -->
    <iframe src="demo_iframe.htm" frameborder="0" name="iframe_a"></iframe><br/>
    <a href="#" target="iframe_a">点击切换框架内容</a>
    <!-- 布局:使用h5新标签(语义元素)footer,文本© -->
    <div id="footer" style="background-color:#FFA500;clear:both;text-align:center;">
    版权&nbsp;&#169; xxx.com
    </div>
    </body>
    </html>

     【2.JavaScript】:

    1.HTML5新特性:web存储

    • 保存数据:localStorage.setItem(key,value);
    • 读取数据:localStorage.getItem(key);
    • 删除单个数据:localStorage.removeItem(key);
    • 删除所有数据:localStorage.clear();
    • 得到某个索引的key:localStorage.key(index);
    //保存数据  
    function save(){  
        var site = new Object;
        site.keyname = document.getElementById("keyname").value;//获取表单输入的keyname或userName
        site.sitename = document.getElementById("sitename").value;  
        site.siteurl = document.getElementById("siteurl").value;
        var str = JSON.stringify(site); // 将对象转换为字符串,即{xxx}=>‘{xxx}’
        localStorage.setItem(site.keyname,str);  //【长期保存本地数据到浏览器】
        alert("保存成功");
    }  
    //查找数据  
    function find(){  
        var search_site = document.getElementById("search_site").value;  
        var str = localStorage.getItem(search_site);  //获【取本地数据,免登陆】
        var find_result = document.getElementById("find_result");
        var site = JSON.parse(str);  
        find_result.innerHTML = search_site + "的网站名是:" + site.sitename + ",网址是:" + site.siteurl;  
    }
    //删除数据   
    function del(name) {
      localStorage.removeItem(name);//【注销登陆】
      alert("删除成功!");
      loadAll();
    }

     2.JavaScript:cookie存储

    1. 设置(创建/覆盖)cookie 值的函数,如:document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";//key:value+过期时间+cookie路径(当前url)
    2. 获取 cookie 值的函数,如:var x = document.cookie;//返回所有
    3. 删除 cookie 值的函数,如:document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";//value设为空
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <head>
    <script>
    function setCookie(cname,cvalue,exdays){
        var d = new Date();
        d.setTime(d.getTime()+(exdays*24*60*60*1000));
        var expires = "expires="+d.toGMTString();
        document.cookie = cname+"="+cvalue+"; "+expires;
    }
    function getCookie(cname){
        var name = cname + "=";
        var ca = document.cookie.split(';');
        for(var i=0; i<ca.length; i++) {
            var c = ca[i].trim();
            if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
        }
        return "";
    }
    function checkCookie(){
        var user=getCookie("username");
        if (user!=""){
            alert("欢迎 " + user + " 再次访问");
        }
        else {
            user = prompt("请输入你的名字:","");
              if (user!="" && user!=null){
                setCookie("username",user,30);
            }
        }
    }
    </script>
    </head>
        
    <body onload="checkCookie()"></body>
        
    </html>

    3.事件:常用的6个dom事件

    事件描述
    onchange HTML 元素改变
    onclick 用户点击 HTML 元素
    onmouseover 用户在一个HTML元素上移动鼠标
    onmouseout 用户从一个HTML元素上移开鼠标
    onkeydown 用户按下键盘按键
    onload 浏览器已完成页面的加载

    【补充】:

    (1-UI(用户界面事件):当用户与页面的上的元素交互时发生,但不一定与用户操作有关的事件。

    load事件:当页面加载完毕时在qindow上触发,当图像加载完毕时在ing元素上触发,等等,页面完全加载完毕(包括所有图像,js文件,css等外部文件资源)时触发,img只要设置了src就会下载;

    unload事件:当页面完全卸载时在window上触发,当一个页面切换到另一个页面时就会触发,经常利用这个事件来清除引用,减少内存的泄露

    error:当发生js错误时在window上触发,当图像无法加载时在img上触发
    abort事件:当用户停止下载过程时,如果嵌入的内容没有加载完成,则在object元素上触发
    select:当用户选择文本框(input或textarea)中的一或多个字符时触发
    resize:当窗口或框架的大小发生改变时在window上触发
    scroll:当用户滚动带滚动条的元素中的内容时,在该元素上触发

    2-焦点事件:当元素获得焦点或失去焦点时触发
    blur:失去焦点时触发,这个事件不会冒泡
    focus:获得焦点时触发,不冒泡
    focusin:在获得焦点时触发,冒泡,DOM3新增
    focusout:在失去焦点时触发,冒泡
    3-鼠标事件:当用户通过鼠标在页面上执行操作时触发
    click:单击事件,用户单机鼠标按钮(一般是左键)或按下回车键时触发
    dbclick:双击事件,当双击鼠标时触发(一般是左键)
    mousedown:当用户在按下任意鼠标按钮时触发
    mouseup:当用户释放鼠标按钮时触发
    mouseenter:在鼠标光标从外部首次(是指每次进入元素,并不是只执行一次)时触发,而且这个事件不冒泡,而且在光标移到到后代元素上不会触发(从父区域进入子区域,再从子区域进入父区域是不会触发的,因为他认为子区域也是他的一部分),DOM3定义的
    mouseleave:和mouseenter是一对,刚好相反
    mousemove:当鼠标指针在元素内部移时重复的触发
    mouseout:当鼠标指针位于一个元素上方,然后移到到另一个元素上方时触发,另一个元素可能是外部元素也可能是他的后代元素,因为他不认为后代元素所在的区域是他的一部分
    mouseover:和mouseout是一对,恰好相反

    除了mouseleave和mouseenter之外都会冒泡
    click事件只有触发了mousedown和mouseup之后才会触发,代表click只有触发两次clic才会触发,如果取消了之前的事件将会不触发
    鼠标事件都是在浏览器视口中的特定位置发生的,可以通过事件的属性获取到。
    视口区(客户区)坐标位置:clientX和clientY可以获取到位置信息。所有浏览器都支持这两个属性,是相对于浏览器的视口而不是页面而言的,不包括地址栏等
    页面坐标位置:pageX和pageY,相对于页面而言,ie8及更早版本不支持这两个属性,不过我们可以计算出来
    event.clientX + (document.body.scrollLeft + document.documentElement.scrollLeft)
    event.clientY + (document.body.scrollTop + document.documentElement.scrollTop)
    屏幕坐标位置:相对于整个电脑屏幕,screenX和screenY

    4-滚轮事件:当使用鼠标滚轮(或类似事件)时触发
    mousewheel:跟踪鼠标滚轮或笔记本触摸板
    5-文本事件:当在文档中输入时触发
    textinput:在文本显示给用户之前更容易拦截文本,是对keypress的补充
    可编辑区输入字符键才可以出发
    ie9才支持,firefox不支持
    6-键盘事件:当用户通过键盘在页面上执行操作时触发
    keydown:用户按下键盘上的任意键时触发,而且按住不放的话,会重复触发此事件
    keypress:用户按下键盘上的字符键时触发,而且按住不放的话,会重复触发此事件,按下esc也会触发
    keyup:用户释放键盘上的键时触发
    所有元素都支持这三个事件

    keydown-》keypress-》textinput-》keyup
    keyup和keydown的event有个keycoe属性,代表键盘码,与ASCII相对应
    7-合成事件:当为IME(input method editor,输入法编辑器)输入字符触发
    同时按下几个键才能输入一个字符
    8-变动事件:当底层DOM结构发生变化时触发
    DOM结构发生变化时触发

    9.事件委托:本来该自己做的事情,委托给别人做。
    利用的是事件冒泡原理,使用event.target获取触发事件的目标元素。
    优点:
    1- 提高性能,只需要注册一次事件,也方便移除事件。解决事件处理程序过多的问题,在DOM树中尽量最高的层次上添加一个事件处理程序,只指定一个事件处理程序,就可以管理某一类型的所有事件。
    2- 给动态生成的元素添加事件。可以解决动态生成的子元素绑定不上事件的问题。
    <button id="test">点我呀</button>
    <div id="f" class="f"></div>

    var  test =document.getElementById('test');
    var  f =document.getElementById('f');
    var  i =0;

    test.onclick=function() {
    varp =document.createElement('p');
    p.innerHTML= i++;
    f.appendChild(p);
    }

    f.onclick=function(e) {
    console.log(e.target.innerHTML);
    }

    10.模拟事件
    var e = document.createEvent(自定义事件名称)
    node.dispatchEvent(e);

     new CustomEvent(事件名,数据):兼容性不好

    11.其他:

    form有submit事件,表单的提交最好使用submit事件,不使用onclick事件,因为不同的浏览器之间可能存在不同的时差,submit事件和click之间的顺序不同的浏览器之间是不同的表单还有focus事件,blur事件,change事件select的change事件是只有改变了选择项就会发生,而其他表单是在值被修改且失去焦点的时候才会发生:

    序列化表单:formData

    var data = new formData();
    data.append(名,值)

    3.Windows方法:

    • window.open() - 打开新窗口
    • window.document.getElementById("header");//document 也是 window 对象的属性之一:
    • window.close() - 关闭当前窗口
    • window.moveTo() - 移动当前窗口
    • window.resizeTo() - 调整当前窗口的尺寸
    • window.innerHeight - 浏览器窗口的内部高度(包括滚动条)
    • window.innerWidth - 浏览器窗口的内部宽度(包括滚动条)
    • location.hostname 返回 web 主机的域名(如:kp);//可不使用 window 这个前缀
    • location.pathname 返回当前页面的路径和文件名(home/path);
    • location.port 返回 web 主机的端口 (80 或 443);
    • location.protocol 返回所使用的 web 协议(http:// 或 https://);
    • location.href 属性返回当前页面的 URL。
    • location.assign(url) 方法加载新的文档//替换当前原有页面
    • history.back() - 与在浏览器点击后退按钮相同
    • history.forward() - 与在浏览器中点击向前按钮相同
    • alert("sometext");//提示
    • confirm(true);//确认
    • prompt("sometext","defaultvalue");//输入确认
    • setInterval("javascript function",milliseconds);//循环
    • clearInterval(intervalVariable)
    • setTimeout("javascript function", milliseconds);
    • clearTimeout(timeoutVariable)
    • navigator//浏览器信息可被浏览器使用者更改
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
        
    <div id="example"></div>
    <script>
    txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>";
    txt+= "<p>浏览器名称: " + navigator.appName + "</p>";
    txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>";
    txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>";
    txt+= "<p>硬件平台: " + navigator.platform + "</p>";
    txt+= "<p>用户代理: " + navigator.userAgent + "</p>";
    txt+= "<p>用户代理语言: " + navigator.systemLanguage + "</p>";
    document.getElementById("example").innerHTML=txt;
    </script>
    
    </body>
    </html>
  • 相关阅读:
    sqlserver内存释放
    Windows任务管理器中内存使用、虚拟内存区别及与页面文件的关系
    GetMessage
    String.Format(string, arg0)中sring格式
    C#基础--之数据类型
    C# Socket
    C# 对象 序列化 XML
    C# Monitoring-network
    Nginx 网址
    WinSCP 连接 Ubuntu 拒绝的问题
  • 原文地址:https://www.cnblogs.com/wheatCatcher/p/10173244.html
Copyright © 2020-2023  润新知