CSS学习笔记

写这篇博客主要是为了记录我学习css中的一些学习笔记, 因为我个人特别头疼css这个东西, 所以学到什么有用的就都记到这篇博客里吧, 以后会不定期更新的, 这篇博客严格来说应该是一篇学习笔记, 希望大家没事就翻翻, 说不定能翻到什么有用的东西, 这篇文章的前两部分来自于饥人谷方方老师的课件, 我觉得非常适合初学的同学看看, 所以就放在这里了, 后面的css知识点则是我个人的笔记总结


CSS是什么

层叠样式表(英语:Cascading Style Sheets,简写CSS),又称串样式列表级联样式表串接样式表层叠样式表階層式樣式表,一种用来为HTML文或XML应用)添加样式(字体、间距和颜色等)的计算机语言

  1. 两个人合作发明了 CSS
    1994年哈肯·维姆·莱提出了CSS的最初建议。伯特·波斯(Bert Bos)当时正在设计一个叫做“Argo”的浏览器,他们决定一起合作设计CSS。
  2. W3C 开始接管 CSS
    1997年初,W3C内组织了专门管CSS的工作组,其负责人是克里斯·里雷。
  3. CSS 2.1
    1998年5月W3C发表了CSS2
    CSS2.1修改了CSS2中的一些错误,删除了其中基本不被支持的内容和增加了一些已有的浏览器的扩展内容。
  4. CSS 3
    从 2011 年开始 CSS 被分为多个模块单独升级,统称为 CSS 3。这些模块有:
    • CSS 选择器 level 3
    • CSS 媒体查询 level 3
    • CSS Color level 3
    • 更多请 搜索 CSS spec
  5. CSS 4?
    不好意思,没有 CSS 4,只有各个模块的 level 4

周边工具

  • LESS CSS
    一种简化、功能更多的 CSS 语言 中文官网 英文官网
  • SASS
    一种简化、功能更多的 CSS 语言(请自行搜索中英文官网)
  • PostCSS
    一种 CSS 处理程序

我的建议是,先不要看周边工具,学好最朴素的 CSS,然后升级就很容易了。


CSS 学习资源

  1. w3shcool中文网是垃圾, 别看, w3shcool英文网也不是很推荐
  2. Google: 关键词 MDN, 这个应该是最常用的
  3. CSS Tricks
  4. Google: 阮一峰 css
  5. 张鑫旭的 240 多篇 CSS 博客和他出的一本CSS世界
  6. Codrops 炫酷 CSS 效果
    这里强烈安利一下codrops这个网站, 里面各种css效果简直炫酷, 比如这里有个炫酷的Codrops链接
  7. CSS揭秘
  8. CSS 2.1 中文 spec
  9. Magic of CSS 免费在线书

我的建议是:中文学习资源只看大 V 的(毕竟他们要维护形象不能瞎写),英文资源看 CSS Tricks、MDN 和 Codrops。书的话作用不大,最权威的书其实是文档。

  • 如果你想快速上手,就先写小 demo 再学理论。
  • 如果你想一鸣惊人,就仔细看 CSS 规范文档。

如何开始写 CSS

  1. 引入 CSS 的三/四种方式

    • 内联样式
      <body style="background-color: red">
        <div>dfdf</div>
      </body>
      
      通过给body里面直接加style="background-color: red", 我们就可以改变body的背景为红色
      style
      • <style>样式标签
        上面的代码, 我们通过在<head>里添加<style>标签实现
      <head>
       <meta charset="utf-8">
       <title>JS Bin</title>
       <style>
        body {
           background-color: red
         }
       </style>
      </head>
      <body>
       <div>dfdf</div>
      </body>
      
      • 使用<link>标签引入外部css文件
        假设我们在index.html的相同目录下创建一个a.css文件
        a.css

        css文件中写下如下代码
        body {
          background-color: red;
        }
        
        然后在index.html文件的<head>中加入一行 <link rel="stylesheet " href="./a.css">,同样能达到上面的效果
        <head>
          <meta charset="utf-8">
          <title>JS Bin</title>
          <link rel="stylesheet" href="./a.css">
        </head>
        
      • css中引入css文件
        假设我们现在又多了一个b.css文件


        image.png

        我们要在引用a.css中引用b.css, 以达到运行a.css内容之前先运行b.css,那么我们在a.css最开始加入如下代码即可

        @import url(./b.css);
        
  2. 从最小的东西开始入手
    学css我的建议是不要开始就记各种属性, 直接找个网站边抄边学就好了, 我们刚开始就只抄一个标题栏, 把里面的css代码全搞懂, 然后自己在对照网站手写一个一样的布局, 能不看源码写出来一模一样的布局就行

  3. 逐渐变大
    搞懂导航栏后, 继续往下抄, 直到模仿出一个网站的首页

  4. 学会组织 CSS
    总结套路, 总结各种布局, 优化css代码

  5. 自己写 CSS UI 库


css知识点


导航栏与logo垂直对齐的方法.

  1. 通过分别调整导航与logo的上下padding, 使包裹导航的div与包裹logo的div高度一致
  2. 在保证总高度不变的情况下, 通过增加或减少logo或导航的上下padding来微调, 使导航与logo的中线在同一水平线上
  3. 整体调整header的高度来改变改变header与页面上边框的举例

如何查看网页上的图片链接

如图, 打开chrome开发者工具, 然后按步骤操作, 找到图片后在图片文件上按右键选'open in new tab', 就可以得到图片链接了

查看图片链接

这里再提供一个下载图片作为背景的网站Wallhaven

文档流: 文档内元素的流动方向

  1. 内联元素从左往右流动
    碰到阻碍会换行继续从左往右流动, 如下图, 我们给html写了10个<span>,由于文字8碰到浏览器窗口的边缘, 所以文字九会换一行继续从左边开始

    内联元素

    细心的同学会发现这里面每个文字中间都有一个小空隙, 这不是bug, 这是因为<span><span>之间的回车浏览器会解析成一个空格, 想解决这个问题, 我们把所有<span>都写在一行就好了

  2. 块级元素单独占一整行
    每一个块级元素都占一整行,如下如, 我们有10个<div>, 每个<div>都会单独占一行, 从上往下依次排列

    块级元素


font-size和line-height到底是什么

直接看下面的图, font-size和height就很明白了

image.png

结合上面这个图, 告诉大家一定要注意的一个点:
在内外边距都为0的情况下, 如果不给高度, 元素的高度等于行高而不是字体高度

这里面有几点需要告诉大家:

  1. 块级元素的高度由其内部文档流元素的高度总和决定
  2. 内联元素的高度完全不可控, 并且margin-top, margin-down, padding-top, padding-down无效
  3. 不同字体的默认line-height不一样
  4. 行内元素修改line-height不改变其height
  5. 块级元素可以通过设置line-height大于font-size来达到文字居中效果
  6. 我们可以通过设置padding和line-height的值来控制块级元素高度的同时保证文字居中
  7. 宽度和高度尽量用max-width, max-height, min-width, min-height
  8. 做布局尽量不要给宽高, 靠里面的元素撑开

如何添加iconfont

1.登陆www.iconfont.cn
2.注册账号
3.搜索需要的图标名字, 比如我们要搜github图标

搜索github图标

4.在搜索的结果中找到喜欢的图标, 然后加入购物车
搜索结果

5.在右上角搜索栏继续搜索, 然后继续加入购物车, 直到选好我们需要的所有图标, 购物车里会显示我们加入购物车的图标数量
加入购物车

6.点击右上角购物车图标
image.png

7.在加入新的项目添加项目名称, 然后点确定
添加新的项目

8.点击symbol, 然后点击查看在线链接
symbol

9.点击生成代码
生成代码

10.引入js代码的链接到我们的html文件
引入js代码

html

11.回到iconfont页面点击使用帮助
使用帮助

12.找到symbol引用, 按照官方步骤把icon加入我们的代码中
symbo引用

解决iconfont往上偏移

在一个<div>中包含几个<svg>, 我们仔细看下图, 图标会稍微向上偏一点, 并不是居中

svg上移动

解决的办法就是在<svg>标签的css属性中加入vertical-align: top;

解决block内inline-block出现空隙问题

如下图, 我们在<div>内有一个<span>, 当我们设置<span>display:inline-block;时, <span><div>之间莫名其妙的出现了一个空隙

空隙

<span>的样式内加一句vertical-align: top;, 就能解决这个问题
空隙没了

div内inline-block水平居中和垂直居中小套路

父元素div设置text-align: center;后, inline-block元素就会水平居中, 设置line-block的inline-height等于height, 里面的文字就会垂直居中

代码如下

<main id="keyboard">
  <div>
    <kbd>q</kbd><kbd>w</kbd><kbd>e</kbd><kbd>r</kbd><kbd>t</kbd><kbd>y</kbd><kbd>u</kbd><kbd>i</kbd><kbd>o</kbd><kbd>p</kbd>
  </div>
  <div>
    <kbd>a</kbd><kbd>s</kbd><kbd>d</kbd><kbd>f</kbd><kbd>g</kbd><kbd>h</kbd><kbd>j</kbd><kbd>k</kbd><kbd>l</kbd>
  </div>
  <div>
    <kbd>z</kbd><kbd>x</kbd><kbd>c</kbd><kbd>v</kbd><kbd>b</kbd><kbd>n</kbd><kbd>m</kbd>
  </div>
</main>
#keyboard {
  text-align: center;
  border: 1px solid;
}
#keyboard kbd {
  border: 1px solid red;
  width: 2em;
  height: 2em;
  line-height: 2em;
  display: inline-block;
  text-align: center;
  margin: 5px;
  text-transform: uppercase;
}
居中

简单布局的套路

最简单的两栏布局

这种布局应该是我们日常生活中最常见的了, 左边和右边各自显示各自的内容, 互相不影响, 比如下面这个图, 就是很常见的两栏布局

image.png

可能很多人一下看不出来, 那么我们来分解一下


image.png

这下看懂了吧,这种布局, 其实套路非常简单,先看效果


两栏布局

HTML代码
HTML代码总体的思路就是一个容器内包含两个字容器

<div class="container clearfix">
  <div class="left"></div>
  <div class="right"></div>
</div

fload浮动

套路就是给子元素left和right同时设置float,这里为了显示效果我们手动给div都设置了固定高度, 实际开发中, 尽量不要设置高和宽度, 靠里面的内容撑开, 还有记得清除浮动

.container {
  max-width: 500px;
  height: 500px;
  padding: 5px;
  border: 1px solid;
 
}

.left {
  float: left;
  height: 495px;
  width: 240px;
  border: 1px solid green;
  background: #d4f5f4;
}

.right {
  float: left;
    height: 495px;
    width: 246px;
  border: 1px solid red;
  margin-left: 10px;
}

.clearfix:after {
  content: '';
  display: block;
  clear: both;
}

简单吧

左侧定宽, 右侧自适应的两栏布局

这种布局在管理系统中或者论坛很常见, 左侧是目录, 右侧是内容区, 根据点击左侧目录, 右侧动态的显示内容
我们首先来看看实现的效果,在浏览器宽度变窄的时候,左侧宽度依然保持不变,右侧宽度动态变化。


左侧定宽两栏布局

HTML代码

HTML代码就很简单了, 总体的思路就是一个容器内包含两个字容器

<div class="container clearfix">
  <div class="left"></div>
  <div class="right"></div>
</div>

fload浮动

给左侧的定宽元素设置float属性, 右侧元素设置margin, 这里为了显示效果我们手动给div都设置了固定高度, 实际开发中, 尽量不要设置高度, 靠内容撑开, 还有一点一定要记得啊, 记得清除浮动, 我建议大家无论在什么时候只要设置了float, 最好都对父元素清除浮动

.container div {
  height: 800px;
}

.left {
  width: 200px;
  float: left;
  background: #d4f5f4;
}

.right {
  background: #4d5e2f;
  margin-left: 210px;
}

.clearfix:after {
  content: '';
  display: block;
  clear: both;
}

好了, 大功告成, 简单吧

左右两侧定宽, 中间自适应的三栏布局

左右两侧定宽, 中间自适应的布局在我们平时的blog类网站是很常见的, 类似于我们下面这种


三栏布局

这个套路跟上面差不多, 左侧左浮动, 右侧右浮动, 中间设置左右margin就行

HTML代码

这里需要注意, 我们HTML元素不在是left,middle,right,而是left,right,middle, 至于为什么这么设置, 大家可以自己试一试改成第一种设置会有什么后果

<div class="container clearfix">
  <div class="left"></div>
  <div class="right"></div>
  <div class="middle"></div>
</div>

float浮动
套路跟上面一样, 把左边设置float: left, 右边设置float: right, 中间设置margin-left和

.container div {
  height: 800px;
}

.left {
  width: 200px;
  float: left;
  background: #d4f5f4;
}

.right {
  width: 200px;
  float: right;
  background: #e7d5e4;
}

.middle {
  background: #4d5e2f;
  margin-left: 210px;
  margin-right: 210px;
}

.clearfix:after {
  content: '';
  display: block;
  clear: both;
}

又完成了, 简单吧

flex布局

flex布局应该是在不考虑ie兼容性的情况下最好的布局方法了吧, 但是由于篇幅问题, 这里我就不展开讲flex了, 有兴趣的同学请移步阮一峰大神的flex布局教程


这次就先写这么多, 以后这篇文章会不定期更新

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,805评论 0 6
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,512评论 32 459
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,620评论 0 30
  • 豆豆很不幸,读小学一年级就被退学了;豆豆很幸运,在那么小的年纪就遇到了小林宗作先生! 对于一个小学一年级就被退学的...
    吴兰123阅读 668评论 0 2