前端攻略-从路人甲到英雄无敌

记得那年,我初学前端,遇见了很多的文章,在浩瀚的知识海洋里我手足无措,不知从何开始。己所不欲,勿施于人。这篇文章就会帮你去遨游前端学习的海洋,主要包含了在我之前的学习过程中整理的一些资源和一些感悟。我打算将整篇文章切分为两部分,第一部分重温HTML与CSS的基本知识,第二部分概括JavaScript、前端框架与设计模式。

HTML 与 CSS基础

前端的领域里,任何东西都离不开HTML 与 CSS。HTML与CSS基本上控制了你看到的所有东西,HTML用来定义内容而CSS负责样式与布局。

首先从HTML 以及 CSS 开始,这里推荐的是MDN的官方指南。MDN对于重要的HTML与CSS内容进行了详细条理的阐述,除此之外,每一章都是单独的一页,提供了在CodePen与JSFiddle展示的Demo。

看完了这些基础教程之后,可以来看看由CodeAcademy提供的tMake a Website系列课程。这个课程只要几个小时就能看完,如果你想要更多的锻炼,可以瞅瞅CSS Diner,这是一个CSS挑战的小游戏。

最后,可以看看怎么使用 Google Fonts,参考下 CSSTricks出的Basics of Google Font API

国内用不了Google Fonts的话可以参考下FontAwesome,如果你要用中文字体的话建议参考FontSpider,请自行Github搜索。

Typography--排版也是个构建界面时候很重要的部分,有时间的话推荐你看看Donny Truong写的Professional Web Typography这本书,它会教你基本上关于排版的所有东西。在学习这些的时候不要太担心自己会忘了,反正记不住。你应该着重于记录这些并且理解HTML和CSS是怎么工作的。

Practicing HTML and CSS Basics

到这里你应该已经明白了HTML与CSS的基本使用,下面我们要学以致用了。这一部分就设计了两个小实验来让你自己动手构建网站与界面。我是把它们形容成实验,所以不要害怕失败。

第一个实验里,我们用的是CodePen,一个在线的HTML与CSS实验台。同时也提供了实时预览功能,一石二鸟呦。好了,下面我们要看看我们做的界面的原型了,转到 Dribbble吧, 这嘎达可全是设计创意啊。
我是看上了这个系列:1234, 以及 5.。我选择了一个移动优先的设计是因为与桌面设计相比更简单一点,不过你也可以自己找一个。

在你选定了设计之后,就可以在CodePen上面开始动手了。你也可以看看其他人设计的Pen: pens on CodePen点击预览. 另外,别忘了StackOverflow ,这可是你的小伙伴呦。如果你最后实现的东西跟设计相去甚远,也不要灰心,不断尝试总会提高的。

Experiment 2

经过实验一估计你已经有点自信了,在实验二里面我们将会先借鉴一些大公司的经典站点。有不少站点会用一些CSS框架或者混淆它们的CSS类名,这会让源代码的阅读比较麻烦,这嘎达我列举了几个源代码可读性比较好的:

  • Dropbox for Business: Try replicating their hero section
  • AirBnB: Try replicating their footer
  • PayPal: Try replicating their navigation bar
  • Invision: Try replicating their signup section at the bottom of the page
  • Stripe: Try replicating their payments section

再次强调下,实验二的目的并不是让你去重构整个页面,而是知道怎么去分割组件以及人家是怎么做的。如果你没有设计的背景,可能你要好好发掘下你的潜能了。一个优秀的前端开发者要能够辨别好的设计然后完美地重现它们。

你可以选择在线编程:CodePen 或者直接本地开发。如果你选择本地做,那你可以使用这个 模板项目 。我推荐是使用Atom 或者Sublime这样的编辑器。另外,对于Firefox或者Chrome自带的控制台与开发者工具也要好好瞅瞅。

HTML and CSS Best Practices

好了,现在你已经能够用HTML与CSS做一些简单的事情了,下面就要看看所谓的最佳实践了。最佳实践实际上就是一系列的在日常开发中总结出来的约定俗成的规范的集合,来让你更快地开发与构建更高质量的代码。

Semantic Markup:语义标记
HTML与CSS最佳实践中重要的一条就是怎么来写出有语义可读性的标记。好的语义即是你使用了合适的HTML标签与CSS的类名来传达出你想表达的结构含义。
譬如 h1 标签会告诉我们里面包裹的是一些很重要的标题信息,另一个例子就是*footer *标签,会直截了当地跟你说,这里面是包含一些页脚信息。建议你阅读 A Look Into Proper HTML5 Semantics 以及CSSTricks的 What Makes For a Semantic Class Name

CSS Naming Conventions

下面一个比较重要的事情就是怎么给你的CSS定一个合适的类名。好的命名习惯,譬如语义化的标记,可以更好地传达含义,让代码的可读性与可维护性大大增加。

总体来说,我的建议是跟着你的直觉来确定命名习惯,随着时间的发展你会觉得这样看上去很舒服。如果你要看看大公司,譬如Medium是怎么实践BEM这样的命名规范的,可以阅读 Medium’s CSS is actually pretty f***ing good这篇文章,在这里你会学到怎么在一个快速迭代地情况下也维护你的有效地CSS命名习惯。

CSS Reset

不同的浏览器在譬如margin以及line-height这些小的样式点之间存在着一些不一致性,因此你要学会重置你的CSS环境。 MeyerWeb 就是一个常见的重置手段。

Cross Browser Support

跨浏览器支持意味着你的代码要去支持绝大部分的现代浏览器,一些常见的CSS属性,譬如 transition 需要 vendor prefixes 来运行在不同的浏览器中。你可以在 CSS Vendor Prefixes这篇文章里获取更多的知识。这就意味着你需要花费更多的时间来在不同的浏览器之间进行测试。

翻开CSS的历史,自90年代以来,CSS走过了一段漫长而崎岖的道路。整个UI系统变得日益繁复,人们也会去选择使用一些预处理器或者后处理器来管理这种复杂性。CSS的预处理器或者CSS语言的扩展会在无声无息之间提供类似于变量、Mixins以及继承这些特性。最主要的两个CSS的预处理器就是Sass 与 Less。2016年中Sass被越发广泛地使用,著名的响应式框架BootStrap就是从Less迁移到了Sass。另外,很多人谈到SASS的时候也会提到Scss。

CSS后处理器则对于手写的CSS文件或者经过预编译的CSS文件进行一些处理,以著名的PostCSS 为例,它有一个插件可以帮你自动地添加一些渲染前缀。
当你接触过CSS的预处理与后处理器之后,你会把它们提升到日常伴侣的。不过,过犹不及,像变量和Mixins这些特性不能滥用啊,还是应该在合适的地方使用。

Grid Systems and Responsiveness

网格系统即是用来水平或者垂直地排布元素的CSS架构。

著名的网格框架有BootstrapSkeleton, 以及 Foundation,它们提供了用于在布局中进行行列管理的样式表。这些框架用起来很方便,不过我们也是要理解网格的工作原理,推荐看Understanding CSS Grid Systems 以及 Don’t Overthink Grids

网格系统另一个目标就是是你的网站具有响应式特性。响应式意味着你的网站可以根据屏幕的大小来动态调整你网站大小与布局。很多时候这个响应式特性都是基于CSS media queries, 即根据不同的屏幕大小选用不同的CSS样式规则。

另外,因为我们正在进行一场所谓mobile-first变革,推荐你看下An Introduction to Mobile-First Media Queries

Practicing HTML and CSS Best Practices

恭喜道友,筑基成功,你已经能够了解一些关于HTML与CSS的最佳实践了,下面又到了学以致用的时间。这里的两个实验主要是让你锻炼下编写整洁的代码和保证长期的可读性与可维护性。

Experiment 3
实验3中,你需要选一个你之前自己做的项目并且用上文中提及的最佳实践去重构它们,从而保证你的代码更易读并且更简洁。掌握如何有效地重构代码是前端开发者的一个重要技能。当然,写出高质量的代码并非一蹴而就,而是需要一个长期的迭代过程,CSS Architectures: Refactor Your CSS这篇文章就是一个不错的学习起点。

当你决定要重构代码之前,你要先扪心自问以下几点:

  • 你的类名定义是不是模糊不清的,6个月之后你还能否明白你类名的意义。
  • 你的HTML与CSS是否足够语义化,一眼望去是否就能明白你的代码架构与关系意义?
  • 你是否N次的重复使用了相同的颜色代码,别忘了可以用Sass variable
  • 你的代码是否能够在Safari与Chrome都能正常运行?
  • 能否用像Skeleton这样的网格框架来代替你自己的布局?
  • 你是不是经常使用了!important
    ?

Experiment 4
最后一个实验是一个大杂烩,把前面讲的所有知识都混杂起来。不过要知道的是,上面讲的很多最佳实践在一个草稿或者小型项目里难见分晓,只有在大项目里才能显露峥嵘。
因此,最后一个项目我是建议建立一个自己的作品剪辑网站,作为一个前端开发者,个人网站就是自己的电子名片。这里会展示你的作品与项目的积累,也是一个回溯你发展的进程与开发履历的地方。

可以参考Adham Dannaway的文章 My (Simple) Workflow To Design And Develop A Portfolio Website来从零开始。
Stay current
当HTML与CSS已经是小菜一碟,你就算是进入了前端开发者的殿堂,一个不断发生改变的地方。

【有一个前端学习交流QQ群:328058344  如果你在学习前端的过程中遇到什么问题,欢迎来我的QQ群提问,群里每天还会更新一些学习资源。禁止闲聊,非喜勿进。】

时间: 2024-08-26 03:11:24

前端攻略-从路人甲到英雄无敌的相关文章

【前端攻略】:玩转图片Base64编码(转)

引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的Base64编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的base64编码.标题略大,不过只是希望通过一些浅显的论述,让你知道什么是图片的base64编码,为什么我们要用它,我们如何使用并且方便的使用它,并让你懂得如何去在前端的实际工作中运用它. 什么是base64编码? 我不是来讲概念的,直接切入正题,图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址. 这样做有什么意义呢?我

【前端攻略】:玩转图片Base64编码

引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的Base64编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的base64编码.标题略大,不过只是希望通过一些浅显的论述,让你知道什么是图片的base64编码,为什么我们要用它,我们如何使用并且方便的使用它,并让你懂得如何去在前端的实际工作中运用它. 什么是base64编码? 我不是来讲概念的,直接切入正题,图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址. 这样做有什么意义呢?我

前端攻略系列(一) - 前端各种优化(保证持续更新)

前端性能优化 1. 请减少HTTP请求 基本原理: 在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突出. 一个正常HTTP请求的流程简述:如在浏览器中输入"www.xxxxxx.com"并按下回车,浏览器再与这个URL指向的服务器建立连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求的信息后再返回相应的信息,浏览器接收到来自服务器的应答信息后,对这些数据解释执行. 而当我们请求的网页文件中有很多图片.CSS.JS甚

【前端攻略】最全面的水平垂直居中方案与flexbox布局

最近又遇到许多垂直居中的问题,这是Css布局当中十分常见的一个问题,诸如定长定宽或不定长宽的各类容器的垂直居中,其实都有很多种解决方案.而且在Css3的flexbox出现之后,解决各类居中问题变得更加容易了.搜了搜园子内关于flexbox的文章觉得很多不够详尽,故想借介绍flexbox的同时好好总结一番各类垂直居中的方法. 由简至繁: 行内元素的水平居中     要实现行内元素(<span>.<a>等)的水平居中,只需把行内元素包裹在块级父层元素(<div>.<l

移动端前端开发真机调试攻略

移动端前端开发真机调试攻略 一.IOS 移动端 (Safari开发者工具) 手机端:设置 → Safari → 高级 → Web 检查器 → 开. mac端:Safari → 偏好设置 → 高级 → 在菜单栏中显示“开发”菜单. 在 OS X 中启动 Safari 之后,以 USB 电缆正常接入 iOS 设备,并在此移动设备上启动 Safari.此时点击计算机上的 Safari 菜单中的“开发”,可以看到有 iOS 设备的名称显示,其子菜单项即为移动设备上 Safari 的所有标签页,点击任意一

进阶攻略|前端完整的学习路线

最近写了一篇关于前端一些常见轻便耐用的UI框架的小总结,很多小伙伴私信问我,要怎么学习前端,没有明确的方向,为了感谢大家的关注点赞打赏和喜欢,决定把前端的学习进阶之路稍微整理一下,也为了自己能在工作之中思路更加的清晰.姑娘水平能力火候不够尚在学习中,如有不足,欢迎批评指正补充. 初级阶段 阿里矢量图标库:http://www.iconfont.cn/ ps使用教程:http://www.16xx8.com/ JavaScript教程:http://www.runoob.com/js/js-tut

天天撸啊撸哪个英雄好 英雄培养攻略

天天撸啊撸英雄有很多,那么哪几个英雄值得培养呢,接下来小编就给大家详细介绍下哪个英雄值得培养,英雄应该怎么培养. 哪个英雄值得培养 游戏分为前排.中排.后排,控制.肉盾.输出.辅助一个都不能少,追求高攻击而忽略前排培养是扛不住BOSS攻击的;前期这里推荐始重点升级剑圣.流浪和星妈,提升攻击可以快速过图,如果有充值可以得到狐狸什么的可以一直用到后期. 推荐英雄:剑圣.流浪和星妈. 剑圣作为前期英雄,大招杀伤力大,而且恢复很快,完完全全可以独当一面. 流浪配合剑圣的大招,往往对一波敌人杀伤力很强大,

新手学web前端有哪些攻略?

web前端入行门槛低.薪资高.发展前景好,已经成为近几年的热门岗位,很多人在想要转行时也会首选web前端.想要学好web前端,尤其是对于没有任何基础的新手来说,一定要找到好的学习方法.下面小编就为大家分享一下前端新手学习的攻略有哪些? 第一:基础的重要性 无论做什么都一定要有扎实的基础,参加web前端开发培训也不例外,只有基础牢固,才能更深入的学习新技能.作为一名初级的web前端工程师,你必须要具备基础的技术要素:html.CSS和Java.这是作为web前端工程师所必须要掌握的.web前端的入

Tomcat全攻略

tomcat全攻略 1.tomcat是什么? Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它早期的名称为catalina,后来由Apache.Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat.Tomcat是应用(java)服务器,它是一个servlet容器,是Apache的扩展,但它是独立运行的.tomat应用于Java Servlet, JavaServer Pages,Java Expression Language以及其他的Javaweb开发的技术. Th