<html>
<head>
这里是文档的头部 ... ...
...
head>
<body>
这里是文档的主体 ... ...
...
body>
html>
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)title>
head>
<body>
<h1>我的第一个标题h1>
<p>我的第一个段落。p>
body>
html>
html菜鸟笔记: https://www.runoob.com/html/html-tutorial.html
结构
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我是标题title>
head>
<body>
这里是文档的主体 ... ...
...
body>
html>
.html 和 .htm
HTML 标题(Heading)是通过
<h1>这是一个标题h1>
<h2>这是一个标题h2>
<h3>这是一个标题h3>
段落使用
标签
<p>这是一个段落。p>
<p>这是另外一个段落。p>
HTML 图像是通过标签 来定义的.
<img src="/images/logo.png" width="258" height="39" />
HTML 链接是通过标签 来定义的。
<a href="https://www.runoob.com">这是一个链接a>
HTML5 DOM 为 和 元素提供了方法、属性和事件。
这些方法、属性和事件允许您使用 JavaScript 来操作 和 元素。
参考链接:https://www.runoob.com/tags/ref-av-dom.html
表单标签使用如下
<form action="demo_form.php" method="get">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="提交">
form>
此处的action是提交到后端的地址,method是请求方法
该标签可嵌入其他页面
iframe常用属性:
1.frameborder:是否显示边框,1(yes),0(no)
2.height:框架作为一个普通元素的高度,建议在使用css设置。
3.width:框架作为一个普通元素的宽度,建议使用css设置。
4.name:框架的名称,window.frames[name]时专用的属性。
5.scrolling:框架的是否滚动。yes,no,auto。
6.src:内框架的地址,可以使页面地址,也可以是图片的地址。
7.srcdoc , 用来替代原来HTML body里面的内容。但是IE不支持, 不过也没什么卵用
8.sandbox: 对iframe进行一些列限制,IE10+支持
<iframe src="demo_iframe_sandbox.htm">iframe>
使用案例:https://www.runoob.com/try/try.php?filename=tryhtml_frame_cols
定义一个无序列表 | |
---|---|
定义一个有序列表 | |
定义一个列表项 | |
HTML5不再支持。 HTML 4.01 已废弃。 定义目录列表。 | |
定义一个定义列表 | |
定义一个定义定义列表中的项目。 | |
定义定义列表中项目的描述。 |
定义一个表格 | |
---|---|
](https://www.runoob.com/tags/tag-caption.html) | 定义表格标题。 |
](https://www.runoob.com/tags/tag-th.html) | 定义表格中的表头单元格。 |
定义表格中的行。 | |
](https://www.runoob.com/tags/tag-td.html) | 定义表格中的单元。 |
定义表格中的表头内容。 | |
定义表格中的主体内容。 | |
定义表格中的表注内容(脚注)。 | |
定义表格中一个或多个列的属性值。 | |
定义表格中供格式化的列组。 |
显示结果 | 描述 | 实体名称 | 实体编号 |
---|---|---|---|
空格 | |||
< | 小于号 | < | < |
> | 大于号 | > | > |
& | 和号 | & | & |
" | 引号 | " | " |
’ | 撇号 | ' (IE不支持) | ' |
¢ | 分 | ¢ | ¢ |
£ | 镑 | £ | £ |
¥ | 人民币/日元 | ¥ | ¥ |
€ | 欧元 | € | € |
§ | 小节 | § | § |
© | 版权 | © | © |
® | 注册商标 | ® | ® |
™ | 商标 | ™ | ™ |
× | 乘号 | × | × |
÷ | 除号 | ÷ | ÷ |
虽然 html 不区分大小写,但实体字符对大小写敏感。
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)title>
head>
<body>
<b>加粗文本b><br><br>
<i>斜体文本i><br><br>
<code>电脑自动输出code><br><br>
这是 <sub> 下标sub> 和 <sup> 上标sup>
body>
html>
参考链接:https://www.runoob.com/tags/ref-standardattributes.html
常用属性如下表
属性名 | 描述 | 案例 |
---|---|---|
id | 给元素设置id | |
class | 给元素设置类名 | |
style | 给元素设置样式 | |
title | 给元素设置标题(既鼠标悬浮显示文本) |
我是一句话
|
参考链接:https://www.runoob.com/tags/ref-eventattributes.html
常用事件如下表
事件名 | 描述 | 案例 |
---|---|---|
onclick | 鼠标点击事件 | |
onfocus | 焦点选中事件 | |
onscroll | 元素滚动事件 |
元素滚动
|
//点击后直接拨打10086
<a href="tel:10086">10086a>
/点击后直接给[email protected]发邮件,主题为:TestObject
<a href="mailto:[email protected]?subject=TestObject">[email protected]a> /
//点击后直接给10086发信息,消息内容默认为message_body
<a href="sms:10086?body=message_body">给 10086 发短信a>
//点击后直接发送自己的位置所以这很大方便了移动端的开发。
<a href="geopoint:116.281469,39.866035">我的位置a>
/href中只需要放上图片的链接
只需要这样你就可以点击下载图片这个文字即可,下载对应的图片。如果是其他格式的文件,你只需要更改download="filename"里面的filename即可,下面举例说明。
<a href="img/WC.png" download="WC.png">下载图片a>/
<a href="public/jym_apk_1.0.zip" download="jym_apk_1.0.zip">下载apka>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>window.opentitle>
<script type="text/javascript">
function Wopen() {
var url = 'http://www.baidu.com'; //转向网页的地址;
var name = 'add'; //网页名称,可为空;
var iWidth = 920; //弹出窗口的宽度;
var iHeight = 600; //弹出窗口的高度;
//获得窗口的垂直位置
var iTop = (window.screen.availHeight - 30 - iHeight) / 2;
//获得窗口的水平位置
var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;
window.open(url, name, 'height=' + iHeight + ',,innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');
// window.open('http://www.baidu.com', '_blank', 'width=900,height=600,left=200,top=200,menubar=no,toolbar=no,status=no,scrollbars=yes')
}
script>
head>
<body>
<input name="button" type="button" onClick="Wopen()" value="点击我,打开新窗口!" />
body>
html>
<input type="tel">
<input pattern="\d*">
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
参考链接:https://www.cnblogs.com/hanfanfan/p/9579771.html
消息: | 描述: |
---|---|
100 Continue | 服务器仅接收到部分请求,如果服务器没有拒绝该请求,客户端应该继续发送其余的请求。 |
101 Switching Protocols | 服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。 |
103 Checkpoint | 用于 PUT 或者 POST 请求恢复失败时的恢复请求建议。 |
消息: | 描述: |
---|---|
200 OK | 请求成功(这是对HTTP请求成功的标准应答。) |
201 Created | 请求被创建完成,同时新的资源被创建。 |
202 Accepted | 供处理的请求已被接受,但是处理未完成。 |
203 Non-Authoritative Information | 请求已经被成功处理,但是一些应答头可能不正确,因为使用的是其他文档的拷贝。 |
204 No Content | 请求已经被成功处理,但是没有返回新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。 |
205 Reset Content | 请求已经被成功处理,但是没有返回新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。 |
206 Partial Content | 客户发送了一个带有Range头的GET请求,服务器完成了它。 |
消息: | 描述: |
---|---|
300 Multiple Choices | 多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。 |
301 Moved Permanently | 所请求的页面已经转移至新的 URL 。 |
302 Found | 所请求的页面已经临时转移至新的 URL 。 |
303 See Other | 所请求的页面可在别的 URL 下被找到。 |
304 Not Modified | 未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。 |
305 Use Proxy | 客户请求的文档应该通过Location头所指明的代理服务器提取。 |
306 Switch Proxy | 目前已不再使用,但是代码依然被保留。 |
307 Temporary Redirect | 被请求的页面已经临时移至新的 URL 。 |
308 Resume Incomplete | 用于 PUT 或者 POST 请求恢复失败时的恢复请求建议。 |
消息: | 描述: |
---|---|
400 Bad Request | 因为语法错误,服务器未能理解请求。 |
401 Unauthorized | 合法请求,但对被请求页面的访问被禁止。因为被请求的页面需要身份验证,客户端没有提供或者身份验证失败。 |
402 Payment Required | 此代码尚无法使用。 |
403 Forbidden | 合法请求,但对被请求页面的访问被禁止。 |
404 Not Found | 服务器无法找到被请求的页面。 |
405 Method Not Allowed | 请求中指定的方法不被允许。 |
406 Not Acceptable | 服务器生成的响应无法被客户端所接受。 |
407 Proxy Authentication Required | 用户必须首先使用代理服务器进行验证,这样请求才会被处理。 |
408 Request Timeout | 请求超出了服务器的等待时间。 |
409 Conflict | 由于冲突,请求无法被完成。 |
410 Gone | 被请求的页面不可用。 |
411 Length Required | “Content-Length” 未被定义。如果无此内容,服务器不会接受请求。 |
412 Precondition Failed | 请求中的前提条件被服务器评估为失败。 |
413 Request Entity Too Large | 由于所请求的实体太大,服务器不会接受请求。 |
414 Request-URI Too Long | 由于 URL 太长,服务器不会接受请求。当 POST 请求被转换为带有很长的查询信息的 GET 请求时,就会发生这种情况。 |
415 Unsupported Media Type | 由于媒介类型不被支持,服务器不会接受请求。 |
416 Requested Range Not Satisfiable | 客户端请求部分文档,但是服务器不能提供被请求的部分。 |
417 Expectation Failed | 服务器不能满足客户在请求中指定的请求头。 |
消息: | 描述: |
---|---|
500 Internal Server Error | 请求未完成。服务器遇到不可预知的情况。 |
501 Not Implemented | 请求未完成。服务器不支持所请求的功能,或者服务器无法完成请求。 |
502 Bad Gateway | 请求未完成。服务器充当网关或者代理的角色时,从上游服务器收到一个无效的响应。 |
503 Service Unavailable | 服务器当前不可用(过载或者当机)。 |
504 Gateway Timeout | 网关超时。服务器充当网关或者代理的角色时,未能从上游服务器收到一个及时的响应。 |
505 HTTP Version Not Supported | 服务器不支持请求中指明的HTTP协议版本。 |
511 Network Authentication Required | 用户需要提供身份验证来获取网络访问入口。 |
前端调用的后端接口不属于同一个域(域名或端口不同),就会产生跨域问题,也就是说你的应用访问了该应用域名或端口之外的域名或端口。
处理方式:前端处理或者后端处理
理论参考:https://zhuanlan.zhihu.com/p/66484450
跨域处理方案:https://www.cnblogs.com/itmacy/p/6958181.html
web服务器简介:
Tomcat:由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持。它是一种轻量级的javaWeb容器(服务器),也是当前应用最广的JavaWeb服务器(免费)。
Jboss:是一个遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,它支持所有的JavaEE规范(免费)。
GlassFish: 由Oracle公司开发的一款JavaWeb服务器,是一款强健的商业服务器,达到产品级质量(应用很少,收费)。
Resin:是CAUCHO公司的产品,是一个非常流行的应用服务器,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发(收费,应用比较多)。
WebLogic:是Oracle公司的产品,是目前应用最广泛的Web服务器,支持JavaEE规范,而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。
[
](https://blog.csdn.net/o_o_gl/article/details/79662995)
Nginx主要是实现了两个核心的功能,一个是负载均衡(反向代理),一个是静态资源代理。
他是一个服务器,静态资源代理可以用于发布web应用。
参考:https://xiaolongda.blog.csdn.net/article/details/85334920
参考:https://xiaolongda.blog.csdn.net/article/details/85334945
Tomcat是一个web应用服务器。基于java开发,需要jdk环境。
参考:https://blog.csdn.net/o_o_gl/article/details/79662995
body {
background-color:#d0e4fe;
}
h1 {
color:orange;
text-align:center;
}
p {
font-family:"Times New Roman";
font-size:20px;
}
注释是用来解释你的代码,并且可以随意编辑它,浏览器会忽略它。
CSS注释以 /* 开始, 以 */ 结束, 实例如下:
/*这是个注释*/
p
{
text-align:center;
/*这是另一个注释*/
color:black;
font-family:arial;
}
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义。
以下的样式规则应用于元素属性 id=“para1”:
#para1
{
text-align:center;
color:red;
}
ID属性不要以数字开头,数字开头的ID在 Mozilla/Firefox 浏览器中不起作用。
class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,class可以在多个元素中使用。
class 选择器在HTML中以class属性表示, 在 CSS 中,类选择器以一个点"."号显示:
在以下的例子中,所有拥有 center 类的 HTML 元素均为居中。
.center {text-align:center;}
css有三种写法,一种是在html文件内,写在标签内,一种是直接在标签内去写,一种是写在.css后缀名结尾的文件内。
当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用 标签链接到样式表。 标签在(文档的)头部:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
head>
当单个文档需要特殊的样式时,就应该使用内部样式表。你可以使用
<head>
<style>
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("images/back40.gif");}
style>
head>
由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。
要使用内联样式,你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。本例展示如何改变段落的颜色和左外边距:
<p style="color:sienna;margin-left:20px">这是一个段落。p>
下列是一份优先级逐级增加的选择器列表:
!important 规则例外
当 !important 规则被应用在一个样式声明中时,该样式声明会覆盖CSS中任何其他的声明, 无论它处在声明列表中的哪里. 尽管如此, !important规则还是与优先级毫无关系.使用 !important 不是一个好习惯,因为它改变了你样式表本来的级联规则,从而使其难以调试。
一些经验法则:
CSS 优先规则:
内联样式 > id 选择器 > 类选择器 = 伪类选择器 = 属性选择器 > 标签选择器 = 伪元素选择器
CSS 背景属性用于定义HTML元素的背景。
CSS 属性定义背景效果:
设置背景图片
body {background-image:url('paper.gif');}
属性 | 描述 |
---|---|
color | 设置文本颜色 |
direction | 设置文本方向。 |
letter-spacing | 设置字符间距 |
line-height | 设置行高 |
text-align | 对齐元素中的文本 |
text-decoration | 向文本添加修饰 |
text-indent | 缩进元素中文本的首行 |
text-shadow | 设置文本阴影 |
text-transform | 控制元素中的字母 |
unicode-bidi | 设置或返回文本是否被重写 |
vertical-align | 设置元素的垂直对齐 |
white-space | 设置元素中空白的处理方式 |
word-spacing | 设置字间距 |
Property | 描述 |
---|---|
font | 在一个声明中设置所有的字体属性 |
font-family | 指定文本的字体系列 |
font-size | 指定文本的字体大小 |
font-style | 指定文本的字体样式 |
font-variant | 以小型大写字体或者正常字体显示文本。 |
font-weight | 指定字体的粗细。 |
链接的样式,可以用任何CSS属性(如颜色,字体,背景等)。
特别的链接,可以有不同的样式,这取决于他们是什么状态。
这四个链接状态是:
a:link {color:#000000;} /* 未访问链接*/
a:visited {color:#00FF00;} /* 已访问链接 */
a:hover {color:#FF00FF;} /* 鼠标移动到链接上 */
a:active {color:#0000FF;} /* 鼠标点击时 */
在 HTML中,有两种类型的列表:
使用 CSS,可以列出进一步的样式,并可用图像作列表项标记。
ul.a {list-style-type: circle;}
ul.b {list-style-type: square;}
ol.c {list-style-type: upper-roman;}
ol.d {list-style-type: lower-alpha;}
要指定列表项标记的图像,使用列表样式图像属性: (https://www.runoob.com/try/try.php?filename=trycss_list-style-image)
ul
{
list-style-image: url('sqpurple.gif');
}
移除样式
list-style-type:none 属性可以用于移除小标记。默认情况下列表
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
属性 | 描述 |
---|---|
list-style | 简写属性。用于把所有用于列表的属性设置于一个声明中 |
list-style-image | 将图像设置为列表项标志。 |
list-style-position | 设置列表中列表项标志的位置。 |
list-style-type | 设置列表项标志的类型。 |
参考:https://www.runoob.com/css/css-table.html
所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。
盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
下面的图片说明了盒子模型(Box Model):
不同部分的说明:
div {
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}
最终元素的总宽度计算公式是这样的:
总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
元素的总高度最终计算公式是这样的:
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距
参考:https://www.runoob.com/css/css-border.html
常用如下:
border:5px solid red; // 设置边框粗细,样式,颜色
border-radius:30px; // 设置圆角
属性 | 描述 |
---|---|
border | 简写属性,用于把针对四个边的属性设置在一个声明。 |
border-style | 用于设置元素所有边框的样式,或者单独地为各边设置边框样式。 |
border-width | 简写属性,用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度。 |
border-color | 简写属性,设置元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色。 |
border-bottom | 简写属性,用于把下边框的所有属性设置到一个声明中。 |
border-bottom-color | 设置元素的下边框的颜色。 |
border-bottom-style | 设置元素的下边框的样式。 |
border-bottom-width | 设置元素的下边框的宽度。 |
border-left | 简写属性,用于把左边框的所有属性设置到一个声明中。 |
border-left-color | 设置元素的左边框的颜色。 |
border-left-style | 设置元素的左边框的样式。 |
border-left-width | 设置元素的左边框的宽度。 |
border-right | 简写属性,用于把右边框的所有属性设置到一个声明中。 |
border-right-color | 设置元素的右边框的颜色。 |
border-right-style | 设置元素的右边框的样式。 |
border-right-width | 设置元素的右边框的宽度。 |
border-top | 简写属性,用于把上边框的所有属性设置到一个声明中。 |
border-top-color | 设置元素的上边框的颜色。 |
border-top-style | 设置元素的上边框的样式。 |
border-top-width | 设置元素的上边框的宽度。 |
border-radius | 设置圆角的边框。 |
参考:https://www.runoob.com/css/css-outline.html
属性 | 描述 |
---|---|
margin | 简写属性。在一个声明中设置所有外边距属性。 |
margin-bottom | 设置元素的下外边距。 |
margin-left | 设置元素的左外边距。 |
margin-right | 设置元素的右外边距。 |
margin-top | 设置元素的上外边距。 |
参考:https://www.runoob.com/css/css-margin.html
属性 | 说明 |
---|---|
padding | 使用简写属性设置在一个声明中的所有填充属性 |
padding-bottom | 设置元素的底部填充 |
padding-left | 设置元素的左部填充 |
padding-right | 设置元素的右部填充 |
padding-top | 设置元素的顶部填充 |
参考:https://www.runoob.com/css/css-padding.html
属性 | 描述 |
---|---|
height | 设置元素的高度。 |
line-height | 设置行高。 |
max-height | 设置元素的最大高度。 |
max-width | 设置元素的最大宽度。 |
min-height | 设置元素的最小高度。 |
min-width | 设置元素的最小宽度。 |
width | 设置元素的宽度。 |
它可能适用于选择器内部的选择器的样式。
在下面的例子设置了四个样式:
参考:https://www.runoob.com/css/css-grouping-nesting.html
参考:https://www.runoob.com/css/css-display-visibility.html
position 属性的五个值:
属性 | 说明 | 值 | CSS |
---|---|---|---|
bottom | 定义了定位元素下外边距边界与其包含块下边界之间的偏移。 | auto *length **% *inherit | 2 |
clip | 剪辑一个绝对定位的元素 | *shape *auto inherit | 2 |
cursor | 显示光标移动到指定的类型 | url auto crosshair default pointer (常用) move text wait help | 2 |
left | 定义了定位元素左外边距边界与其包含块左边界之间的偏移。 | auto *length **% *inherit | 2 |
overflow | 设置当元素的内容溢出其区域时发生的事情。 | auto hidden scroll visible inherit | 2 |
overflow-y | 指定如何处理顶部/底部边缘的内容溢出元素的内容区域 | auto hidden scroll visible no-display no-content | 2 |
overflow-x | 指定如何处理右边/左边边缘的内容溢出元素的内容区域 | auto hidden scroll visible no-display no-content | 2 |
position | 指定元素的定位类型 | absolute fixed relative static inherit | 2 |
right | 定义了定位元素右外边距边界与其包含块右边界之间的偏移。 | auto *length **% *inherit | 2 |
top | 定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。 | auto *length **% *inherit | 2 |
z-index | 设置元素的堆叠顺序 | *number *auto inherit | 2 |
CSS overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条。
overflow属性有以下值:
值 | 描述 |
---|---|
visible | 默认值。内容不会被修剪,会呈现在元素框之外。 |
hidden | 内容会被修剪,并且其余内容是不可见的。 |
scroll | 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 |
auto | 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。 |
inherit | 规定应该从父元素继承 overflow 属性的值。 |
CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。
Float(浮动),往往是用于图像,但它在布局时一样非常有用。
元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。
一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
浮动元素之后的元素将围绕它。
浮动元素之前的元素将不会受到影响。
如果图像是右浮动,下面的文本流将环绕在它左边:
案例:https://www.runoob.com/try/try.php?filename=trycss_float
属性 | 描述 | 值 | CSS |
---|---|---|---|
clear | 指定不允许元素周围有浮动元素。 | left right both none inherit | 1 |
float | 指定一个盒子(元素)是否可以浮动。 | left right none inherit | 1 |
参考:https://www.runoob.com/css/css-align.html
参考:https://www.runoob.com/css/css-combinators.html
伪类参考:https://www.runoob.com/css/css-pseudo-classes.html
伪元素参考:https://www.runoob.com/css/css-pseudo-elements.html
其他案例:
https://www.runoob.com/css/css-navbar.html
https://www.runoob.com/cssref/css-reference.html
JavaScript 是 Web 的编程语言。
所有现代的 HTML 页面都使用 JavaScript。
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)title>
<script>
function displayDate(){
document.getElementById("demo").innerHTML=Date();
}
script>
head>
<body>
<h1>我的第一个 JavaScript 程序h1>
<p id="demo">这是一个段落p>
<button type="button" onclick="displayDate()">显示日期button>
body>
html>
案例:https://www.runoob.com/try/try.php?filename=tryjs_events
document.write("这是一个标题
");
document.write("这是一个段落。
");
js小案例
https://www.runoob.com/try/try.php?filename=tryjs_lightbulb
JavaScript 可以通过不同的方式来输出数据:
window.alert("sometext");
window.confirm("sometext");
window.prompt("sometext","defaultvalue");
如果有换行,可以使用 弹窗使用 反斜杠 + “n”(\n) 来设置换行。
alert("Hello\nHow are you?");
JS的数据类型有8种。
在ES5的时候,我们认知的数据类型确实是 6种:Number、String、Boolean、undefined、object、Null。
ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。
谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。(但是很多人不把这个做为一个类型)。
[
](https://blog.csdn.net/u013592575/article/details/95087953)
8种。Number、String、Boolean、Null、undefined、object、symbol、bigInt。
[
](https://blog.csdn.net/u013592575/article/details/95087953)
参考:https://blog.csdn.net/u013592575/article/details/95087953
var length = 16; // Number 通过数字字面量赋值
var points = x * 10; // Number 通过表达式字面量赋值
var lastName = "Johnson"; // String 通过字符串字面量赋值
var cars = ["Saab", "Volvo", "BMW"]; // Array 通过数组字面量赋值
var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值
// 输出标题:
document.getElementById("myH1").innerHTML="欢迎来到我的主页";
// 输出段落:
document.getElementById("myP").innerHTML="这是我的第一个段落。";
/*
下面的这些代码会输出
一个标题和一个段落
并将代表主页的开始
*/
document.getElementById("myH1").innerHTML="欢迎来到我的主页";
document.getElementById("myP").innerHTML="这是我的第一个段落。";
变量是用于存储信息的"容器"。 变量的默认值是undefined
var x=5;
var y=6;
var z=x+y;
var lastname="Doe", age=30, job="carpenter";
除了var,可以使用const来定义常量
详情:https://blog.csdn.net/qq_30216191/article/details/81042842
参考:https://www.runoob.com/js/js-obj-intro.html
函数就是包裹在花括号中的代码块,前面使用了关键词 function:
function functionname()
{
// 执行代码
}
在调用函数时,您可以向其传递值,这些值被称为参数。
这些参数可以在函数中使用。
您可以发送任意多的参数,由逗号 (,) 分隔:
function myFunction(var1,var2)
{
代码
}
案例:
<p>点击这个按钮,来调用带参数的函数。</p>
<button onclick="myFunction('Harry Potter','Wizard')">点击这里</button>
<script>
function myFunction(name,job){
alert("Welcome " + name + ", the " + job);
}
</script>
y=5,下面的表格解释了这些算术运算符:
运算符 | 描述 | 例子 | x 运算结果 | y 运算结果 | 在线实例 |
---|---|---|---|---|---|
+ | 加法 | x=y+2 | 7 | 5 | 实例 » |
- | 减法 | x=y-2 | 3 | 5 | 实例 » |
* | 乘法 | x=y*2 | 10 | 5 | 实例 » |
/ | 除法 | x=y/2 | 2.5 | 5 | 实例 » |
% | 取模(余数) | x=y%2 | 1 | 5 | 实例 » |
++ | 自增 | x=++y | 6 | 6 | 实例 » |
x=y++ | 5 | 6 | 实例 » | ||
– | 自减 | x=–y | 4 | 4 | 实例 » |
x=y– | 5 | 4 | 实例 » |
x=5,下面的表格解释了比较运算符:
运算符 | 描述 | 比较 | 返回值 | 实例 |
---|---|---|---|---|
== | 等于 | x==8 | false | 实例 » |
x==5 | true | 实例 » | ||
=== | 绝对等于(值和类型均相等) | x===“5” | false | 实例 » |
x===5 | true | 实例 » | ||
!= | 不等于 | x!=8 | true | 实例 » |
!== | 不绝对等于(值和类型有一个不相等,或两个都不相等) | x!==“5” | true | 实例 » |
x!==5 | false | 实例 » | ||
> | 大于 | x>8 | false | 实例 » |
< | 小于 | x<8 | true | 实例 » |
>= | 大于或等于 | x>=8 | false | 实例 » |
<= | 小于或等于 | x<=8 | true | 实例 » |
给定 x=6 以及 y=3,下表解释了逻辑运算符:
运算符 | 描述 | 例子 |
---|---|---|
&& | and | (x < 10 && y > 1) 为 true |
|| | or | (x5 || y5) 为 false |
! | not | !(x==y) 为 true |
通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。
在 JavaScript 中,我们可使用以下条件语句:
if (condition)
{
当条件为 true 时执行的代码
}
=================================================
if (condition)
{
当条件为 true 时执行的代码
}
else
{
当条件不为 true 时执行的代码
}
================================================
if (time<10)
{
document.write("早上好");
}
else if (time>=10 && time<20)
{
document.write("今天好");
}
else
{
document.write("晚上好!");
}
请使用 switch 语句来选择要执行的多个代码块之一。
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}
案例:
var d=new Date().getDay();
switch (d)
{
case 0:x="今天是星期日";
break;
case 1:x="今天是星期一";
break;
case 2:x="今天是星期二";
break;
case 3:x="今天是星期三";
break;
case 4:x="今天是星期四";
break;
case 5:x="今天是星期五";
break;
case 6:x="今天是星期六";
break;
}
请使用 default 关键词来规定匹配不存在时做的事情:
var d=new Date().getDay();
switch (d)
{
case 6:x="今天是星期六";
break;
case 0:x="今天是星期日";
break;
default:
x="期待周末";
}
document.getElementById("demo").innerHTML=x;
JavaScript 支持不同类型的循环:
for (var i=0;i<cars.length;i++)
{
document.write(cars[i] + "
");
}
while (条件)
{
需要执行的代码
}
while (i<5)
{
x=x + "The number is " + i + "
";
i++;
}
do
{
需要执行的代码
}
while (条件);
do
{
x=x + "The number is " + i + "
";
i++;
}
while (i<5);
break 语句用于跳出循环。
continue 用于跳过循环中的一个迭代。
参考:https://www.runoob.com/js/js-break.html
你可以使用 typeof 操作符来检测变量的数据类型。
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object
null 和 undefined 的值相等,但类型不等:
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
参考:https://www.runoob.com/js/js-type-conversion.html
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。
正则表达式是由一个字符序列形成的搜索模式。
当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
参考:https://www.runoob.com/js/js-regexp.html
参考:https://www.runoob.com/regexp/regexp-syntax.html
关键词
try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。
当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误。
可能是语法错误,通常是程序员造成的编码错误或错别字。
可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
可能是由于来自服务器或用户的错误输出而导致的错误。
当然,也可能是由于许多其他不可预知的因素。
当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。
描述这种情况的技术术语是:JavaScript 将抛出一个错误。
try {
... //异常的抛出
} catch(e) {
... //异常的捕获与处理
} finally {
... //结束处理
}
案例:
var txt="";
function message()
{
try {
adddlert("Welcome guest!");
} catch(err) {
txt="本页有一个错误。\n\n";
txt+="错误描述:" + err.message + "\n\n";
txt+="点击确定继续。\n\n";
alert(txt);
}
}
finally 语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。
function myFunction() {
var message, x;
message = document.getElementById("p01");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "值是空的";
if(isNaN(x)) throw "值不是一个数字";
x = Number(x);
if(x > 10) throw "太大";
if(x < 5) throw "太小";
}
catch(err) {
message.innerHTML = "错误: " + err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
没有调试工具是很难去编写 JavaScript 程序的。
你的代码可能包含语法错误,逻辑错误,如果没有调试工具,这些错误比较难于发现。
通常,如果 JavaScript 出现错误,是不会有提示信息,这样你就无法找到代码错误的位置。
debugger 关键字用于停止执行 JavaScript,并调用调试函数。
这个关键字与在调试工具中设置断点的效果是一样的。
如果没有调试可用,debugger 语句将无法工作。
开启 debugger ,代码在第三行前停止执行。
var x = 15 * 5;
debugger;
document.getElementbyId("demo").innerHTML = x;
json主要是json对象转字符串,和字符串转json对象用的比较多
1、json对象转字符串
JSON.stringify(json对象)
2、字符串转json对象
JSON.parse(字符串)
javascript:void(0), 仅仅表示一个死链接。
<a href="javascript:void(0);">点我没有反应的!a>
参考: https://www.runoob.com/js/js-async.html
https://www.w3school.com.cn/js/js_ajax_intro.asp
参考:https://www.runoob.com/js/js-function-closures.html
通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。
通常,通过 JavaScript,您需要操作 HTML 元素。
为了做到这件事情,您必须首先找到该元素。有三种方法来做这件事:
在 DOM 中查找 HTML 元素的最简单的方法,是通过使用元素的 id。
本例查找 id=“intro” 元素:
var x=document.getElementById("intro");
本例查找 id=“main” 的元素,然后查找 id=“main” 元素中的所有
元素:
var x=document.getElementById("main");
var y=x.getElementsByTagName("p");
本例通过 getElementsByClassName 函数来查找 class=“intro” 的元素:
var x=document.getElementsByClassName("intro");
https://www.runoob.com/js/js-objects.html
https://www.runoob.com/js/js-window.html
jQuery 是一个 JavaScript 库。
jQuery 极大地简化了 JavaScript 编程。
可以通过多种方法在网页中添加 jQuery。 您可以使用以下方法:
有两个版本的 jQuery 可供下载:
以上两个版本都可以从 jquery.com 中下载。
jQuery 库是一个 JavaScript 文件,您可以使用 HTML 的
<head>
<script src="jquery-1.10.2.min.js">script>
head>
百度CDN
<head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
script>
head>
jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。
基础语法: $(selector).action()
实例:
元素
元素
$(document).ready(function(){
// 开始写 jQuery 代码...
});
这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码,即在 DOM 加载完成后才可以对 DOM 进行操作。
如果在文档没有完全加载之前就运行函数,操作可能失败。下面是两个具体的例子:
$(function(){
// 开始写 jQuery 代码...
});
jQuery 选择器允许您对 HTML 元素组或单个元素进行操作。
jQuery 选择器基于元素的 id、类、类型、属性、属性值等"查找"(或选择)HTML 元素。 它基于已经存在的 CSS 选择器,除此之外,它还有一些自定义的选择器。
jQuery 中所有选择器都以美元符号开头:$()。
参考:https://www.runoob.com/jquery/jquery-selectors.html
参考:https://www.runoob.com/jquery/jquery-events.html
Bootstrap 是全球最受欢迎的前端组件库,用于开发响应式布局、移动设备优先的 WEB 项目。
Bootstrap5 目前是 Bootstrap 的最新版本,是一套用于 HTML、CSS 和 JS 开发的开源工具集。它支持 Sass 变量和 mixins、响应式网格系统、大量的预建组件和强大的 JavaScript 插件,助你快速设计和自定义响应式、移动设备优先的站点。
官网:https://v5.bootcss.com/
我们可以通过以下两种方式来安装 Bootstrap5:
国内推荐使用 Staticfile CDN 上的库:
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/popper.js/2.9.3/umd/popper.min.js">script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.min.js">script>
***注:***此外你还可以通过包的管理工具 npm、 yarn、gem、 composer 等来安装:
npm install bootstrap
yarn add bootstrap
gem install bootstrap -v 5.1.1
composer require twbs/bootstrap:5.1.1
官网文档:https://v5.bootcss.com/docs/5.1/getting-started/introduction/
菜鸟教程:https://www.runoob.com/bootstrap5/bootstrap5-install.html
Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。
Vue 只关注视图层, 采用自底向上增量开发的设计。
Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
基本语法
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js">script>
head>
<body>
<div id="app">
<p>{{ message }}p>
div>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
}
})
script>
body>
html>
1、引入vue的js文件
2、创建div,设置id
3、new Vue的对象,el指向这个id,在这个id内的元素,可进行双向绑定,data是双向绑定的数据。
4、数据绑定最常见的形式就是使用 {{…}}(双大括号)的文本插值
设置v-if,如果是true,则被设置的元素及其子元素均显示,为false则都被从dom树上移除。
在元素 和 template 中使用 v-if 指令:
<div id="app">
<p v-if="seen">现在你看到我了p>
<template v-if="ok">
<h1>菜鸟教程h1>
<p>学的不仅是技术,更是梦想!p>
<p>哈哈哈,打字辛苦啊!!!p>
template>
div>
<script>
new Vue({
el: '#app',
data: {
seen: true,
ok: true
}
})
script>
随机生成一个数字,判断是否大于0.5,然后输出对应信息:
<div id="app">
<div v-if="Math.random() > 0.5">
Sorry
div>
<div v-else>
Not sorry
div>
div>
<script>
new Vue({
el: '#app'
})
script>
v-else-if 在 2.1.0 新增,顾名思义,用作 v-if 的 else-if 块。可以链式的多次使用:
判断 type 变量的值:
<div id="app">
<div v-if="type === 'A'">
A
div>
<div v-else-if="type === 'B'">
B
div>
<div v-else-if="type === 'C'">
C
div>
<div v-else>
Not A/B/C
div>
div>
<script>
new Vue({
el: '#app',
data: {
type: 'C'
}
})
script>
我们也可以使用 v-show 指令来根据条件展示元素:
<h1 v-show="ok">Hello!h1>
v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名。
v-for 可以绑定数据到数组来渲染一个列表:
<div id="app">
<ol>
<li v-for="site in sites">
{{ site.name }}
li>
ol>
div>
<script>
new Vue({
el: '#app',
data: {
sites: [
{ name: 'Runoob' },
{ name: 'Google' },
{ name: 'Taobao' }
]
}
})
script>
<div id="app">
<ul>
<li v-for="(value, key) in object">
{{ key }} : {{ value }}
li>
ul>
div>
<div id="app">
<ul>
<li v-for="(value, key, index) in object">
{{ index }}. {{ key }} : {{ value }}
li>
ul>
div>
计算属性关键词: computed。
计算属性在处理一些复杂逻辑时是很有用的。
可以看下以下反转字符串的例子: https://www.runoob.com/try/try.php?filename=vue2-str-reverse1
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js">script>
head>
<body>
<div id="app">
{{ message.split('').reverse().join('') }}
div>
<script>
new Vue({
el: '#app',
data: {
message: 'Runoob!'
}
})
script>
body>
html>
实例 1 中模板变的很复杂起来,也不容易看懂理解。
接下来我们看看使用了计算属性的实例:
<div id="app">
<p>原始字符串: {{ message }}p>
<p>计算后反转字符串: {{ reversedMessage }}p>
div>
<script>
var vm = new Vue({
el: '#app',
data: {
message: 'Runoob!'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
script>
我们可以通过 watch 来响应数据的变化。
<div id = "app">
<p style = "font-size:25px;">计数器: {{ counter }}p>
<button @click = "counter++" style = "font-size:25px;">点我button>
div>
<script type = "text/javascript">
var vm = new Vue({
el: '#app',
data: {
counter: 1
}
});
vm.$watch('counter', function(nval, oval) {
alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!');
});
script>
Vue.filter("hello", function (val: any) {
return 'hello' + any;
});
使用
{{ scope.row.name | hello }}
例如name = 张三
则显示 hello张三
lass 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。
Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。
我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
<style>
.active {
width: 100px;
height: 100px;
background: green;
}
style>
<body>
<div id="app">
<div v-bind:class="{ 'active': isActive }">div>
div>
<script>
new Vue({
el: '#app',
data: {
isActive: true
}
})
script>
body>
事件监听可以使用 v-on 指令:
<div id="app">
<button v-on:click="counter += 1">增加 1button>
<p>这个按钮被点击了 {{ counter }} 次。p>
div>
<script>
new Vue({
el: '#app',
data: {
counter: 0
}
})
script>
通常情况下,我们需要使用一个方法来调用 JavaScript 方法。
v-on 可以接收一个定义的方法来调用。
<div id="app">
<button v-on:click="greet">Greetbutton>
div>
<script>
var app = new Vue({
el: '#app',
data: {
name: 'Vue.js'
},
// 在 `methods` 对象中定义方法
methods: {
greet: function (event) {
// `this` 在方法里指当前 Vue 实例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if (event) {
alert(event.target.tagName)
}
}
}
})
// 也可以用 JavaScript 直接调用方法
app.greet() // -> 'Hello Vue.js!'
script>
Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation()。
Vue.js 通过由点 . 表示的指令后缀来调用修饰符。
!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis">a>
<form v-on:submit.prevent="onSubmit">form>
<a v-on:click.stop.prevent="doThat">a>
<form v-on:submit.prevent>form>
<div v-on:click.capture="doThis">...div>
<div v-on:click.self="doThat">...div>
<a v-on:click.once="doThis">a>
Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:
<input v-on:keyup.13="submit">
<input v-on:keyup.enter="submit">
<input @keyup.enter="submit">
全部的按键别名:
案例:
<p>
<input @keyup.alt.67="clear">
<div @click.ctrl="doSomething">Do somethingdiv>
组件(Component)是 Vue.js 最强大的功能之一。
组件可以扩展 HTML 元素,封装可重用的代码。
组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:
注册一个全局组件语法格式如下:
Vue.component(tagName, options)
tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:
<tagName>tagName>
所有实例都能用全局组件。
注册一个简单的全局组件 runoob,并使用它:
<div id="app">
<runoob>runoob>
div>
<script>
// 注册
Vue.component('runoob', {
template: '自定义组件!
'
})
// 创建根实例
new Vue({
el: '#app'
})
script>
我们也可以在实例选项中注册局部组件,这样组件只能在这个实例中使用:
<div id="app">
<runoob>runoob>
div>
<script>
var Child = {
template: '自定义组件!
'
}
// 创建根实例
new Vue({
el: '#app',
components: {
// 将只在父模板可用
'runoob': Child
}
})
script>
prop 是子组件用来接受父组件传递过来的数据的一个自定义属性。
父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 “prop”:
<div id="app">
<child message="hello!">child>
div>
<script>
// 注册
Vue.component('child', {
// 声明 props
props: ['message'],
// 同样也可以在 vm 实例中像 "this.message" 这样使用
template: '{{ message }}'
})
// 创建根实例
new Vue({
el: '#app'
})
script>
组件可以为 props 指定验证要求。
为了定制 prop 的验证方式,你可以为 props 中的值提供一个带有验证需求的对象,而不是一个字符串数组。例如:
Vue.component('my-component', {
props: {
// 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
propA: Number,
// 多个可能的类型
propB: [String, Number],
// 必填的字符串
propC: {
type: String,
required: true
},
// 带有默认值的数字
propD: {
type: Number,
default: 100
},
// 带有默认值的对象
propE: {
type: Object,
// 对象或数组默认值必须从一个工厂函数获取
default: function () {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function (value) {
// 这个值必须匹配下列字符串中的一个
return ['success', 'warning', 'danger'].indexOf(value) !== -1
}
}
}
})
除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。
下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时,元素获得焦点:
<div id="app">
<p>页面载入时,input 元素自动获取焦点:p>
<input v-focus>
div>
<script>
// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
// 当绑定元素插入到 DOM 中。
inserted: function (el) {
// 聚焦元素
el.focus()
}
})
// 创建根实例
new Vue({
el: '#app'
})
script>
我们也可以在实例使用 directives 选项来注册局部指令,这样指令只能在这个实例中使用:
<div id="app">
<p>页面载入时,input 元素自动获取焦点:p>
<input v-focus>
div>
<script>
// 创建根实例
new Vue({
el: '#app',
directives: {
// 注册一个局部的自定义指令 v-focus
focus: {
// 指令的定义
inserted: function (el) {
// 聚焦元素
el.focus()
}
}
}
})
script>
通过代码演示【TODO】
npm install vue-router
Vue.js + vue-router 可以很简单的实现单页应用。
是一个组件,该组件用于设置一个导航链接,切换不同 HTML 内容。 to 属性为目标地址, 即要显示的内容。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
参考:https://www.runoob.com/vue2/vue-routing.htmlhttps://www.runoob.com/vue2/vue-routing.html
# 全局安装 vue-cli
$ cnpm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project
# 这里需要进行一些配置,默认回车即可
This will install Vue 2.x version of the template.
For Vue 1.x use: vue init webpack#1.0 my-project
? Project name my-project
? Project description A Vue.js project
? Author runoob <[email protected]>
? Vue build standalone
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Setup unit tests with Karma + Mocha? Yes
? Setup e2e tests with Nightwatch? Yes
vue-cli · Generated "my-project".
To get started:
cd my-project
npm install
npm run dev
Documentation can be found at https://vuejs-templates.github.io/webpack
$ cd my-project
$ cnpm install
$ cnpm run dev
DONE Compiled successfully in 4388ms
> Listening at http://localhost:8080
成功执行以上命令后访问 http://localhost:8080/,输出结果如下所示:
import axios from 'axios'
Vue.prototype.$axios=axios;
this.$axios.get('你的url').then(res=>{ 结果值为res })
npm install moment --save # npm
yarn add moment # Yarn
Install-Package Moment.js # NuGet
spm install moment --save # spm
meteor add momentjs:moment # meteor
bower install moment --save # bower (废弃)
import moment from "moment";
// ======================= filter ==========================
Vue.filter("formatDate", function (val: any) {
if (val === "" || val === null) {
return "";
} else {
return moment(val).format("YYYY-MM-DD HH:mm:ss");
}
});
<el-table-column label="创建时间" width="100" prop="createDateTime">
<template slot-scope="scope">
{{ scope.row.createDateTime | formatDate }}
template>
el-table-column>
const axios = require('axios');
const cheerio = require('cheerio')
axios.get('https://www.cnblogs.com/').then(res => {
console.log('博客园', res)
$ = cheerio.load(res.data);
var arr = $('.post-item-title').text()
console.log('arr-',arr)
})
npm init
初始化包管理工具
git提交规范
feat: 新功能、新特性
fix: 修改 bug
perf: 更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化)
refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改)
docs: 文档修改
style: 代码格式修改, 注意不是 css 修改(例如分号修改)
test: 测试用例新增、修改
build: 影响项目构建或依赖项修改
revert: 恢复上一次提交
ci: 持续集成相关文件修改
chore: 其他修改(不在上述类型中的修改)
release: 发布新版本
workflow: 工作流相关文件修改
1、进入和退出命令
cd XX 进入XX文件夹
cd … 返回上一级
cd ./XXX 进入当前文件夹下XXX目录
cd /xxx 进入跟目录下的文件夹
pwd,查看当前位置
2、文件目录编辑
mkdir xxx 创建xxx目录
mkdir ./xxx
mkdir /xxx/xxx1
touch xxx 新建空白文件
vi xxx(文件名称) 进入到xxx文件里面
进入之后,默认是不能编辑的,
点击i,切换成插入模式
保存 1、按ESC ,2、输入: 3、接着输入wq
q:quit 退出, 需要q!强制退出
w:保存
3、浏览文件内容
cat xxx(文件名称)
4、复制粘贴和移动,删除
复制:cp 需要复制的文件名称 需要粘贴的文件名称
删除:rm 需要删除的文件名称