在线简历 | 开发静态网站

2020-05-03  本文已影响0人  空无一码

本节课我们将使用vs code 编辑器和Chrome浏览器开发一个简单的纯静态网站,掌握web全栈工程师需要掌握html、css和JS的基础前端技能。

首先打开vs code,通过文件菜单栏新建一个文件,取名为index.html,然后粘贴以下内容到文件中:

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
    <title>个人网站</title>
    </head>
    <body>
        <h1>我的第一个标题</h1>
        <p>我的第一个段落</p>
    </body>
</html>

然后,Mac系统上使用command + s保存文件到桌面,然后如何在浏览器打开查看效果呢?

第一种方式是先最小化到桌面,然后到桌面右击index.html文件,选择使用浏览器打开;

第二种更好,不过需要安装一个vs code 的插件,点击左侧的插件功能图标,输入 open in browser 搜索,找到搜索到的插件,点击安装后,我们在vscode 通过右击文件编辑区,选择通过浏览器打开即可,当然也可以通过其提示的快捷键打开,比如Mac 系统使用 Alt + B打开。

相信大家很快就看到了我们第一个网页的效果了,但是简单的网页背后包含了大量的web的知识,这里我们简单谈一谈。

首先什么是HTML?

HTML 是 HyperText Markup Language 的简称,中文意思为超文本标记语言,是一种用于创建网页的标准标记语言,它运行在浏览器上,由浏览器来解析。

它不是一种编程语言,而是一种标记语言,一套标记标签 (markup tag)

什么是 HTML 标签?

HTML 标签是由尖括号包围的关键词,比如 <html>
HTML 标签通常是成对出现的,比如 <b> 和 </b>

标签对中的第一个标签是开始标签,第二个标签是结束标签,开始和结束标签也被称为开放标签和闭合标签

在上面的例子中,<!DOCTYPE>声明有助于浏览器中正确显示网页,而其他示例中标签的作用如下:

<!DOCTYPE html> 声明为 HTML5 文档
<html> 元素是 HTML 页面的根元素
<head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8。
<title> 元素描述了文档的标题
<body> 元素包含了可见的页面内容
<h1> 元素定义一个大标题
<p> 元素定义一个段落

当然,我们常用的标签还有div 标签,img标签、button、label、span、a等标签,以及html5这个新规范添加的section、header等语义化标签。

对于这些标签的使用,建议大家完整的去看一下 菜鸟教程中的HTML教程 https://www.runoob.com/html/html-tutorial.html 或MDN的对应教程 https://developer.mozilla.org/zh-CN/docs/Web/HTML,先大体了解一下,用到时再去细查。

这里我们简单讲解一下一些常识,比如html 标签,也称 html 元素的语法:

讲完标签后,我们再谈一谈标签的属性。

常用的属性有:

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
    <title>个人网站</title>
    </head>
    <body style="background: red;">
        <h1>我的第一个标题</h1>
        <p>我的第一个段落</p>
    </body>
</html>

此时,我们使用Chrome浏览器打开它,就能看到网页的背景变成红色了,我们只是在 body 标签中的style属性中设置了background 这个Css属性而已。

什么是CSS呢?

CSS 是Cascading Style Sheets的缩写,译为层叠样式表,定义如何显示 HTML 元素,就像 HTML 中的字体标签和颜色属性所起的作用那样,通过使用 CSS 我们可以大大提升网页开发的工作效率!

当读到一个样式表时,浏览器会根据它来格式化 HTML 文档,插入样式表的方法有三种:

要使用内联样式,你需要在相关的标签内使用样式(style)属性,Style 属性可以包含任何 CSS 属性,比如我们前面让背景变红色使用的就是内联的方式。由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。

当单个文档需要特殊的样式时,就应该使用内部样式表。我们可以使用 <style> 标签在文档头部定义内部样式表,就像这样:

<head>
    <style>
        body {background: red;}
    </style>
</head>

我们把body标签中的style属性删除后,也能看到相同的效果,代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>个人网站</title>
        <style>
            body {background: red;}
        </style>
    
    </head>
    <body>
        <h1>我的第一个标题</h1>
        <p>我的第一个段落</p>
    </body>
</html>

而当样式需要应用于很多页面时,外部样式表将是理想的选择,不过需要使用 <link>标签链接到样式表, <link>标签放在HTML文档的头部:

<head>
    <link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

浏览器会从文件 mystyle.css 中读到样式声明,并根据它来格式文档。外部样式表可以在任何文本编辑器中进行编辑。文件不能包含任何的 html 标签。样式表应该以 .css 扩展名进行保存,当然使用了css处理器的除外,比如less的使用.less为扩展名,而scss和stylus则分别使用.scss和.styl。

如果某些属性在不同的样式表中被同样的选择器定义,那么属性值将从更具体的样式表中被继承过来。 比如我们在三种方式中都定义了页面的背景色,如下所示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>个人网站</title>
        <link rel="stylesheet" type="text/css" href="mystyle.css">
        <style>
            body {background: yellow;}
        </style>
    
    </head>
    <body style="background: red;">
        <h1>我的第一个标题</h1>
        <p>我的第一个段落</p>
    </body>
</html>

mystyle.css中也定义了背景色:

body {
    background: blue;
}

此时,浏览器如何显示呢?红黄蓝哪个更好呢?

这就需要一个规则,没有规则就乱套啦。因为样式表允许以多种方式规定样式信息,样式可以规定在单个的 HTML 元素中,也可以在 HTML 页的头元素中,还可以在一个外部的 CSS 文件中,甚至可以在同一个 HTML 文档内部引用多个外部样式表。

一般情况下,优先级如下:内联样式)Inline style > (内部样式)Internal style sheet >(外部样式)External style sheet > 浏览器默认样式

基于这个优先级的规则,上面的例子中内联样式设置背景色为红色,内部样式表则为黄色,而外部则为蓝色,通过我们没有设置前为白色,推断出默认样式为白色,根据顺序,我们得出最后背景色为红色。

更多的css的基础知识请通过 https://www.runoob.com/css/css-tutorial.htmlhttps://developer.mozilla.org/zh-CN/docs/Web/CSS 学习或查阅。

一个小练习

了解了HTML和CSS的一些基础概念后,我们来做一个小练习,实现一个红色的正方形,示例代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>个人网站</title>
        <link rel="stylesheet" type="text/css" href="mystyle.css">
        <style>
            div {
              width: 300px;
              height: 300px;
              background: red;
            }
        </style>
    </head>
    <body>
        <h1>红色的正方形</h1>
        <div></div>
    </body>
</html>

可以看到,我们通过CSS设置一个div 块级元素的宽高,就轻易实现了,但是我们怎么实现让其上下左右居中呢?这是一个最常见的面试题。

有很多种方法,这里老师只演示老师用得最多的一种,示例代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>个人网站</title>
        <link rel="stylesheet" type="text/css" href="mystyle.css">
        <style>
            body {
                  display: flex;
                  justify-content: center;
                  align-items: center;
            }
            div {
              width: 300px;
              height: 300px;
              background: red;
            }
        </style>
    </head>
    <body>
        <h1>红色的正方形</h1>
        <div></div>
    </body>
</html>

此时,我们刷新并没有看到我们期待的效果,因为flex布局默认是横向的,所以我们需要在display: flex;这个css属性后面加上flex-direction: collumn; 此时我们就能看到左右居中啦,但是为何上下没有居中呢?这是因为html和body元素的高度根据其子元素的高度决定,我们需要设置它们的高度为100%,最终程序如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>个人网站</title>
        <style>
            html {
              height: 100%;
            }
            body {
              display: flex;
              flex-direction: column;
              justify-content: center;
              align-items: center;
              height: 100%;
            }
            div {
              width: 300px;
              height: 300px;
              background: red;
            }
        </style>
    </head>
    <body>
        <h1>红色的正方形</h1>
        <div></div>
    </body>
</html>

此时我们就能看到一个上下左右都居中的正方形啦。但是如果我们想点击正方形,让它变成绿色,这个怎么实现呢?

这就需要用到javascript。

什么是JavaScript呢?

JavaScript 是 Web 的编程语言,几乎所有现代的 HTML 页面都要使用 JavaScript

为什么学习 JavaScript? 因为一个完整的web网页基本都有HTML、CSS和JavaScript组成,它们关系如下:

JavaScript 用法
HTML 中的脚本必须位于 <script></script> 标签之间。脚本可被放置在 HTML 页面的 <body><head> 部分中。<script></script> 会告诉 JavaScript 在何处开始和结束。

<script>
    alert("我的第一个 JavaScript");
</script>

现在我们无需理解上面的代码。只需明白,浏览器会解释并执行位于 <script> 和 </script>之间的 JavaScript 代码

我们可以在 HTML 文档中放入不限数量的脚本。脚本可位于 HTML 的 <body> 或 <head> 部分中,或者同时存在于两个部分中。通常的做法是把函数放入 <head>部分中,或者放在页面底部。这样就可以把它们安置到同一处位置,不会干扰页面的内容。

我们也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。外部 JavaScript 文件的文件扩展名是 .js。如需使用外部文件,请在 <script>标签的 "src" 属性中设置该 .js 文件:

<!DOCTYPE html>
<html>
    <body>
        <script src="myScript.js"></script>
    </body>
</html>

可以将脚本放置于<head> 或者 <body>中,放在 <script>标签中的脚本与外部引用的脚本运行效果完全一致。

JavaScript 函数和事件

通常,我们需要在某个事件发生时执行代码,比如当用户点击按钮时。如果我们把 JavaScript 代码放入函数中,就可以在事件发生时调用该函数。HTML 事件是发生在 HTML 元素上的事情,当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。

HTML 事件可以是浏览器行为,也可以是用户行为,以下是 HTML 事件的实例:

在事件触发时 JavaScript 可以执行一些代码,HTML 元素中可以添加事件属性,比如我们要实现点击红色正方形,可以在div添加一个click事件属性,示例代码如下:

<div id="demo" onclick="getElementById('demo').style.background='green'"></div>

在vs code 中改完后,我们刷新一下浏览器,点击红色正方形后就能看到它变为绿色。当然,我们也可以使用script标签的方式实现样的功能:

<h1>红色的正方形</h1>
<div id="demo" onclick="changeColor()"></div>
<script>
  function changeColor() {
    document.getElementById('demo').style.background='green';
  }
</script>

甚至,我们建一个changeColor.js文件,通过外部文件引进来,也是一样的:

  function changeColor() {
         document.getElementById('demo').style.background='green';
  }

此时,index.hml中的相关部分改成:

<h1>红色的正方形</h1>
<div id="demo" onclick="changeColor()"></div>
<script src="changeColor.js"></script>

可以看到,在HTML中使用js,和CSS一样,也有三种使用的方式。同时给HTML添加事件,还可以使用 addEventListener() 方法,它允许向同一个元素添加多个事件,且不会覆盖已存在的事件:

  <div id="demo"></div>
  <script>
      document.getElementById('demo').addEventListener('click', (el) => {
        el.target.style.background='green';
      });
  </script>

可以看到,此时我们在div中去掉了onclick事件属性,而是通过标签元素上的addEventListener 添加事件监听函数,然后通过el这个事件对象的target 获取元素,进而改变其样式。

那么前面用到的document 是什么呢?当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

通常,通过 JavaScript,您需要操作 HTML 元素。为了做到这件事情,您必须首先找到该元素。有三种方法来做这件事:

在 DOM 中查找 HTML 元素的最简单的方法,是通过使用元素的 id,本例查找 id="demo" 元素:

var demoDiv=document.getElementById("demo");

总之,通过 HTML DOM,我们不仅可以访问 JavaScript HTML 文档的所有元素,而且可以改变其内容和各种属性。

经过前面的学习,我们已经初步掌握了html、css和js的作用和相互间的关系,以及Js是如何通过浏览器提供 DOM API 来操作HTML元素及其CSS样式的。

对于JS我们只是简单使用了一下,并没有系统的学习,更多的js知识推荐大家,先通过 https://www.runoob.com/js/js-tutorial.htmlhttps://developer.mozilla.org/zh-CN/docs/Web/JavaScripthttps://wangdoc.com/javascript/basic/history.htmlhttps://es6.ruanyifeng.com/等文字教程学习或查阅。

大家系统看过以后,在后面的教程中,我再展开讲解所用到的js知识。

上一篇下一篇

猜你喜欢

热点阅读