整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

小白如何快速入门JavaScript?6分钟带你看懂快速学习的六大步骤


avaScript(通常缩写为JS)是一种解释型、面向对象、多范式的高级编程语言。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。


JavaScript是世界上最流行的脚本语言,因为它很容易上手,而且学习到它的精髓之后还可以编写高质量的代码,这就是我推荐给初学者学习的主要原因。今天就带大家来学习JavaScript。这是当年我学习JavaScript的六大步骤,希望对你也有帮助:





1.学习JavaScript基础语法:


古人常道:“万丈高楼平地起”,意思大概是再高的大厦都要从平地开始修建,学习JavaScript也是一样,想要学好它就一定要把基础先打牢,学习JS的第一步是JavaScript基础语法。


首先,你要了解async和defer之间的区别,然后,深入学习代码语法知识,例如变量,数据类型,循环和条件语句,函数,匿名函数,闭包,阵列和关联阵列,事件,正则表达式,promises。


注意语法顺序一定要准确!上述举例如果有遗漏的,大家可以在评论区留言。此外,我个人推荐你学习如何使用Chrome DevTools调试,因为Chrome DevTool是远程调试JS最好的工具。





2.学习面向对象编程:


当你具备一定的JavaScript基础语法后,你应该转向学习面向对象编程(OOPs)。OOPs是JS和其他编程语言中最重要的概念。JS中的OOPs是基于原型继承链上运行的,不像Java或C++是基于对象或类继承。


然而,关于元数据,你可以在学习了OOPs之后再转到学习元数据编程。虽然元数据很好学,但它并不是JS中最重要的部分。我相信,你可不会喜欢JS带来的意外“惊喜”。





3.学习测试QA:


测试代码和调试JS一样重要!你可能听说过TDD(测试驱动开发)或BDD(行为驱动开发)这样的词,但到底是什么意思呢?简而言之,TDD是指写一个未通过的测试用例,然后让测试通过,最后重构。


而BDD则是根据业务,编写具体的例子和自动化的测试,通过探索,发现,定义,最后推出软件所需的行为。BDD和TDD之间没有本质的区别。把它们组合在一起的是,它们都需要一群人,指定软件在执行之前应该如何协同行动。





4.学习jQuery:


jQuery是一套跨浏览器的JavaScript库,它的特点是动态性和互动性。它使用起来十分方便,就jquery本身而言,你经常会遇到如何将AJAX与jQuery整合的问题。AJAX是什么?举个例子来说吧,


「当你在百度浏览器中输入一个关键词,不用刷新便可得到关于词条的一些内容,这就是AJAX」


AJAX是Asynchronous JS and XML的缩写,它主要处理的是与HTML和CSS不同步的请求而产生的问题。





5.学习框架


现在,你已经了解了jQuery,JS基础语法,AJAX,Chrome DevTools,测试QA。以下的是你们现在真正应该学习的内容——框架:


React:


React的前身是React.JS。React最初是由Facebook和少数个人以及一个小社区开发的,但随着时间的推移,React进行了多次的优化,现在它变成了很有意思而且功能很强大的代码,也很容易学习。我个人是十分推荐你学习React的。日后,你可以用React以组件的形式在网页中开发用户界面。


Angular:


Angular在某方面和React非常相似,不过你可以用Angular以组件的形式编写SPA。它是现在IT行业前端开发方面需求量最大的语言。Angular其实是JS框架,基本上意味着它是用JS编写的。


你可以在每个浏览器的各个角落遇见JS,这也侧面证实了JS功能十分强大,也十分有用。我强烈建议你既要学习React,也要学习Angular。


Node.JS:


Node.JS是在服务器端编写JS的框架。用Node.JS写的代码或API的速度快得离谱,而且Node.JS还可以同时处理多个请求。不像其他后端语言,很少有公司在Node.JS上实现了他们的服务器。


它是服务器端语言的未来,在Node中实现的大型Web应用程序的可扩展性和部署方面存在一些问题,所以现在我不会称它为服务器端语言的主角。


Express.JS:


和上文所述的框架一致,它也是一个功能强大的框架。Express.JS简称Express,它是针对Node.JS的web应用框架,在MIT许可证下作为自由及开放源代码软件发行。它被设计来建造web应用和API。


同样它也是由用JS编写的,我个人建议如果你在学习Node.JS,那么一定要把Express.JS也掌握好。





6.学习库


框架学习也结束了,下面正是学习JavaScript之路上至关重要的最后一点。学习一段时间后,你可能绞尽脑汁想写好代码,而且明明思路很清晰,却只能写出一点点代码。这时候你就该使用这个库了,我并没有推广库的想法,而是真心希望你可以拥有非常有趣的学习和使用经历。


Coffee.Script:


Coffee.Script与JS功能类似,但它有一个好处就是没有分号,括号,双引号,甚至是大括号的杂乱和麻烦。当你学习了JS的基础语法,搭建完众多框架,再学习coffee.script,你就会意识到它有多么的很简单。正因为它十分容易编写,所以我真的很推荐你们进行学习。


当你开始学习时也可以使用JS文档访问JavaScript,并且不要害怕一路上承担一些项目。完全不需要担心,项目会给你带来的挑战,项目的一次次完成会带给你不一样的新鲜感和信心,只有突破重围才会看到崭新的自己。记住明天的你会感激现在拼命的自己,当你精通JS之时,任何挑战都没有办法限制你学习。



如果你对这篇文章有任何感悟或想法,可以在评论区留言。我个人对编码充满了激情,我认为每个人都应该学习它,而不是敬而远之。衷心地祝原你在编码的路上越走越稳,越走越快,越走越远。到那时你虽已是码农,但你仍要牢记学习,从中得到启发,并走向更美好的明天。

全栈攻城狮-每日更新原创IT编程技术及日常实用视频。

主要内容:正式引入HTML网页开发,学习并了解HTML的相关知识。变身Web开发达人,做全栈程序员。这是以第一课,希望以我的方式,你将学会HTML这门课程。


写在前面

今天的话,主要讲解一下HTML相关知识,同样在接下来的一段时间的安排中,也以HTML为主。崇尚全栈,也就意味着我们,需要学习主流的技术知识。在前一段时间内,主要讲解了.Net的只是教程。当然.NET并没有完毕。

C#语言

只是在这里把HTML穿插进来,一则巩固自己所得,二来学习一下这门非常简单的HTML技术。学习完毕HTML之后则会,继续进行基础加强、数据库、MVC等教程的协作工作。

PDF文档

同时在前一个阶段内,讲解的并不是很好,在这个HTML阶段内,则会吸取教训,争取写出更符合初学者学习的技术教程。当然前面的课程也会不断的修正,最后我会生成PDF的文档,发给大家。


HTML概述

HTML概述

HTML,超文本标记语言,超文本就意味着有多于文字的形式,比如包含超链接、图片、视频、动画等形式。HTML是应用在网站网页展现的一种语法结构。我们在使用浏览器浏览网页的时候,看到的界面都是由HTML代码表现出来的。HMTL可以说是一种展示文字图片视频等元素的一种方式。通过特定的标记就能展示出来自己想要的效果。如何展现?就让我一步步教你。


学习HTML的必要性

物联网

互联网的飞速发展,导致了形形色色的网站应用被创建。云计算、物联网仿佛唾手可得。把诸多应用建立在云上,通过这种浏览器与用户交互的形式让人们使用。这些所有网络应用,只要是通过浏览器进行使用的情况,都是需要HTML技术。当然HTML作为基础之用。这就要求我们程序员,必须学习并熟悉HTML语言。能在这个基础上进行Web的开发。


HTML语言的特点

  1. HTML是解释性语言,不需编译,直接书写之后,就可以运行。

  2. HTML是纯文本类型的语言,你完全可以通过记事本程序进行创建书写。

  3. 虽然HTML可以通过记事本来创建写代码,但是并不推荐,因为以前学习过.Net,所以依旧使用Visual Studio。VS也是前端的开发神器。

  4. 自己写的HTML代码,在不同的浏览器内,可能会有不同的展示效果。这是由浏览器的渲染引擎决定的。

  5. HTML具有平台无关性,在任何平台只要拥有一款浏览器,你就可以打开HTML网页。

  6. HTML代码运行在浏览器中,也就是需要使用浏览器进行测试。

HTML


今天就先说一下HTML的基本知识,电脑编程系列教程,下节继续。

多人想让我给他们推荐有关CSS部分的教程,或者问我如何学习CSS。我也看到很多人对CSS的部分内容感到困惑,一部分原因是由于对语言的过时认识。鉴于CSS在过去几年中发生了相当大的变化,这是一个更新知识的好时机。即使CSS只是你所做工作的一小部分(因为你使用其他技术栈),CSS是你最终希望在屏幕上显示的结果,所以值得合理去学习。

因此,本文旨在概述CSS的关键基础和资源,以便进一步阅读现代CSS开发的关键领域。其中许多资源在Smashing杂志上已经有了,但我也选择了其他一些资源,也有人关注CSS的关键领域。这不是一本完整的初学者指南或旨在涵盖所有知识点。我的目标是覆盖现代CSS的广度,同时重点关注几个关键领域,将帮助你理解CSS的其他部分。

语言基础知识

对于CSS的大部分内容,你不需要特意去学习属性和值,你可以在需要时查找它们。然而,CSS中一些基础知识没有掌握好,你将很难去理解它。这些基础知识值得你花时间去理解,从长远看,它会帮你节省很多时间和少走弯路。

选择器,不仅仅有类

选择器的表现如标题所说的,它选择文档的某些部分,以便你可以将CSS规则应用于它。大多数人都熟悉使用 class,或在 直接使用HTML元素设置样式,比如 body,但是还有很多更高级的选择器可以根据文档中的位置选择元素,直接选择位于元素之后的元素,或选择表格中的奇数行。

这些选择器是CSS3规范的一部分(你可能听说过它们被称为第3级选择器)具有出色的浏览器支持。有关可以使用的各种选择器的详细信息,请参阅 MDN 参考。

有些选择器的行为就好像你已经将类应用于文档中的某些内容。例如p:first-child就像你在第一个p元素中添加了一个类一样,这些被称为 伪类选择器。伪元素选择器就像动态插入一个元素一样,例如::first-line的表现与用span 包裹第一行文本类似。但是,如果该行的长度发生变化,它将重新应用,如果插入该元素则不会出现这种情况。这些选择器可能会相当复杂。在下面的CodePen中是一个用伪类链接的伪元素的例子。我们使用:first-child伪类定位第一个p元素,然后::first-line选择器选择该元素的第一行,就好像在第一行周围添加了一个<span>以使其变为粗体和改变颜色。

<div class="container">
  <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya nuts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p></div>
body {
  padding: 20px;
  font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
  margin: 0 0 1em 0;}.container {
  border: 5px solid rgb(111,41,97);
  border-radius: .5em;
  padding: 10px;
  column-count: 2;}.container p:first-child::first-line {
  font-weight: bold;
  color: rgb(111,41,97);}

继承和层叠

层叠是指当元素应用了多个样式规则,哪个规则优先应用。如果你曾经遇到过无法理解为什么某些CSS似乎没有应用的情况,那可能是层叠没有运用好。层叠与继承紧密相关,继承定义了子元素可以继承父元素的样式属性。它还与特异性有关,不同的选择器具有不同的特异性,当有几个选择器可以应用于一个元素时,继承可以决定应用哪个规则。

注意:为了理解所有这些内容,我建议阅读MDN CSS简介中的 层叠和继承。

如果你正在尝试将一些CSS应用于一个元素,那么你的浏览器开发者工具是开始最好的地方。看看下面的例子,我用元素选择器 h1 将 h1 标题设置为橙色。同时,我也使用类选择器设置h1 设置为紫色。由于类更具体,因此h1是紫色的。在开发者工具中,您可以看到元素选择器被划掉,因为它没有被应用。一旦你看到浏览器正在获取你的CSS(但其他东西已经推翻了它),那么你可以开始找出原因。

<div class="container">
  <h1 class="veggies">I like veggies</h1>
  <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya nuts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p></div>
body {
  padding: 20px;
  font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
  margin: 0 0 1em 0;}.container {
  border: 5px solid rgb(111,41,97);
  border-radius: .5em;
  padding: 10px;}.veggies {
  color: rebeccapurple;}

h1 {
  color: orange;}


盒模型

CSS里一切都是盒子。屏幕上显示的所有内容都有一个框,盒模型描述了如何计算该框的大小 - 将外边距,内边距和边框考虑进去。标准的CSS框模型接受给定元素的宽度,然后将内边框和边框添加到该宽度上——这意味着元素占用的空间大于给定的宽度。

最近,我们已经能够选择使用IE盒模型,使得元素上的给定宽度作为屏幕上可见元素的宽度。任何内边距或边框都会从边缘插入框的内容。这对许多布局更有意义。

在下面的演示中,我有两个盒子。两者的宽度均为200像素,边框为5像素,内边距为20像素。第一个框使用标准框模型,因此占用总宽度为250像素,第二个框使用IE盒模型,因此实际上是200像素宽。

<div class="box">
  I use the standard box model.
  </div><div class="box box2">
  I use the alternate box model.
  </div>
body {
  padding: 20px;
  font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}

p {
  margin: 0 0 1em 0;}.box {
  border: 5px solid rgb(111,41,97);
  border-radius: .5em;
  padding: 20px;
  width: 200px;
  margin-bottom: 2em;}.box2 {
  box-sizing: border-box;}

浏览器开发者工具可以再次帮助你了解正在使用的盒子模型。在下图中,我使用火狐浏览器的开发者工具使用默认的内容框框模型检查框。工具告诉我这是正在使用的盒模型,我可以看到大小以及如何将边框和内边框添加到指定的宽度。

注意:在IE6之前,Internet Explorer使用IE盒模型,内边框和边框插入给定宽度的内容里。所以有一段时间浏览器使用不同的盒模型!如果今天的互操作性问题感到沮丧,现在已经有所改善,那么我们就不会处理浏览器以不同的方式计算元素的宽度。

在 CSS Tricks 里,有关于盒模型和盒子尺寸的很好的解释,并解释了在你的网站中全局使用IE盒模型的最佳方法。

标准流

如果你的文档内容用一些HTML标记,你的文档将具有可读性。标题和段落会另起新的一行,单词组成句子时,它们之间有一个空格。标记是用来格式化的,像 em 不会破坏句子的流。句子会表现标准流,或块流布局。句子的每个部分都被描述为“在流中”,它知道句子其余内容,所以不会重叠。

如果你去了解,而不是去反对这种行为,你会变得更加轻松。这是为什么从正确标记的HTML文档开始很有意义的原因之一,由于浏览器遵守正常流和内置样式表,你的内容从可读的地方开始。

格式化上下文


一旦文档的内容处于正常流程中,您可能希望更改其中一些内容的外观。你可以通过更改元素的格式上下文来完成此操作。举个一个非常简单的示例,如果你希望所有段落连在一起而不是从新行开始,你可以设置 p 元素的样式属性display:inline ,将 p 元素由块级元素变成内联元素。

本质上,格式化上下文定义了外部和内部类型。外部控制元素与页面上其他元素的行为,内部控制子元素的外观。例如,当你设置 display:flex ,你在设置外部为块格式化上下文,设置子元素为 flex 格式化上下文。

注意:最新版本的Display规范改变了 display 的值,显式声明外部和内部的类型。因此,将你可能会声明 display:block flex; (外部为 block,内部为 flex)


进入或离开流

CSS中的元素被描述为“在流中”或“脱离流”。流中的元素被赋予空间,并且空间被流中的其他元素所影响。如果通过浮动或定位元素使元素脱离流,则该元素的空间将不再受到其他流元素的影响。

对于绝对定位的元素,是最明显的。如果你设置一个元素 position: absolute ,该元素会从流中脱离,你需要确保这个元素不会与流中的元素重叠,且不影响你布局的其他部分的可读性。

<div class="container">
  <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya nuts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p>
  <div class="item">
body {
  padding: 20px;
  font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
  margin: 0 0 1em 0;}.container {
  border: 5px solid rgb(111,41,97);
  border-radius: .5em;
  padding: 10px;
  column-count: 2;
  max-width: 400px;
  position: relative;}.item {
  border-radius:.5em;
  position: absolute;
  top: 10px;
  left: 20px;
  background-color: rgba(111,41,97,.9);
  color: #fff;
  padding: 20px;
  width: 200px;}

然而,浮动元素也会从流中脱离,但后面的元素的文本将环绕该浮动元素。你可以设置后面元素的背景颜色,你会看到他们会上升并占用了原来浮动元素原来的空间。

<div class="container">
  <div class="item">
    I am floated and out of flow.
  </div>
  <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya nuts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p></div>
body {
  padding: 20px;
  font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
  margin: 0 0 1em 0;}.container {
  border: 5px solid rgb(111,41,97);
  border-radius: .5em;
  padding: 10px;
  max-width: 500px;}.item {
  border-radius:.5em;
  float: left;
  background-color: rgba(111,41,97,.9);
  color: #fff;
  padding: 20px;
  width: 100px;
  margin: 10px;}.container p:nth-of-type(1) {
  background-color: yellow;}

你可以在MDN上阅读更多有关 流中和脱离流 的信息。需要记住的重要一点是,如果从流中取出一个元素,则需要自己管理重叠,因为块流布局的常规规则不再适用。

布局

十五年来,我们一直使用CSS布局,但没有设计一套布局系统。这已经改变了。我们现在拥有功能完备的布局系统,其中包括 Grid 和 Flexbox ,还有多列布局和旧布局方法也应用于实际目的。

不要认为grid和flexbox等方法在某种程度上是竞争的。为了更好地使用布局,你有时会发现组件最好作为 flex ,有时作为 Grid。有时,你想要多列流动布局。所有这些都是不错的选择。如果你觉得自己在与某些事物的行为方式作斗争,这通常是一个非常好的迹象,表明它可能值得退一步,尝试一种不同的方法。我们已经习惯了在CSS上做一些我们想做的事情,以至于我们可能会忘记我们还有很多其他的选择可以尝试。

对齐

通常,我会将对齐和布局分开,虽然大多数人把对齐当作 Flexbox的一部分。对齐这些属性适用于所有布局方法上,应该在上下文去理解对齐,而不是考虑 “Flexbox对齐”或“CSSGrid 对齐”。对齐属性在大体上表现一样,但不同布局方式里会有一些差异。

在MDN上,您可以深入了解 盒对齐 及其在Grid,Flexbox,多列和块布局中的实现方式。

尺寸

我在2018年花了很多时间讨论了内部和外部尺寸规范,特别是它与Grid和Flexbox的关系。在web上,我们习惯于设置尺寸为长度或百分比,这就是我们如何使用浮动来制作网格类型布局的方法。然而,现代的布局方法可以为我们做很多空间分配——如果我们允许的话。值得花时间去了解Flexbox如何分配空间(或Grid fr 单元如何工作)。

响应式设计

通常,新的Grid和Flexbox布局方法意味着我们可以使用比旧方法更少的媒体查询,因为它们非常灵活,可以响应视口或组件大小的变化,而无需我们更改元素的宽度。但是,有些地方需要添加一些断点来进一步增强设计。

字体和排版

与布局一样,网络上的字体使用在去年发生了巨大的变化。现在,可变字体,使单个字体文件具有无限的变化。要了解它们是什么以及它们如何工作,请观看Mandy Michael的精彩简短演讲:可变字体和网页设计的未来。另外,我会推荐Jason Pamental的动态排版与现代CSS和可变字体。

为了探索可变字体和它们的功能,微软提供了一个有趣的演示,以及一些尝试可变字体的游乐场 - Axis Praxis是最知名的(我也喜欢字体游乐场)。

MDN上的指南将证明一开始使用可变字体是非常有用的。

变形和动画

CSS转换和动画绝对是我需要知道的基础。我不经常需要使用它们,在使用时会忘记语法。值得庆幸的是,MDN上的参考资料帮助了我,我建议从使用CSS变换和使用CSS动画的指南开始。Zell Liew也有一篇很好的文章,为CSS过渡提供了很好的解释。

关于动画可能令人困惑的事情之一是采取哪种方法。除了CSS支持的内容之外,你可能还需要涉及JavaScript,SVG或Web Animation API,而这些事情往往都会被混为一谈。在她的演讲中,选择你的动画冒险记录在事件中,Val Head解释了这些选项。

使用速查表作为回忆,而不是学习工具

当我提到Grid或Flexbox资源时,我经常看到回复说,如果没有特定的速查表,他们就不能使用Flexbox。我觉得把速查表作为记忆助手查找语法没有问题,我自己也出版过一些速查表。完全依赖速查表的问题是当你复制语法时,你可能会忽略为什么要这样写。然后,当你遇到属性的行为似乎不同的情况时,这种明显的不一致性似乎令人困惑,或者是语言的错误 。

如果你发现CSS在做一些非常奇怪的事情的情况下,问问为什么。创建一个简单的测试用例来强调这个问题,问问对规范更熟悉的人。我被问到的许多CSS问题都是因为人们认为属性的表现与它在现实中的表现不同。这就是为什么我经常讨论关于对齐和尺寸,因为这些地方经常会混淆。

多年开发老码农福利赠送:网页制作,网站开发,web前端开发,从最零基础开始的的HTML+CSS+JavaScript。jQuery,Ajax,node,angular框架等到移动端小程序项目实战【视频+工具+电子书+系统路线图】都有整理,需要的伙伴可以私信我,发送“前端”等3秒后就可以获取领取地址,送给每一位对编程感兴趣的小伙伴

是的,CSS中有一些奇怪的东西。它是一门经过多年进化的语言,有些东西我们无法改变,除非我们发明了时间机器。然而,一旦你掌握了一些基础知识,并且理解了为什么会这样,你就可以更轻松地处理棘手的问题。