前端学习 -- CSS基础

一、产生背景

  • 从 HTML 被发明开始,样式就以各种形式存在,最初的 HTML 只包含很少的显示属性
  • 随着 HTML 的成长,为了满足页面设计者的要求,HTML 添加了很多显示功能,例如文本格式化标签
  • 但是随着这些功能的增加,HTML 变的越来越杂乱,而且 HTML 页面也越来越臃肿
  • 于是 CSS 便诞生了

发展过程

css 概念

  • css 全称 cascading style sheets,层叠式样式表,是一种用来表现 HTML 的文件样式的计算机语言
  • 作用:静态地修饰网页,并且可以配合各种脚本语言动态地对网页各元素进行格式化

前端三层技术

没有 CSS 的网页

有 CSS 的网页

CSS 可以说是网页的美容师, 让我们的网页更加美观

CSS 的组成

  • 层叠式
    • css 中贯穿始终的加载特性
      • 层叠性
      • 继承性
  • 样式
    • 定义如何显示 HTML 元素
      • 文字文本
      • 背景
      • 盒模型
      • 浮动
      • 定位
      • 其他

二、CSS 规则

  • CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明
        /* 
            p 为选择器  
            width 和 font-size 为属性名   
            100px 和 16px 为属性值
            width: 100px; 和 font-size: 16px; 是多条样式属性
        */
        p { width: 100px; font-size: 16px; }

书写位置

css 的代码根据书写位置不同分为四种书写方式

  • 内联式
  • 内嵌式
  • 外联式
  • 导入式

内联式

  • 内联式,也被习惯叫做行内式
  • 书写位置:在 HTML 标签之上的 style 属性中书写 css 样式
  • 所有的 css 样式属性总体组成标签的 style 属性的属性值
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 内联式样式 </title>
</head>
<body>

    <p style="font-size: 40px; color: crimson;" > 这是一个段落 </p>

    <div style="font-size: 40px; color: crimson;" > 这是一个div </div>

    <p> 这是一个段落呀 </p>

</body>
</html>

内联式缺点

  • 内联式必须写在标签上,没有完全脱离 HTML 标签
  • css 样式代码让标签结构繁重,不利于 HTML 结构的解读
  • 一个内联式的 css 代码,只能给一个标签使用,如果多个标签有相同的样式,同样的css 代码需要书写多次,增加代码量
  • 因此,实际工作中不会使用内联式(行内式)编写 css 代码

内嵌式

  • 书写位置:在 HTML 文件中,<head> 标签内部有一个 <style> 标签
  • <style> 标签书写在< title> 标签后面,所有 css 代码书写在 <style> 标签内部
  • <style> 标签有一个标签属性叫做 type,属性值是 ”text/css” 可写可不写
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 内联式样式 </title>

    <style>
        /* css规则: 选择器  属性 */
        p, div {
            font-size: 40px; 
            color: crimson;
        }
    </style>

</head>
<body>

    <p> 这是一个段落 </p>

    <div> 这是一个div </div>

    <p> 这是一个段落呀 </p>

</body>
</html>

内嵌式特点

  • 优点
    • 实现了结构和样式的初步分离, css 只负责样式,HTML 负责结构
    • 多个标签可以利用一段代码设置 相同的样式,节省代码量
  • 缺点
    • 结构和样式并没有完全分离,代码依旧书写在 HTML 文件的 <style> 标签内部
    • css 样式只能给一个 HTML 文件使用, 不能够被多个 HTML 文件同时利用
    • 在 HTML 中如果 css 代码太多,会造 成文件头重脚轻

外联式

  • 外联式 CSS,也可以叫做外链式 CSS、外部 CSS
  • 书写位置:在一个单独的扩展名为 .css 的文件中
  • 书写语法:内部代码与内嵌式样式表中 style> 标签内部的代码一样的。需要通过 选择器去选中标签,添加对应的样式
  • 注意:在 .css 文件中书写时,不需要再加 <style> 标签

css.css 文件

p, div {
    font-size: 20px; 
    color: blue;
}

外联式引用

  • 外联式样式表必须引入到 HTML 文件中,才能正常进行加载
  • 引入方式:在 HTML 中的 <head> 标签内部使用 <link> 标签进行引入
  • <link> 标签属性:

css.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 内联式样式 </title>
    <link rel="stylesheet" href="css.css">
</head>
<body>
    
    <p> 这是一个段落 </p>

    <div> 这是一个div </div>

    <p> 这是一个段落呀 </p>

</body>
</html>

外联式优点

  • 实现了 HTML 和 css 完全分离
  • 多个 HTML 文件可以共用一个 css 文件,便于提取公共 css,减少代码量
  • 可以实现一个 css 变化,多个 HTML 页面同时变化,减少工作量
  • 一个 HTML 文件可以引入多个 css 文件,可以实现同一个页面中 css 代码分层

导入式

  • 书写位置:在内嵌式样式表 <style> 标签内部,或者在外联式样式表内部,导入其他的外部的 .css 文件
  • 导入方式:利用一条 @import url(路径) 语句进行引入
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 内联式样式 </title>
    <!-- <link rel="stylesheet" href="css.css"> -->

    <style>
        @import url(css.css);
        h1 {
            color: cyan;
        }
    </style>
</head>
<body>
    
    <p> 这是一个段落 </p>

    <div> 这是一个div </div>

    <p> 这是一个段落呀 </p>

    <h1> 一级标题 </h1>

</body>
</html>

导入式问题

  • 导入式样式表的作用与外联式样式表基本相同
  • 但是由于导入式在浏览器中加载时,会在 HTML 结构加载完毕后再进行编译,如果 网速比较慢时,会导致网页出现没有 css 样式的效果,给用户的体验不好
  • 实际工作中,较少使用导入式,推荐使用外联式样式表

实际应用

  • 小型案例:可以使用内嵌式 CSS
  • 实际工作、大型网站项目:推荐使用外联式 CSS

三、CSS样式规则

以内嵌式样式表为例

  • 所有的 css 代码都必须书写在 <head> 标签内部的一对 <style> 标签内
  • css 在给某个标签设置样式前,必须使用选择器先选中标签
  • css 样式的属性,属性名和属性值的键值对写法为 k:v;
  • 给每个选择器添加的样式属性都必须写在一对大括号 { } 之内
  • 给一个标签添加的所有需要的样式,都要在 { } 内部一一罗列出来
<style>
        div {
            width: 100px;
            height: 100px;
            background-color: cyan;
        }
</style>

注意事项
分号必要性:每条属性后面的分号必须写,如果不写,会导致后面所有的代码加载错误
css 中所有属性与属性之间对空格、换行、缩进不敏感

<style>
        /* 对空格、换行、缩进不敏感 */
        div { width: 100px; height: 100px; background-color: cyan; }
</style>

CSS 注释语法

  • 语法格式:
    • /* 注释 */
    • vs code快捷键:ctrl + /

CSS 常用样式

  • 文字三属性
    • 颜色 color
    • 字体 font-family
    • 字号 font-size

颜色 color

  • 作用:给文字设置颜色
  • 属性名 k :color
  • 属性值 v :颜色名、颜色值

颜色名

  • 颜色名就是使用颜色的英文单词进行表示
  • 一些最常用的颜色名 在 vs code 中 也可以进行挑选


颜色值

  • 颜色值指使用具体颜色的数值表示

  • 包括: rgb 模式和 十六 进制模式写法

    • rgb 模式 是根据红绿蓝三原色进行混合而成的颜色模式
    • 每个原色的取值范围是0-255,一共256个数值。三个原色共能混合成 1677多万种颜色
    • 书写方法:rgb(红,绿,蓝)
    • 十六进制模式:是 rgb 模式的一种简化写法,使用十六进制的数字字符去替换十进 制的 0--255 的数字
    • 十六进制:逢十六进一,每个数位上只能出现 0-9,a-f 之间的字符
    • 书写为颜色值时,红、绿、蓝每个色值都要使用两位数的十六进制进行替换
      • 0 → 00
      • 255 → ff
    • 书写方式:使用 # 开头,后面连续书写红、绿、蓝三个颜色的十六进制的两位数值


  • 十六进制颜色值简写模式:如果红、绿、蓝三个原色的色值每一个 都是由重叠的数字组成,可以将重叠的数字简化成一个进行书写

    • 红色 #f00
    • 绿色 #0f0
    • 蓝色 #00f
  • 类似 #808080 是不能进行简化的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 颜色 </title>

    <style>
        p {
            color: red;
        }

        div {
            color: rgb(255,0,0);
        }

        h1 {
            color: #ff0000;
        }

    </style>

</head>
<body>
    <p> 颜色名 red </p>
    <div> rgb(255,0,0) </div>
    <h1>  十六进制 #ff0000 </h1>
    
</body>
</html>

字体 font-family

  • 作用:定义元素内文字的字体
  • 属性名 k :font-family,字体属于 font 综合属性的一个单一属性
  • 属性值 v :字体名称,必须包裹在一对引号中,属性值可以有多个,值之 间用逗号分隔

常用字体

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 颜色 </title>

    <style>
        p {
            color: red;
            font-family: "宋体";
        }

        div {
            color: rgb(255,0,0);
            font-family: "SimSun";
        }

        h1 {
            color: #ff0000;
            font-family: "consolas";
        }

    </style>

</head>
<body>
    <p> 颜色名 red </p>
    <div> rgb(255,0,0) </div>
    <h1>  abcdefg </h1>
    
</body>
</html>

注意事项

  • font-family 可以设置多个字体名称,在实际加载时只会选择一种加载,选择的 依据是按书写顺序进行,如果浏览器不支持第一个字体,则会尝试下一个,直到找 到第一个支持的字体
  • 浏览器中加载的字体是用户机器中自带的,如果用户的电脑中没有设置的字体则 加载失败,需要查找下一个,因此,必须在最后设置一个所有机器都具备的通用字 体作为后路
  • 中文字体中一般带有英文可以加载的字体效果,为了避免对英文字的字体影响, 建议将英文字体写在属性值最前面

实际应用

  • 选字体需要根据设计图确定,最后需要设置备用字体
<p style="font-family: Arial, 宋体, SimSun;" > 是什么文字呢? </p>

字号 font-size

  • 作用:设置文字的大小
  • 属性名 k :font-size,字号属于 font 综合属性的一个单一属性
  • 属性值 v :可以使用相对长度单位,也可以使用绝对长度单位。推荐使用相对长度单位

单位

注意事项

  • 如果 HTML 中不设置字号,不同的浏览器有自己默认的加载字号,比如 chrome、 IE,默认显示字号为 16px
  • 不同的浏览器也有自己最小加载显示字号,如果设置的字号低于最小字号,都以 最小字号加载,0除外。chrome 浏览器最小加载显示字号为8px,IE 浏览器最小可以支持1px的字号

实际应用

  • 网页中最小设置字号必须是12px,如果低于12px会出现兼容问题。现在网页中普 遍使用14px+
  • 尽量使用12px、14px、16px等偶数的数字字号,ie6 等老式浏览器支持奇数会有 bug
  • 实际工作中的字号,需要以设计图为准
<p style="font-size: 32px;" > 这行字辣摸大  </p>
<p style="font-size: 12px;"> 这行字辣摸小 </p>

结合示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 样式 </title>

    <style>
        p {
            /* 文字颜色 */
            color: sandybrown;
            /* 字体 */
            font-family: "楷体";
            /* 字号 */
            font-size: 32px;
        }

    </style>

</head>
<body>
    
    <p> 这是一行字 </p>

</body>
</html>

CSS常用样式 -- 盒子实体化三属性

如果想在浏览器中具体看到一个盒子占有的实际位置,需要设置盒子可以实体化的三属性


示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 盒子实体化三属性 </title>
    
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: sandybrown;
        }
    </style>

</head>
<body>
    
<div> 盒子实体化三属性 </div>

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