前端零基础快速入门

本教程适用于对前端知识零基础同学,使对前端有一些概念性的认识,文中很多知识仅提供一些常用的点,旨在快速掌握这些。如有不解或不正确地方,欢迎拍砖。

原文地址 (http://tt-ghost.github.io/2016/05/22/The-ABC-of-front-end/)

前半小时

与其他职位关系

前端工程师(Front-End-Engineer,简称FE)通常跟PM(产品经理)、UI(UI设计师)、RD(后端工程师)是好朋友。

初见三种语言

哪三种语言

  • 前端语言:HTML + CSS + javascript。对应的文件扩展名为.html(或.htm)、.css.js

三种语言长什么样?

  • HTML通常长下面这样,留意会发现 html 文件基本都是以【 < + 字符 + > 】形式开始,以【 < + / + 字符 + > 】形式结束,并嵌套包裹起来的(如 <h1 id="title">Hello World!</h1>),注意有些html标签是这种形式: 【< + 字符 + />】(比如 <br />)
<!DOCTYPE html>
<html>
  <head>
    <meta charset=utf-8>
    <title>Hello World!</title>
  </head>
  <body>
    <!--我是注释,页面上你看不见我奥-->
    <h1 id="title">Hello World!</h1>
    <div class="contaner">
      <p>Frist Html</p>
    </div>
  </body>
</html>

  • CSS通常长下面这样,特点是一些字符(这里指的是body#title.container)后面跟一个花括号,花括号里面是多个 【 属性 + : + 属性值 + ; 】(如color:#555;)形式组成的样式规则。
/* 我是CSS注释 */
body{color:#555;}
#title{font-size:20px;}
.container{padding:10px;margin-bottom:16px;}
body p{margin-bottom:10px;}
  • Javascript通常长下面这样
function showName(){
  alert('Hello TT!')
}
/*
  我是JS中的多行注释
*/

// 我是JS中的单行注释

showName();

这三种语言关系

这里拿开始盖房子、到装修、再到入住去做个比较,可能并不是很准确,希望能理解意思。

  • HTML负责文档的结构,就好比盖房子用的材料(砖、钢筋、水泥等),根据不同层次将他们嵌套、组合在一起
  • CSS负责美化及效果,类似盖房子的装修过程,给墙换个颜色或者给地面铺个地板,让人使用起来更舒服。当然CSS的功能不仅仅是美化这么简单,还可以实现动画等等
  • JS负责跟用户及服务端交互。房子盖好了,也装修完了,终究是要有人要住,要住人就会交水电费、物业费、打扫卫生等,这些不管是对房子以外的交互(比如交各种费用)还是对房子本身的处理(比如打扫卫生),都需要房子的主人完成某些事情,而JS的交互就好比主人处理这些事情

实例!实例!实例!我要看实例!

第一个实例

  • 首先看一个简单的Hello World!,新建一个文件,我命名为index.html,将以下代码复制到index.html文件中,然后双击打开。
<!DOCTYPE html>
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>

恭喜你!已经实现了第一个前端页面,是不是很easy。这是一个仅仅由html显示的Hello World!,现在看起来还有点太简洁。

代码说明

  • 第一行是文档类型申明。这里指定的是html5文档类型。更多文档申明

  • 接下来是由成对的标签组成的html,当然html也有非闭合的标签,对于非闭合标签一般会在>前添加一个斜线/,虽然很多浏览器能够解析这种不带反斜线的非闭合标签,至少在编码风格一致上也推荐加上反斜线。如:

    • <br />:换行符
    • <input type="text" />:输入框 等
  • 一个标准html文件应该由文档类型申明,然后由html包裹的headbody标签。

    • head标签:
      • 标签内容不会在浏览器中直接显示;通常有一个<title> title info</title>:文档名称,会显示在浏览器当前tab上;
      • stylelink 标签通常也会放在 head中,分别对应内联样式外部样式
      • 另外还有一些meta标签,用于描述文档的一些属性,如<meta charset="utf-8" />知名文档编码类型
    • body标签
      • body内的内容将显示在浏览器中
      • 另外经常会把一些JS文件放在</body>之前(注意不是<body>之前),通常通过script标签引入<scrpt src="./js/main.js"></scrpt>
  • html注释

    • 以 ````结束的标签,可以跨行,但不能嵌套

再看第一个实例

  • html文件(添加样式(style或link)和脚本(script)后的html)
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Hello World!</title>
    <link rel="stylesheet" type="text/css" src="./css/main.css" />
    <style>
      .red{
        color:red;
      }
    </style>
  </head>
  <body>
    <h1 class="red">Hello World!</h1>
    <button id="butotn">点击我</button>
    <!-- 我是一段注释 -->
    <!--
      <h1 class="red">!</h1>
    -->
    <script src="./lib.js"></script>
    <script>
      var btn = document.getElementById("button");
      btn.addEventListener("click", function(){
        alert("你点击了按钮");
      });
    </script>
  </body>
</html>
  • main.css文件如下:
*{
  margin: 0;
  padding: 0
}
h1{
  font-size: 20px;
}
  • lib.js 文件如下:
(function(w, undefined){
  var Lib = {
    this.version = "0.0.1"
  }

  Lib.prototype = (function(){
    var proto = {
      trim: funciton(str){
        return str.repleace(/(^\s*)|(\s*$)/g, '');
      }
    }
    return proto;
  })();

  w.Lib = new Lib();
})(window);

样式的引入:其中一种是通过style 添加页面内样式,另一种通过link引标签入外部的 css 文件。通过 style好处是可以少发一个css文件的请求,缺点是不能被缓存,不易维护,每次打开这个index.htmlstyle内容重新下载。

后半小时

CSS

盒子模型

html标签元素根据显示特性可以分为三种类型:行内元素、块元素、行内块元素

  • 行内元素:span\a\i\em\b\strong\img\canvas
  • 块元素:html\body\div\h1~h6\p\table\ul\ol\li\header\footer\hgroup...
  • 伪元素:::after,::before(现在浏览器基本也都支持单冒号),注意跟CSS中的伪类(:hover,:focus,:active,:visited)做一下区分;伪元素是会在html中占位置,是一种特殊的元素,默认出现在元素的开始和结束地方,而伪类是元素的一种状态,如:鼠标移入、获取焦点、激活、访问过等的状态
标准盒子模型
  • 如下图,盒子从内到外分别是content->padding->border->margin
|──────────────────────────────────── top ──────────────|
|          |─────────────────────────────────────────|  |
|          |          |───────────────────────────|  |  |
|left      |          |                           |  |  | right
|          |          |           |─────────────| |  |  |
|<-margin->|<-border->|<-padding->|<--content-->| |  |  |
|          |          |           └─────────────  |  |  |
|          |          └───────────────────────────   |  |
|          └──────────────────────────────────────────  |
└─────────────────────────────────── bottom ────────────
  • 容器的width属性指的是content部分的宽度

书写规范

  • 颜色设置
/* 通常颜色使用16进制表示,也可以使用rgb、rgba等表示,如下表示字体白色,纯黑且50%半透明背景,边框颜色为不透明深灰色*/
body{
  color:#fff;
  background-color:rgba(0,0,0,.5);
  border-color:rgb(100,100,100);
}
/* 常见颜色可以直接使用英文单词,如red,green,blue,white,black,yellow,gray等 */
form{color:black}
  • padding/margin/border及简写
/* 为属性值0时,可以省去单位,以下对``h1``元素设置的样式等价 */
h1{padding:0}
/*
h1{
  padding-top:0;
  padding-right:0;
  padding-bottom:0;
  padding-left:0;
}
 */

/* 最后一个属性可以去掉分号,书写时推荐保留 */
h2{margin:5px; padding:0px}

h3{
  padding:10px 5px;
}
/* 等价于 */
/*
h3{
  padding-top:10px;
  padding-right:5px;
  padding-bottom:10px;
  padding-left:5px;
}
 */

h4{
  padding:10px 5px 8px;
}
/* 设置的顺序为上右下左,同理margin和border属性,等价于 */
/*
h4{
  padding-top:10px 5px 8px;
  padding-right:5px;
  padding-bottom:8px;
  padding-left:5px;
}
 */

h5{
  border:1px solid #f00;
}

  • 常见符合属性
    padding\margin\border\background\font\overflow
    • 其中padding\margin\border既可以设置容器单独边距离边框,也可以一次对容器多个边统一设置,例如一下两种设置是等价的,对于padding这种可以对容器四个边单独设置的属性,在简写的时候需要遵循顺时针方向顺序设置。
body{padding:1px 2px 3px 4px;}
body{
  padding-top: 1px;
  padding-right: 2px;
  padding-bottom: 3px;
  padding-left: 4px;
}

注释

/* css注释,多行 */

选择器

important(!important)、行内、id(#content)、类(.title)、标签(h1)、属性([type="text"])、后代(div a)、子(div>a)等

CSS属性

根据是否对相邻元素产生影响可以分为以下两种:

  • 只影响自身
    常见属性有:backgroundcolor
  • 影响相邻元素:paddingbordermarginfontwidthheight等等

单位

px%emrem

  • px(像素)相对显示器屏幕分辨率而言的一种单位,通常为整数
  • %相对容器或自身的一种单位
  • em继承父级字体大小,font-size:1em即为与父级字体大小一样,font-size:2em,极为父级字体的二倍
  • rem相对html标签字体比例,如html{font-size:10px}div{font-size:2rem}相当于20px

常见布局

两栏布局:
  • 两栏都是百分比

html文件

<body>
  <div class="main">
    <div class="left-side">left-side</div>
    <div class="right-side">right-side</div>
  </div>
</body>

css文件

/* ::after是尾元素 */
.main::after{
  content:'',
  display:block;
  clear:both;
  height:0;
}
.left-side, .right-side{
  float:left;
  width:50%;
}
  • 左栏定宽,右栏百分比
<body>
  <div class="main">
    <div class="left-side">left-side</div>
    <div class="right-side">right-side</div>
  </div>
</body>

css文件

/* ::after是尾元素 */
.main::after{
  content:'',
  display:block;
  clear:both;
  height:0;
}
.left-side{
  width:100px;
}
.right-side{
  float:left;
  margin-left:100px;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • 1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素? 行内元素:和有他元素都在一行上,高度、行高及外...
    极乐君阅读 2,400评论 0 20
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 2,219评论 0 8
  • 2017年7月27日下午,由株洲高新区管委会主办,株洲高新区金融服务中心、株洲高新区(天元区)投融资促进协会...
    ff小芬儿阅读 549评论 0 0
  • 重新再读这两篇文章感觉好多啦,大意主旨很快就能明白,于是整理了几个我觉得很有用的词组。 shake up the ...
    ShirleyTang1212阅读 206评论 0 0