- LESS CSS
Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。Less 可以运行在 Node 或浏览器端。 中文官网 英文官网 - SASS SCSS
世界上最成熟、最稳定、最强大的专业级CSS扩展语言 中文官网 - PostCSS
一种 CSS 处理程序
【建议】先不要看周边工具,学好最朴素的 CSS,然后升级就很容易了。
- CSS学习资源
- Google: 关键词 MDN
- CSS Tricks
- Google: 阮一峰 css
- 张鑫旭的 240 多篇 CSS 博客
- Codrops 炫酷 CSS 效果
- CSS揭秘
- CSS 2.1 中文 spec
- Magic of CSS 免费在线书
CSS学习建议
CSS不正交及表现
CSS不正交的意思就是,CSS的各个属性之间存在相互影响,也就是会自相矛盾。所以很可能你现在实现了效果,再加入一个属性以后效果就完全打乱了。
CSS容易学?
背套路就能应付平时工作。
CSS是艺术,不是科学。不要尝试去理解CSS的复杂原理,满足需要就行了。
- 自己试(会累死的)
- 让别人研究,我用现成的,现在有很多这样的网站。
- 多实践,多总结
- 先学会套路:布局&居中&自适应&媒体查询&响应式&能做页面就可以了。
- 熟练常用的,其他效果用到再google。
- 巧用工具
CSS3 Generator - 平时有时间就写博客总结以下CSS的用法。
- 记住几个常见的写法即可:居中{两种水平居中,三种垂直居中}、布局{两种左右结构,两种左中右结构}、一行省略、多行省略
CSS难学(不正交 + 属性多 + 性价比低)
CSS 不正交,因而有些反直觉。不正交主要表现在两点:
- 同一元素的各属性之间互相影响
margin
合并 VSborder
ul>li
VSdisplay
position: absolute
VSdisplay: inline
- 各元素之间互相影响
position: fixed
VStransform
float
影响inline
元素
中文学习资源只看大 V 的(毕竟他们要维护形象不能瞎写),英文资源看 CSS Tricks、MDN 和 Codrops。书的话作用不大,最权威的书其实是文档。而中文学习资源毕竟是二手资源,别人的博客更是三手资源,所以还是好好学英文,直接读一手资源。
如果你想快速上手,就先写 CSS 小 demo 再学理论。
如果你想一鸣惊人,就仔细看 CSS 规范文档。
CSS知识
文档流是什么?
文档内元素的流动方向。每个内联元素(inline)从左到右流动,每个块级元素(block)从上到下流动,每个块级元素独占一行。给元素加边框border是很好的调试方法。
说一下自己的感受,调试了一点CSS样式,工具很好用,就是调试需要耐心,往往根据浏览器显示的为准,有点玄学的感觉,所以往往需要选取容错率较高的CSS样式实现方法。CSS样式是一环套一环的,“牵一发而动全身”,可见布局很重要,CSS经验也很重要。
脱离文档流有很多种方法!
方法一:设置了positopn:fixed;
的元素 就不属于原来的父元素了,父元素的宽度和高度都不包括它。而是相对屏幕固定。但是这种方法脱离文档流后,所有元素都会往左上角 叠加 起来。
必须加width=100%解决,加了宽度超级容易出bug,文档超出了宽度,又得在里面加一个内标签,把padding放在里面。
宽度是由什么决定的
块级元素宽度是自适应的,站满整个屏幕一行。随着屏幕宽度变化,块级元素宽度变化。
内联元素的宽度不可测。会随内联元素里的内容的宽高自动改变。
高度是由什么决定的
- 内联元素的高度
内联元素的高度不可测。给内联元素设置宽高会默认失效
但是你可以把内联元素设置为块级元素。其中内联元素有个奇特的地方,当一个内联是一个很长的单词的时,页面就算不够大容纳不下这个单词,默认情况下这个单词是不会分开,浏览器会把这个单词看作一个整体,英文的不可分割性原则,但是中文汉字就算是一个词语也会分开。但是可以通过设置word-break:break-all;
样式强行分开。
比如span的高度确定就是个复杂的问题,具体以浏览器显示为主。 - 块级元素的高度
块级标签元素的高度:由其内部文档流元素 的高度总和 决定【背】也就是说,块级标签内部没有元素的时候 高度为0 - 内联块级元素
内联块级元素不会独占一行,而且元素宽和高可设定,拥有内联和块级元素的特点
方说这个是这个是历史上最大的错误,不知道从何说起?这个内联块级元素把块级元素变成内联元素以后,把独占一行的块级元素排成一行,就像导航栏的浮动效果。方说尽量用浮动float。 在不同电脑上看可能元素高度又不一样了,所以最好设置一下line-height,比如line-height=22px,这样元素载各个电脑的浏览器上就一样了。
box model
box-sizing有两个值分别为content-box
和border-box
,默认是 content-box
content-box 盒子的宽 和 高是 content 的宽和高。
border-box 盒子的宽 或 高是 content 、padding 和 border 三者宽或高的总和
开始写CSS
- 引入 CSS 的三/四种方式
- 从最小的东西开始入手
- 逐渐变大
- 学会组织 CSS(以后再说)
- 自己写 CSS UI 库
引入CSS样式的方法
标签内联样式
直接给开始标签
加上style属性,如<body style="background-color:grey;"></body>
,优点是样式加在哪个标签上很明显,缺点是开始标签
就会变得很长,代码看上去很乱很丑
<style>
标签引入内联样式表。
如:
<head>
...
<style>CSS样式</style>
</head>
这样所有的样式都被我们放到<style>
标签里面了,我们的html代码看上去更简洁了,可是当我们的样式很多的时候,style标签内容就太长了,导致head头部太长了,这样也太不好看了,为此我们引进方法3。
link标签嵌入外部CSS样式。
当CSS样式太多太长的时候,我们将所有的CSS样式都放外部的.css文件里,然后再在头部<head>
里用<link>
标签把这个 .css 文件嵌入进来,如此一来,我们的HTML就有了CSS样式,HTML代码也很干净简洁,有规矩。这个方法会在装载页面主体部分 之前装载css文件,这样实现出来的页面从一开始就是带有样式效果的。
<head>
...
<link href="style.css" rel="stylesheet" type="text/css">
</head>
一个.css文件里嵌入另一个.css文件
结果就是两个.css的样式都会应用于html文件,最终展示出来。这个效果我们可以通过开发者工具,查看浏览器发起的请求 验证。这个方法会在整个页面装载完成之后再装载css文件,对于有的浏览器来说, 在一些情况下,如果页面文件的体积比较大,则会出现先现无样式的页面,闪烁一下之后再出现设置样式的效果。从浏览者的感受来说,这是使用导入式的一个缺陷。
/* 在style.css里 */
@import "other.css"
要学好CSS
- 通读CSS规范文档-17章。CSS2中文文档CSS3没有中文,英语要求高,人类根本都不读不完
- 让张鑫旭(国内CSS研究前端最深的)研究,我用。
- CSS研究再厉害,不能变成商业价值也没有用。
- 所以一切够用就行。
- JS才是前端核心