zoukankan      html  css  js  c++  java
  • HTML5,CSS3,JavaScript基础知识与使用

    Web前端开发基础

    前端发展史

    1990 年,第一个Web浏览器的诞生;1991 年,WWW诞生,这标志着前端技术的开始。

    在这将近20年的前端发展史中,我们经历了从最早的纯静态页面,到JavaScript跨时代的诞生;从PC端到移动端;从依赖后端到前端可自由打包开发;从早期的网景Navigator浏览器到现在各家浏览器百花齐放……

    我们经历了前端的洪荒时代、Prototype时代、jQuery时代 、后jQuery时期、三大框架割据时代,这其中均是由国外开发者主导,直到如今的小程序时代,才是中国开发者独创的。

    现在只有三个浏览器拥有自己的内核:谷歌浏览器,IE浏览器,火狐浏览器。

    浏览器都遵循W3C:World Wide Web Consortium(万维网联盟)制定的标准。

    HTML5

    HTML:Hyper Text Markup Language(超文本标记语言)

    超文本包括:文字、图片、音频、视频、动画等

    基本结构

    <!--DOCTYPE:告诉浏览器,我们需要使用什么规范-->
    <!DOCTYPE html>
    <html>
        <!--head标签代表网页头部-->
        <head>
            <title>网页标题</title>
            <!--meta描述性标签,它用来描述网站的一些信息-->
    		<meta charest="UTF-8">
    		<meta name="keywords" content="html5">
        </head>
        <!--body标签代表网页主体-->
        <body>
            网页主体
        </body>
    </html>
    

    块级元素和行内元素

    网页标签生成的区域分为块级元素和行内元素。

    • 块元素:无论内容多少,独占一行。

      常见块元素:div、form、h、hr、p、table、ul、ol

    • 行内元素:内容撑开宽度,左右都是行内元素可以排在一行。

      常见行内元素:a、br、em 、font、img、input、select、span、strong 、textarea

    网页标签

    <!--标题标签-->
    <h1></h1>
    
    <!--段落标签-->
    <p></p>
    
    <!--水平线标签-->
    <hr/>
    
    <!--换行标签-->
    <br/>
    
    <!--块标签-->
    <div></div>
    
    <!--重点显示标签-->
    <span></span>
    
    <!--居中标签-->
    <center></center>
    
    <!--加粗标签-->
    <strong></strong>
    
    <!--斜体标签-->
    <em></em>
    
    <!--图片标签,src:图片地址 alt:图片名-->
    <img src="" alt="">
    
    <!--超链接标签,href:链接路径 target:窗口打开方式 _blank 在新窗口打开-->
    <a href="" target=""></a>
    
    <!--特殊符号-->
    空格:&nbsp;
    大于号:&gt;
    小于号:&lt;
    版权符号:&copy;
    
    <!--有序列表-->
    <ol>
        <li>Java</li>
        <li>Python</li>
    </ol>
    
    <!--无序列表-->
    <ul>
        <li>Java</li>
        <li>Python</li>
    </ul>
    
    <!--自定义列表-->
    <dl>
        <dt>自定义</dt>
        <dd>Java</dd>
        <dd>Python</dd>
    </dl>
    
    <!--表格标签 <tr>:行 <td>:列 border:线条宽度 cellspacing:单元格间距-->
    <table border="">
        <tr><!--跨列 colspan-->
            <td colspan="3">1-1</td>
        </tr>
        <tr><!--跨行 rowspan-->
            <td rowspan="2">2-1</td>
            <td>2-2</td>
            <td>2-3</td>
        </tr>
        <tr>
            <td>3-2</td>
            <td>3-3</td>
        </tr>
    </table>
    
    <!--视频 src:资源路径 controle:视频控制工具 autoplay:自动播放-->
    <video src="" controls autoplay></video>
    
    <!--音频-->
    <audio src="" controls autoplay></audio>
    
    <!--内联框架 src:地址 w-h:宽高度-->
    <iframe src="https://www.baidu.com" frameborder="0" width="800px" height="800px"></iframe>
    

    表单

    用来收集用户信息的输入框

    <!--
    表单 form
        action:表单提交的位置,可以是网站,也可以是一个请求处理地址
        method: post get 提交方式
        get:可以在url中看到提交的信息,不安全,高效
        post:比较安全,传输大文件
    
    type:
    	text:文本输入框
    	password:密码框
    	submit:提交按钮
    	reset:重置
    	radio:单选按钮
    	checkbox:多选按钮
    	file:上传框
    	date:日期
    	button:按钮
    		submit:提交
    		reset:重置
    	hidden:隐藏域
    
    	email:邮箱
    	url:链接
    	number:数字
    	range:滑块
    	search:搜索框
    		
    input:
    	id:唯一标识符
    	nama:后台通过name获取对应表单的值
    	value:表单元素对应的值
        readonly:只读
    	checked:默认选中
    
    	readonly 只读,不可改
    	hidden 隐藏,不可见
    	disabled 禁用,不可选
    
    	placeholder:提示信息
        required:非空判断
        pattern:正则表达式判断,在网上获得正则表达式
    	
    select:下拉列表框
    	option:列表框
    	selected:默认选中
    	
    textarea:
    	cols="50" 50列
    	rows="10" 10行
    -->
    <form action="" method="post">
    	姓名:
    		<input type="text" id="name" name="name"><p></p>
    	密码:
    		<input type="password" id="pwd" name="pwd"><p></p>
        邮箱:
        	<input type="email" name="email"><p></p>
    	性别:
    		<input type="radio" name="sex" id="" value="">男
    		<input type="radio" name="sex" id="" value="">女
    		<p></p>
    	爱好:
    		<input type="checkbox" name="hobby">羽毛球
    		<input type="checkbox" name="hobby">敲代码
    		<input type="checkbox" name="hobby">游戏
    		<input type="checkbox" name="hobby">足球
    		<p></p>
    	国家:
    		<select>
    			<option value="" selected="selected">中国</option>
    			<option value="">美国</option>
    			<option value="">日本</option>
    			<option value="">俄罗斯</option>
    		</select>
        附件:
        	<input type="file" id="file" name="file">
    		<p></p>
    		<input type="submit">
        	<input type="reset"/>
        	<p></p>
        介绍:
        	<textarea rows="20" cols="50"></textarea>
    </form>	
    

    CSS3

    CSS:Cascading Style Sheet(层叠级联样式表)

    样式包括:字体、颜色、边距、高度、宽度、背景图片、网页定位、网页浮动等

    导入方式

    导入方式离的越近,优先级越高。

    行内样式 > 内部样式 > 外部样式

    <html>
        <head>
            <!--内部样式-->
            <style>
                h1{color: brown;}
            </style>
    
            <!--外部样式-->
            <link rel="stylesheet" href="../主页.css">
    
            <!--导入式 css2.1-->
            <style>
                @import url(../主页.css);
            </style>
        </head>
    
        <body>
    
            <!--行内样式,在标签元素中,编写一个style属性,添加样式-->
            <h1 style="color:aqua">标题</h1>
        </body>
    </html>
    

    选择器

    选择器越精准越优先

    id选择器>类选择器>标签选择器

    /*标签选择器*/
    h1{}
    
    /*类选择器*/
    .hd{}
    
    /**/
    #hd{}
    
    /*并集选择器:选中所有标签*/
    div,p,#hd{}
    
    /*交集选择器:标签选择器+类选择器或id选择器*/
    div.hd{}
    
    /*后代选择器:选中body标签下的所有h1标签*/
    body h1{}
    
    /*属性选择器 =绝对等于 *=包括等于 ^=开头等于 $=结尾等于*/
    
    	/*选中所有带有id的标签*/
    	a[id]{}
    
    	/*选中类为lee的标签*/
    	a[class=lee]{}
    
    	/*选中href为https开头的标签*/
    	a[href^=https]{}
    
    	/*选中href为com结尾的标签*/
    	a[href$=com]{}
    
    	/*选中href中包括google的标签*/
    	a[href*=google]{}
    
    
    /* 超链接伪类 */
    
    	/* 未访问的链接 */
    	a:link{}
    
    	/* 被访问过的链接 */
    	a:visited{}
    
    	/* 鼠标悬停的链接 */
    	a:hover{}
    
    	/* 鼠标选择的链接 */
    	a:active{}
    

    样式属性

    <!--
    通用属性:
    	宽度(像素或百分比)1px=0.4mm
    	height:高度
    	align:对齐方式
    
    文本属性:
    	color:颜色
    	line-height:行高
    	text-align:对齐方式
    	text-decoration:文本装饰
    	font-size:字体大小
    	font-family:字体
    	font-size:字号
    	font-weight:字体粗细
    	text-align:排版居中
    	text-indent:首行缩进
    
    	text-decoration:overline; 上划线
    	text-decoration:underline; 下划线
    	text-decoration:line-through; 中划线
    	text-decoration:none; 超链接去下划线
    
    背景属性:
    	background-color: 背景色
    	background-image: 背景图片
    	background-position: 背景开始位置(x轴或y轴:left|center|right|像素|百分比)
    	background-repeat: 背景填充方式
    	background: 合写方式
    	background-size: 拉伸背景图片
    
    列表属性:
    	list-style-image: 将列表设置为列表标志
    	list-style-type: 设置列表标志的类型(disc|circle|square)
    	list-style: 合写方式
    
    鼠标属性:
    	cursor:鼠标形状控制(default|pointer|wait|help|text|crosshair|move|url)
    -->
    

    盒子模型

    浏览器对盒子模型水平方向有自适应,但垂直方向没有。

    内边距会把当前的容器撑大,外边距不会。

    只有块级元素才能用盒子模型,只有块级元素才有宽高。

    <!--
    外边距:
    margin-top
    margin-right
    margin-bottom
    margin-letf
    margin:auto(网页居中)
    
    边框:
    border-color:边框颜色
    border-边框宽度
    border-style:边框类型:solid(实线)|dashed(虚线)|none(无边框)
    
    border-top
    border-right
    border-bottom
    border-left
    border
    
    内边距:
    padding-top
    padding-right
    padding-bottom
    padding-left
    padding
    

    浮动

    float:left|right|none

    让当前的元素脱离默默人文档流,处于默认文档流的"第二层"位置,当前元素之前占用的默认文档流的位置将会释放。

    浮动的元素根据设置的方向浮动,直到遇到浮动元素或者父类边界。

    1. 当一个div里面的所有元素都浮动以后,该div会出现塌陷(没有高度),导致后面的元素向前挤。
    2. 页面上的文字不会被浮动元素盖住,文字会环绕在元素的周围。

    当缩小浏览器时,导致宽度减少,元素会换行,可以加一个div设置宽度即可。

    但一般不设置div的高度,所以需要清除浮动。

    清除浮动:指定元素的一边不挨着浮动元素。

    可以解决div塌陷和浮动元素换行的目的。

    clear:left|right

    定位

    position属性:

    relative(相对定位):

    1. 相对于自己所在文档流的位置进行移动。
    2. 元素移动后并不会释放原来在文档流中的位置。

    absolute(绝对定位):

    1. 相对于非static定位的元素。
    2. 如果没有非static定位的父元素,会相对于浏览器。
    3. 设置为绝对定位会释放其在原来文档流中的默认位置。
    4. 使用绝对定位的元素会覆盖后面的文字,浮动不会。

    fixed(相对于浏览器固定定位):

    1. 不管怎么拖动滚动条,始终在一个位置固定。

    static(默认)

    参数:

    left|right|top|bottom:像素|百分比

    /*一种块元素居中方式*/
    #div1{
        position:absolute;
        left:0px;
        right:0px;
        top:0px;
        bottom:0px;
        margin:auto;
    }
    /*
    块级元素的显示与隐藏:解决下拉列表框功能。
    1.display:none/block
    这种方式元素隐藏之后,不占用原来的位置
    2.visibility:hidden/visible
    元素隐藏之后,占用原来的位置
    */
    

    溢出处理

    设置当内容超出块元素时如何处理。

    overflow属性:

    visible:默认,内容会呈现在元素框外。

    hidden:内容会被修剪,隐藏。

    scroll:如果内容被修剪,就会显示滚动条

    auto:如果内容被修剪,就会显示滚动条。

    JavaScript

    JavaScript 是脚本语言,一种轻量级的编程语言。是可插入 HTML 页面的编程代码。

    1. JavaScript由三部分组成:ECMAScript(核心),DOM(文档对象模型),BOM(浏览器对象模型)。

    2. js代码可以写在网页的任意位置。

    3. js为弱类型编程语言,对语法要求不严格,但是要求尽量遵守Java的语法规则。

    4. 浏览器在加载页面时顺序加载。Js代码的位置对网页的加载有影响。

    导入方式

    <!--行内js-->
    <button type="button" onclick="script: location.href='https://www.baidu.com';">baidu</button>
    
    <!--内部js-->
    <script>
    	/*js代码块*/
    </script>
    
    <!--外部js-->
    <script src="new_file.js" type="text/javascript" charset="utf-8"></script>
    

    数据类型

    js中定义变量时不考虑数据类型都用var,在每次赋值时自动改变数据类型。

    undefined:定义了变量没有赋值,默认为undefined。

    null:空,没有值。

    number:数字类型,包括整型和浮点型。

    boolean:true或false。

    object:对象或数组或null类型。

    function:函数方法。

    /* 
    运算符:
    1.数字和字符串在进行除加法之外的运算时,字符串会自动转换成数字.
    2.===:绝对等于,比较内容和数据类型.
    3.在js中,认为"",null,0,false,NaN,undefined是flase.
    4.在使用||进行运算时,如果前面的表达式不为flase,那么返回前面的数据.
    5.在使用&&进行运算时,如果前面的表达式部位flase,那么返回后面的数据.
    */
    var i = 9;
    var y = "3";
    //document.write:向网页中插内容
    document.write("计算i+y="+(i+y));
    document.write(i+y);
    

    函数

    1. 定义函数时并不需要指定返回值,并且参数也不需要指定类型。
    2. 方法必须调用才会执行。
    //定义函数
    //定义方法1.
    function add(i,j){
        return i+j;
    }
    var sum = add(20,30);
    
    //定义方法2.
    //方法名相同时将覆盖上方的方法
    var = function add(i,j){
        return i+j;
    }
    add(20,30);
    
    //异常调用
    add(20,30,40,60);//只使用前两个参数
    

    window

    window对象是js中的最顶层对象。

    调用其方法如window.ducment可以省略window.

    history属性:back()方法:返回,forward()方法:前进。

    location属性:href方法:跳转链接

    <script type="text/javascript">
    	function myForward(){history.forward();}
    	function myBack(){history.back();}
    	function myLocation(){location.href="https://www.baidu.com";}
    </script>
    
    <button type="button" onclick="myBack()">上一页</button>
    <button type="button" onclick="myForward()">下一页</button>
    <button type="button" onclick="myLocation()">baidu</button>
    

    弹窗

    在js中,最顶层的对象是window(类似于Object),在写js代码时window可以省略。

    //alert():弹出警告框
    alert("欢迎使用js...")
    		    
    prompt():提示信息框
    var pwd = prompt("请输入密码")
    if (pwd == 123456){
        alert("密码正确")
    }else{
    	alert("密码错误")
    }
    
    //confirm():确认框
    var flag = confirm("是否确定删除")
    if (flag){}
    
    //typeof():判断当前变量数据类型
    alert(typeof(pwd))
    

    事件

    事件通常与函数配合使用,当事件发生时调用函数。

    函数名不能使用页面上已经存在的id的值,也不能是相关的系统函数或属性名称。

    鼠标事件

    onclick:鼠标单击。

    onmouseover:鼠标移入。

    onmouseout:鼠标移出。

    /* onclick点击事件 */
    var num = 0;
    function dz(){
    	num++;
    	var input = document.getElementById("num");
    	input.value = num;
    }
    
    /* 鼠标移入事件 */
    function over(){
    	var div = document.getElementById("div1");
    	/* 通过js设置页面元素的css样式 */
    	div.style.backgroundColor = "#3A6587";
    }
    /* 鼠标移出事件 */
    function out(){
    	var div = document.getElementById("div1");
    	div.style.backgroundColor="white";
    }
    			
    /* 获取焦点事件 */
    function inputFocus(){
    	var input = document.getElementById("query");
    	var inputValue = input.value;
    	input.value = "";
    }
    
    /*
    <input type="text" id="num" readonly="readonly"/>
    <button onclick = "dz()">点赞</button>
    
    <div id="div1" onmouseover="over()" onmouseout="out()">这是div1</div>
    */
    

    框架事件

    onload:页面加载完成。

    onunload:退出页面。

    表单事件

    onchange:当绑定元素的value值发生改变的时候会触发该事件,但是一般用在下拉列表框。

    onfocus:获取焦点

    onblur:失去焦点

    /* 获取焦点事件 */
    function inputFocus(){
    	var input = document.getElementById("query");
    	var inputValue = input.value;
    	input.value = "";
    }
    			
    /* 失去焦点事件 */
    function inputBlur(){
    	var input = document.getElementById("query");
    	var inputValue = input.value;
    	if(!(inputValue!=null && inputValue!="")){
    		input.value = "搜索一下";
    	}
    }
    
    /*
    <input type="text" name="query" id="query" value="搜索一下" onfocus="inputFocus()" onblur="inputBlur()" />
    */
    

    键盘事件

    onkeydown:某个键盘按键被按下。

    onkeyup:某个键盘按键被松开。

    onkeypress:某个键盘按钮被按下并松开。

    window.onkeydown=function(e){
    	var div1=document.getElementById("div1");
    	if(e.keyCode==89){
    		div1.style.display="block";
    	}
    	if(e.keyCode==78){
    		div1.style.display="none";
    	}
    }
    

    更多事件

    计时器

    js的计时器并不精确。

    setInterval:启动计时器。

    clearInterval:停止计时器。

    var timeIn;
    var num = 0;
    function start(){
    	document.getElementById("ks").disabled=true;
    	timeIn = setInterval(function(){
    		num++;
    		document.getElementById("time").value = num;
    	},100)
    }
    			
    function stop(){
    	document.getElementById("ks").disabled=false;
    	clearInterval(timeIn)
    }
    			
    function myClear(){
    	document.getElementById("ks").disabled=false;
    	clearInterval(timeIn);
    	document.getElementById("time").value = 0;
    	num = 0;
    }
    
    /*
    <input type="text" name="time" id="time" value="0" readonly="readonly" />
    <button onclick="start()" id="ks">开始</button>
    <button onclick="stop()" id="zt">暂停</button>
    <button onclick="myClear()" id="js">结束</button>
    */
    

    图片轮播

    var flag = 1;
    window.onload = function(){
    	setInterval(function(){
    		flag++;
    		var img = document.getElementById("img");
    		img.src = "../img/dd_scroll_"+flag+".jpg";
    		if(flag==6){
    			flag=0;
    		}
    	},3000);
    }
    /*
    <img id="img" src="../img/dd_scroll_1.jpg" >
    */
    

    DOM

    DOM:文档对象模型。

    获取元素

    getElementById():返回拥有指定id的第一个对象。

    innerHTML():获取当前节点对象包含的html代码。

    innserText():获取当前节点对象包含的文本。

    getElementByName:通过name获取页面元素,返回的结果是一个数组。需要遍历数组才能获取所有元素的值。

    var hobbys = document.getElementsByName("hobby");
    for(var i=0;i<hobbys.length,i++){
        if(hobbys[i].checked){//返回true
            hobbys[i].values;//获取到value值
        }
    }
    

    getElementTagName:通过标签名称获取页面元素。

    var ul = document.getElementById("ul");
    var lis = ul.document.getElementsByTagName("li");//获取ul下的li标签对象
    for(var i=0;i<lis.length;i++){
    	lis[i].innerText;
    }
    

    parentNode:获取元素的父元素。

    var div = document.getElementById("div");
    div.parentNode.innerHTML;
    

    childNodes:获取元素的子元素

    var ul = document.getElementById("ul");
    var subs = ul.childNodes;
    

    nodeName:获取元素属性名称

    nodeTepe:获取元素属性类型

    nodeValue:获取元素属性值

    for(var i=0;i<lis.length;i++){
    	subs[i].nodeName;
    	subs[i].nodeType;
    	subs[i].nodeValue;
    }
    

    firstElementSibling:获取第一个元素

    nextElementSibling:获取下一个元素

    添加元素

    document.createElement(""):创建一个标签节点。

    parentNode.insertBefore("",""):插入到一个元素后。

    function addNode(){
    	var numValue = document.getElementById("input").value;
    	//创建节点
    	var li4 = document.createElement("li");
    	//给li4设置html
    	li4.innerHTML = numValue;
    	var li5 = document.getElementById("li5");
    	li5.parentNode.insertBefore(li4,li5);//插入相邻节点
    }
    

    parentNode.appendChild():将一个节点添加到指定父节点的子节点列表的末尾。

    Node.cloneNode():复制节点。

    function cyNode({
    	var li5 = document.getElementsByName("wu");
    	li5[0].cloneNode(true);
    }
    

    删除元素

    parentNode.removeChild()

    function delNode(){
    	var li5 = document.getElementById("wu");
    	li5.parentNode.removeChild(li5);
    }
    

    替换元素

    parentNode.replaceChild(newNode,oldNode)

    内置对象

    String

    alert(str.sumstr(3,5));//从下标为3开始截取5个字符
    alert(str.substring(3,5));//从下标为3开始截到下标为5,且不包括5
    

    Math对象

    alert(Math.random());//获得一个0-1
    Math.ceil();//对数进行向上舍入
    Math.floor();//对数进行向下舍入
    Math.round();//把数四舍五入为最接近的整数
    

    操作css

    通过js的.style只能获取和设置元素行内样式表。

    通过getComputedStyle方法可以获取元素的内部或外部样式表,但不能设置。

    <script type="text/javascript">
    	document.getElementById("but").onclick=function(){
    		var div=document.getElementById("div");
    		var divWidth=parseInt(div.style.width.substring(0,div.style.width.indexOf("px")));//100px
    		var divHeigth=parseInt(div.style.height.substring(0,div.style.height.indexOf("px")));
    		div.style.width=(divWidth+50)+"px";
    		div.style.height=(divHeigth+50)+"px";
    	}
    	document.getElementById("but1").onclick=function(){
    		var div1=document.getElementById("div1");
    		//var cssDom=getComputedStyle(div1);
    		div1.className="newDivCss";
    	}
    </script>
    <body>
    		<div id="div" style=" 100px;height: 100px;"></div>
    		<button id="but">变大</button>
    		<div id="div1"></div>
    		<button id="but1">获取样式</button>
    </body>
    
  • 相关阅读:
    深入Vue.js从源码开始(二)
    Vue.js的动态组件模板
    Vue中的methods、watch、computed
    Understand .sync in Vue
    vue程序中组件间的传值方式
    xUtils框架的介绍(一)
    xUtils框架的介绍(二)
    Java如何计算hashcode值
    Java网络编程总结
    深入Java线程管理(五):线程池
  • 原文地址:https://www.cnblogs.com/hermitlee/p/13650470.html
Copyright © 2011-2022 走看看