这篇文章主要介绍“怎么快速学会CSS”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么快速学会CSS”文章能帮助大家解决问题。
CSS(层叠样式表)——英文 Cascading Style Sheets 的缩写,是一种计算机标记语言,用来表现 HTML (标准通用标记语言的一个应用)或 XML (标准通用标记语言的一个子集)等文件样式。
CSS 知识点确实很多,我们只需要学习并理解它的基础知识和原理,需要用到的时候再到w3cschool 查询CSS参考手册 ,不需要学习完所有的属性和值,但是学习 CSS 要有一些前端基础,如果没有这些基础,您将很难理解它,你可以先在W3Cschool上学习HTML 。 这样可以节省大量时间、少走很多弯路。
HTML 页面中的元素是通过 CSS 选择器 来进行控制的,可以实现一对一,一对多或者多对一的控制,学习 CSS 首先要掌握的就是选择器。一般使用 class 选择器(程序中称“类选择器”),或直接在 body
中使用 HTML 元素(elements) (指的是从开始标签(start tag
)到结束标签(end tag
)的所有代码。)来设置样式(Style),但是一些更复杂的操作就需要更高级的选择器来实现了,如一些对象直接位于元素之后,或者是要选择表格中的奇数行,就需要根据元素在文档中的位置来选择元素。
这些选择器属于 CSS3 规范的一部分(你可能听说过它们被称为 CSS3 选择器)具有出色的浏览器支持。 有关可以使用的各种选择器的详细信息,请参阅W3Cschool的 CSS 选择器 。
有些选择器的行为就好像你已经将“类”( class
) 应用于文档中的某些内容一样。 例如p:first-child
就像你在第一个p
元素中添加了一个“类”一样,这些被称为“伪对象选择符”(Pseudo-Element
Selectors)。 “伪对象选择符”的作用类似于动态插入元素,例如::first-line
的作用与用span
包裹第一行文本类似。但是,如果该行的长度发生变化,它将重新应用,如果插入该元素,就不会出现这种情况。 现在你可能会觉得这些选择器很复杂, 下面示例中是一个用伪类(Pseudo-class
) 的伪元素(Pseudo Element
) 例子。 我们使用 :first-child
伪类定位第一个 p
元素,然后 ::first-line
选择器选择该元素的第一行,就好像在第一行周围添加了一个<span>
以使其变粗并更改颜色一样。
HTML代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>认识CSS选择器(SELECTORS)- 亿速云(yisu.com)</title> <style type="text/css"> @import url("style/style.css"); </style> </head> <body> <div class="container"> <p>大学之道,在明明德,在亲民,在止于至善。</p> <p>知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始。知所先后,则近道矣。</p> <p>古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知。致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。自天子以至于庶人,壹是皆以修身为本。</p> <p>其本乱而末治者,否矣。其所厚者薄,而其所薄者厚,未之有也。</p> </div> </body> </html>
CSS代码:
body { padding: 20px; font: 1em Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,arial,sans-serif; background-color: wheat; } * {box-sizing: border-box;} p { margin: 0 0 1.7em 0; } .container { border: 1px solid rgb(254,106,0); border-radius: .5em; padding: 20px; column-count: 1; } .container p:first-child::first-line { font-weight: bold; color: rgb(254,106,0); }
层叠定义了一个元素应用了多个样式规则时,应该哪个规则优先应用。 如果你无法理解为什么某些 CSS 似乎没有应用的情况,那可能是层叠没有运用好。 层叠与继承紧密相关,继承定义了子元素可以继承父元素的样式属性。 它还与特异性有关,不同的选择器具有不同的特异性,当有几个选择器可以应用于一个元素时,继承可以决定应用哪个规则。
注意:为了理解这些内容,建议阅读 W3Cschool 中的 CSS 样式级联。
如果你正在尝试将一些 CSS 应用于一个元素,那么你的浏览器开发者工具(DevTools)是最好的选择。看看下面这个例子,我用元素选择器 h2
将 h2
标题设置为橙色。同时,我也使用类选择器将h2
标题设置为紫色。 由于类的优先级更高,因此h2
标题是紫色的。 在开发者工具中,您可以看到元素选择器被划掉了,因为它没有被应用。 一旦你看到浏览器正在获取你的 CSS(但其他东西已经推翻了它),那么你可以开始找出原因了。
HTML代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>继承和层叠 - 亿速云(yisu.com)</title> <link rel="stylesheet" href="./style.css"> </head> <body> <div class="container"> <h2 class="greatlearning">大学</h2> <p>大学之道,在明明德,在亲民,在止于至善。</p> <p>知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始。知所先后,则近道矣。</p> <p>古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知。致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。自天子以至于庶人,壹是皆以修身为本。</p> <p>其本乱而末治者,否矣。其所厚者薄,而其所薄者厚,未之有也。</p> </div> </body> </html>
CSS代码:
body { padding: 20px; font: 1em Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,arial,sans-serif; background-color: wheat; } * {box-sizing: border-box;} p { margin: 0 0 1.7em 0; } .container { border: 1px solid rgb(254,106,0); border-radius: .5em; padding: 20px; column-count: 1; } .greatlearning { color: rebeccapurple; } h2 { color: orange; }
css将html元素看作一个个盒子,来设计和布局。盒子有它们的属性,盒子之间也可嵌套。标准的 CSS 盒模型 (CSS Box Model) 采用你给定元素的宽度,然后将内边框和边框添加到该宽度上——这意味着元素占用的空间大于给定的宽度。
属性:margin、padding、border、content
根据display属性值的不同,如,block\\\\\\\\inline-block\\\\\\\\inline(默认),可设置为块模型\\\\\\\\内联块模型\\\\\\\\内联模型
分类:标准模型、IE模型(替代盒子模型)
除了标准盒子模型外还有一个盒子模型叫 IE 模型(替代盒子模型),盒子的宽度是页面上可见框的宽度,因此内容区域的宽度是该宽度减去填充和边框的宽度。详细请查阅W3Cschool上的CSS Box Model (盒子模型) 。
下面演示两个盒子, 两者的宽度均为200像素,边框为1像素,内边距为20像素。 第一个框使用标准盒子模型,因此占用总宽度为 242 像素,第二个框使用替代盒子模型,因此实际上是 200 像素宽。
HTML代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>CSS 盒模型 -亿速云(yisu.com)</title> <link rel="stylesheet" href="./style.css"> </head> <body> <div class="box"> 我是标准盒子模型。 </div> <div class="box box2"> 我是替代盒子模型。 </div> </body> </html>
CSS代码:
body { padding: 20px; font: 1em Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,arial,sans-serif; background-color: wheat; } p { margin: 0 0 1em 0; } .box { border: 1px solid rgb(254,106,0); border-radius: .5em; padding: 20px; width: 200px; margin-bottom: 2em; } .box2 { box-sizing: border-box; }
浏览器开发者工具(DevTools)可以再次帮助你了解正在使用的盒子模型。 在下图中,我使用火狐浏览器的开发者工具使用默认的 content-box
盒模型工具。 工具告诉我这是正在使用的盒模型,我可以看到大小以及如何将边框和内边框添加到指定的宽度。
DevTools可帮助您了解为什么盒具有一定大小以及所使用的盒模型
注意:在 IE8 以前,如果想要兼容的话,就需要用 W3C 标准,声明。在 IE8+ ,浏览器中使用哪个盒模型可以由 box-sizing 控制,默认值为 content-box,即标准盒模型。
在 W3Cschool的 CSS Box Model 中,有关于盒模型、盒子尺寸详细说明。
也有人翻译为“文档流”,具体叫什么名字不重要,我们理解它的原理就行了。标题和段落将以新行开始,单词显示为句子,并且它们之间只有一个空格。用于格式化的标签(例如em
)不会破坏句子流。此内容以“常规流(normal flow
)”或“块流布局(Block Flow Layout
)”显示。内容的每个部分都被描述为“在流中(in flow
)”;它知道其余内容,因此不会重叠。
我们要接受这种行为,学起来才会变得更加轻松。这是为什么从一个正确标记的HTML文档开始很有意义的原因之一,由于浏览器遵守常规流和内置样式表,你的内容从可读的地方开始。
一旦文档的内容处于正常流程中,您可能希望更改其中一些内容的外观。 你可以通过更改元素的格式上下文来完成此操作。 举个一个非常简单的示例,如果你希望所有段落连在一起而不是从新行开始,你可以设置 p
元素的样式属性display:inline
,将 p
元素由块级元素变成内联元素。
本质上,格式化上下文定义了外部和内部类型。外部控制元素与页面上其他元素的行为,内部控制子元素的外观。例如,当你设置 display:flex
,你在设置外部为块格式化上下文,设置子元素为 flex 格式化上下文。
注意:最新版本的 Display 规范改变了
display
的值,显式声明外部和内部的类型。因此,将你可能会声明display:block flex;
(外部为block
,内部为flex
)。
在W3Cschool的 CSS display显示 上阅读更多关于 display
的信息。
CSS 中的元素被描述为“在流中(in flow
)”或“脱离流(out of flow
)”。流中的元素被赋予空间,并且空间被流中的其他元素所影响。 如果通过浮动或定位元素使元素脱离流,则该元素的空间将不再受到其他流元素的影响。
对于绝对定位的元素,是最明显的。 如果你设置一个元素 position: absolute
,该元素会从流中脱离,你需要确保这个元素不会与流中的元素重叠,且不影响你布局的其他部分的可读性。
HTML代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>CSS flow - 亿速云(yisu.com)</title> <link rel="stylesheet" href="./style.css"> </head> <body> <div class="container"> <p>子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?</p> <p>有子曰:“其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与!”</p> <p>子曰:“巧言令色,鲜矣仁!”</p> <p>曾子曰“吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?”</p> <p>子曰:“道千乘之国,敬事而信,节用而爱人,使民以时。”</p> <p>子曰:“弟子入则孝,出则弟,谨而信,泛爱众,而亲仁。行有余力,则以学文。”</p> <p>子夏曰:“贤贤易色;事父母,能竭其力;事君,能致其身;与朋友交,言而有信。虽曰未学,吾必谓之学矣。”</p> <p>子曰:“君子不重则不威,学则不固。主忠信,无友不如己者,过则勿惮改。”</p> <p>曾子曰:“慎终追远,民德归厚矣。”</p> <p>子禽问于子贡曰:“夫子至于是邦也,必闻其政,求之与,抑与之与?”子贡曰:“夫子温、良、恭、俭、让以得之。夫子之求之也,其诸异乎人之求之与?”</p> <p>子曰:“父在,观其志。父没,观其行;三年无改于父之道,可谓孝矣。”</p> <p>有子曰:“礼之用,和为贵。先王之道,斯为美,小大由之。有所不行,知和而和,不以礼节之,亦不可行也。”</p> <p>有子曰:“信近于义,言可复也。恭近于礼,远耻辱也。因不失其亲,亦可宗也。”</p> <p>子曰:“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉。可谓好学也已。”</p> <p>子贡曰:“贫而无谄,富而无骄,何如?”子曰:“可也。未若贫而乐,富而好礼者也。”子贡曰:“《诗》云:‘如切如磋,如琢如磨’,其斯之谓与?”子曰:“赐也,始可与言《诗》已矣,告诸往而知来者。”</p> <p>子曰:“不患人之不己知,患不知人也。”</p> <div class="item">绝对定位和脱离流。</div> </div> </body> </html>
CSS代码:
body { padding: 20px; font: 1em Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,arial,sans-serif; background-color: wheat; } * {box-sizing: border-box;} p { margin: 0 0 1em 0; } .container { border: 1px solid rgb(254,106,0); 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(254,106,0,.9); color: #fff; padding: 20px; width: 200px; }
然而,浮动元素也会从流中脱离,但后面的元素的文本将环绕该浮动元素。你可以设置后面元素的背景颜色,你会看到他们会上升并占用了原来浮动元素原来的空间。
HTML代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>CSS flow - 亿速云(yisu.com)</title> <link rel="stylesheet" href="./style.css"> </head> <body> <div class="container"> <div class="item">浮动和脱离流</div> <p>子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?</p> <p>有子曰:“其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与!”</p> <p>子曰:“巧言令色,鲜矣仁!”</p> <p>曾子曰“吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?”</p> <p>子曰:“道千乘之国,敬事而信,节用而爱人,使民以时。”</p> <p>子曰:“弟子入则孝,出则弟,谨而信,泛爱众,而亲仁。行有余力,则以学文。”</p> <p>子夏曰:“贤贤易色;事父母,能竭其力;事君,能致其身;与朋友交,言而有信。虽曰未学,吾必谓之学矣。”</p> <p>子曰:“君子不重则不威,学则不固。主忠信,无友不如己者,过则勿惮改。”</p> <p>曾子曰:“慎终追远,民德归厚矣。”</p> <p>子禽问于子贡曰:“夫子至于是邦也,必闻其政,求之与,抑与之与?”子贡曰:“夫子温、良、恭、俭、让以得之。夫子之求之也,其诸异乎人之求之与?”</p> <p>子曰:“父在,观其志。父没,观其行;三年无改于父之道,可谓孝矣。”</p> <p>有子曰:“礼之用,和为贵。先王之道,斯为美,小大由之。有所不行,知和而和,不以礼节之,亦不可行也。”</p> <p>有子曰:“信近于义,言可复也。恭近于礼,远耻辱也。因不失其亲,亦可宗也。”</p> <p>子曰:“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉。可谓好学也已。”</p> <p>子贡曰:“贫而无谄,富而无骄,何如?”子曰:“可也。未若贫而乐,富而好礼者也。”子贡曰:“《诗》云:‘如切如磋,如琢如磨’,其斯之谓与?”子曰:“赐也,始可与言《诗》已矣,告诸往而知来者。”</p> <p>子曰:“不患人之不己知,患不知人也。”</p> </div> </body> </html>
CSS代码:
body { padding: 20px; font: 1em Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,arial,sans-serif; background-color: wheat; } * {box-sizing: border-box;} p { margin: 0 0 1em 0; } .container { border: 1px solid rgb(254,106,0); border-radius: .5em; padding: 10px; max-width: 500px; } .item { border-radius:.5em; float: left; background-color: rgba(254,106,0,.9); color: #fff; padding: 20px; width: 100px; margin: 10px; } .container p:nth-of-type(1) { background-color: yellow; }
注意: 需要记住的重要一点是,如果从流中取出一个元素,则需要自己管理重叠,因为块流布局的常规规则不再适用。
过去我们们在 HTML 中一般使用 CSS 进行布局,常见的布局有:单列布局、两列自适应布局、圣飞布局和双飞翼布局、伪等高布局、粘连布局。重点介绍下 Flex 布局和 grid 布局:
Flex布局
Flex布局,也叫弹性盒子布局,区区简单几行代码就可以实现各种页面的的布局。
//html部分同上 .parent { display:flex; } .right { margin-left:20px; flex:1; }
推荐W3Cschool上的的Flexbox布局基础入门 ,可以更好的帮你掌握Flex。
grid布局
Grid 布局,是一个基于网格的二维布局系统,目的是用来优化用户界面设计。
//html部分同上 .parent { display:grid; grid-template-columns:auto 1fr; grid-gap:20px }
大多数人都会把对齐(Alignment)当作 Flexbox 的一部分,但是这些属性适用于所有布局方法值得在这种情况下理解它们,而不是考虑“ Flexbox Alignment”或“ Flexbox Alignment” “ CSS网格对齐。” 我们有一组Alignment属性,它们在可能的情况下可以以一种通用的方式工作。然后,由于不同的布局方法的行为方式,它们会有一些差异。
在 web 上,我们习惯用长度或百分比来设置尺寸,这就是我们如何使用浮动来制作网格类型布局的方法。然而,现代的布局方法可以为我们做很多空间分配——如果我们允许的话。值得花时间去了解 Flexbox 如何分配空间(或 Grid fr
单元如何工作)。
通常,新的 Grid 和 Flexbox 布局方法意味着我们可以使用比旧方法更少的媒体查询,因为它们非常灵活,可以响应视口或组件大小的变化,而无需我们更改元素的宽度。 但是,有些地方需要添加一些断点来进一步增强设计。
与布局一样,网络上的字体使用在发生了巨大的变化。现在,可变字体,使单个字体文件具有无限的变化。 要了解它们是什么以及它们如何工作,请观看Mandy Michael的精彩简短演讲:可变字体和网页设计的未来。 另外,我会推荐Jason Pamental的动态排版与现代CSS和可变字体。
为了探索可变字体和它们的功能,微软提供了一个有趣的演示,以及一些尝试可变字体的游乐场 - Axis Praxis是最知名的(我也喜欢字体游乐场)。
MDN上的指南将证明一开始使用可变字体是非常有用的。Firefox DevTools字体编辑器还支持使用可变字体。
CSS转换和动画绝对是我需要知道的基础。 我不经常需要使用它们,在使用时会忘记语法。 值得庆幸的是,MDN上的参考资料帮助了我,我建议从使用CSS变换和使用CSS3动画的指南开始。 Zell Liew也有一篇很好的文章,为CSS过渡提供了很好的解释。
要发现一些可能的事情,请查看Animista网站。
关于动画可能令人困惑的事情之一是采取哪种方法。 除了 CSS 支持的内容之外,你可能还需要涉及 JavaScript ,SVG 或 Web Animation API,而这些事情往往都会被混为一谈。 在她的演讲中,选择你的动画冒险记录在事件中,Val Head解释了这些选项。
关于“怎么快速学会CSS”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。