理解CSS | 青训营笔记

250 阅读11分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第2天

css常见布局.jpg 注:图片转载于@sunshine小v小倩[CSS 常见布局方式 - 掘金 (juejin.cn)] ,感兴趣的请点击下方链接阅读原文:juejin.cn/post/684490…

课堂重点🗒️🖋️

  • CSS 代码构成
  • CSS使用方法
  • CSS流程之选择器组、文本渲染
  • 调试CSS
  • CSS选择器的特异度
  • CSS维承
  • CSS求值过程解析
  • CSS布局方式及相关技术
  • CSS盒模型,分别为行级和块级

1.什么是CSS

CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。
CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。

2.CSS语法

CSS语法基础规则由两个主要部分构成:

  • 选择器
  • 1或n条说明 每条声明由一个属性和一个值组成。属性(property)是设置的样式属性,每个属性有一个值,属性和值被冒号分开。

语法:

  • selector{property: value}
  • h1{color:red; font-size: 14px;}h1是选择器,color和font-size是属性,red和14px是值。
  • p{text-align:center;color:red} 若定义不止一个声明要用分号将每个声明分开。
  • p {font-family: "sans serif";}若为若干单词,则要给值加引号

CSS继承遵循子元素从父元素继承属性

3.创建CSS

  • 内部样式表
<head>
    <style type="text/css">
    选择器{属性1:属性值1;属性2:属性值2;属性3:属性值3;}
    div{width: 20opx; height:20opx; border : 1px solid red;}
    </style>
</head>
  • 行内式(内联样式)
<div style="width:200px;height:100px;border:1px solid black;"></div>
  • 外部样式表(外链式)
<head>
    <link rel="stylesheet" type="text/css" href="css/style.css">
</ head>

样式优先级:内联样式>内部样式>外部样式

三者区别

内部样式表优缺点行内式优缺点外部样式表
优:书写方便;优:部分结构和样式相分离;完全实现结构和样式分离;
缺:没有实现样式和结构相分离;缺:没有彻底分离;缺:需要引入;
控制范围是控制一个标签(少)。控制范围是控制一个页面(中)。控制范围是控制整个站点(多)。

4.id和class选择器

  • id选择器: id选择器可以为标有特定 id 的HTML元素指定特定的样式, id属性和身份证一样具有唯一性。 HTML元素以id属性来设置id选择器,CSS中id选择器以"#”来定义。 注意: id属性不能以数开头!🧐

语法:

#id名{属性1;属性值1;属性2:属性值2;属性3:属性值3;}

  • class选择器: class选择器用于描述一组元素的样式,也叫做类选择器。 class可以在多个元素中使用,并且一个元素也可以指定多个类名。 在CSS 中,类选择器以一个点".”号来定义。 同样的类名的第一个字符也不能使用数字。

语法:

.类名{属性1:属性值1;属性2:属性值2;属性3:属性值3;}

id选择器class选择器
相同点:都可以应用于任何元素
不同点:1. id 选择器只能在文档中使用一次,而 class 选择器可以使用多次。2.可以使用 class 选择器词列表方法为一个元素同时设置多个样式(也就是一个元素可以制定多个类名),而 id 只能指定一个。

5.CSS元素选择器

也称为标签选择器,是HTML中元素的最基本选择器。

语法:

标签名{属性1:属性值1;属性2:属性值2;属性3:属性值3;}

或者

元素名{属性1:属性值1;属性2:属性值2;属性3:属性值3;}

6.CSS背景(blackground)

background 属性用于定义 HTML 元素的背景。定义元素背景效果的CSS属性有以下五种:

  • background-color (背景颜色)
  • background-image (背景图像)
  • background-repeat (背景图像设置水平或垂直平铺或不平铺)
  • background-position (背景图像设置定位)
  • background-attachment (背景图像设置固定或滚动)

也可以直接简写成: body{background:green url( 'images/fix.gif' ) no-repeat fixed 12px 24px;}

当使用简写属性时,属性值的顺序依次为:

background-color --> background-image --> background-repeat -->background-attachment --> background-position

7.CSS外观属性

  • text-color (文本颜色)
  • text-align (文本对齐方式)
  • text-dexoration:overline (设置文本上划线)
  • text-decoration:underline (设置文本下划线)
  • text-shadow:x y shadow color (文本阴影)其中×是水平阴影的偏移值, y是垂直阴影的偏移值,shadow用于指定阴影的模糊值,即模糊效果的作用距离,不允许负值。

8.CSS字体 ( font )

font 属性可用于设置文本字体,定义样式,如加粗,大小等,属于复合属性,也叫做简写属性。

简写顺序

font-style (字体样式) --> font-variant(字体变形) --> font-weight(字体加粗) --> font-size(字体大小)/line-height --> font-family(设置文本字体) 注:font-size和font-family的值是必须的,否则无效!!!

设置字体绝对或相对大小

  • 用 px 设置:通过像素设置文本大小是设置的整个页面。

  • 使用 em 设置: 1 em 等于当前的字体尺寸,比如设置的默认字体是12px,因此1 em 的默认大小就是12px。像素转换 em : px/12 = em

  • 使用 % 和 em 组合设置:在所有浏览器的解决方案中,设置body元素的默认字体大小是100%,可以显示相同的文本大小,并允许所有浏览器缩放文本的大小。

<head>
    <style>
        body{font-size: 100%}
        p{font-size:2.5em; }   /*2.5*16=40px */
    </style>
</head>
<body>
    <p>使用%和em组合设置</p>
</body>

font-style 属性

主要用于指定斜体文字,该属性有三个值:

  • normal (正常显示文本)
  • italic (定义斜体)
  • oblique(定义倾斜的文字)

9.CSS链接

CSS的链接有以下四种状态:

a:linka:visiteda:hovera:active
-正常,未访问过的链接。-已访问过的链接。-当鼠标滑动到链接上时。链接被点击的那一刻。

10.CSS列表

1.设置不同的列表项标记 2.设置列表项标记为图像

修改列表项标记使用list-style-type,使用图像作为标记可以利用list-style-image 属性完成。

  • 无序列表- 无序列表经常用来做导航栏菜单,通常都需要隐藏无序列表项的标记,那么就使用list-style-type:none,表示无标记。
  • list-style-type属性的默认值为disc实心圆,即小黑点。除了无标记还可以修改标记,例如circle空心圆,square实心方块。
  • 有序列表- 有序列表项标记默认使用数字样式显示,即 list-style-type:decimal。
  • 图像作为列表项标记- 要指定列表项标记的图像,可以使用list-style-image 属性,只需要简单地设置一个url)值,就可以将图像作为标记类型。

列表属性简写: list-style: list-style-type,list-style-position,list-style-image;

11.CSS表格

表格边框表格宽度和高度表格对齐表格内边距
borderwidth 和 heighttext-align 和 vertical-aligntr,td 的 padding 设置

12.CSS选择器

1.分组和嵌套选择器

  • 分组选择器

h1{ color : gray ; }

p{color:gray ; }

可以写成:

h1,p{color:gray; }

  • 嵌套选择器
.div1 p{
    color:white;
}
.div1 p a{
    color:yellow;
    font-weight:bold;
}
<div class="div1">
    <p>嵌套选择器
        <a href="#">深层嵌套选择器</a>
    </p>
</div>
  • 通配符选择器
*{
        padding:0;
        margin:0;
}

2.属性选择器

  • 属性选择器:属性选择器使用[attr]; 例如:把所有带有 title 属性的元素的字体设置为红色。
<head>
    <style>
        [title]{
            color : red;
        }
    </ style>
</head>
<body>
    <h1> h1 标题不带有 title 属性</h1>
    <h2 title="标题"> h2 可以设置样式</h2>
    <a href="#" title="链接">超链接可以设置样式</a>
</body>
  • 属性和值选择器:属性选择器使用[attr=value]
<head>
    <style>
        [title=Hello]{
            color : blue;
        }
    </style>
</head>
<body>
    <h1 title="Hello world"> h1 标题 title="Hello world"</h1>
    <h2 title="Hello"> h2 可以设置样式</h2>
    <a href="#” title="Hello">超链接可以设置样式</a>
</body>
  • 属性和多个值的选择器:使用有两种情况:属性值用空格分隔使用:[attr~=value];属性值用连字符分隔则使用:[attr|=value]。
    例如:把包含 title='Hello' 的元素的字体设置为绿色,使用 ~ 分隔属性和值。
  • 表单样式:属性选择器在为不带有class或id的表单设置样式时特别有用。

3.组合选择器

组合选择符是包括各种简单选择器的组合方式,组合选择符说明了两个选择器的关系是直接的。

  • 后代选择器:又称为包含选择器,以空格分隔,子元素选择器只能选择作为某元素子元素的元素。
  • 子元素选择器:子元素选择器只能选择作为某元素子元素的元素,以 > 分隔,子元素选择器只能选择作为某元素子元素的元素。
  • 相邻兄弟选择器:可选择紧接在另一元素后的元素,且二者有相同父元素,以 + 分隔。
  • 普通相邻兄弟选择器:选取所有指定元素的相邻兄弟元素,以 ~ 分隔。
  • 选择器组合:多种选择器可以结合起来使用。

13.CSS伪类(不区分大小写)

CSS 伪类是用来向一些选择器添加特殊的效果。

语法:选择器:伪类{attr:value;}

CSS 类也可以使用伪类:选择器.class:伪类{attr:value;}

  • 超链接伪类

在浏览器中,链接的不同状态都可以以不同的方式显示:

/*未访问的链接显示为红色*/
a : link{color : #FFo000 ; }
/*已访问的链接显示为绿色*/
a : visited{color : #OOFFOO; }
/*鼠标划过链接显示为紫红色*/
a : hover{ color : #FFOOFF; }
/*已选中的链接显示为蓝色*/
a :active{color : #000OFF;}

注:在CSS定义中,a:hover必须被置于a:link和a:visited之后,a:active必须被置于a:hover之后,才是有效的。

  • 伪类和CSS 类(伪类可以与CSS 类配合使用)
  • css2 - :first - child伪类
  • CSS2 - :lang 伪类- 使用:lang 伪类可以为不同的语言定义特殊的规则。

14.CSS伪元素

CSS伪元素是用来为一些选择器添加特殊的效果。

语法:选择器:伪元素{attr:value;}

CSS类也可以使用伪元素:选择器.class:伪元素{attr:value;}

15.块级元素和行内元素

1.块级元素(block-level):每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度、高度、对齐等属性,常用于网页布局和网页结构的搭建。

常见的块元素有<h1~h6>、p>、<div、<ul、<ol、<li等,其中<div 标签是最典型的块元素。

块级元素特点:

  • 总是从新行开始
  • 高度,行高,外边距以及内边距都是可以控制的
  • 宽度默认是容器的100%
  • 可以容纳内联元素和其他块元素

2.行内元素(inline-level):不占有独立的区域,仅仅靠自身的字体大小和图像尺寸来支撑结构,一般不可以设置高度,宽度,对齐等属性,常用于控制页面中文本的样式。常见的行内元素有<a、<strong、<b、<em、<i、<del、<s、<ins、<u、<span等,其中<span 标签最典型的行内元素。

行内元素特点:

  • 和相邻行内元素在一行上。
  • 高、宽无效,但水平方向的padding和margin可以设置,垂直方向的无效。默认宽度就是它本身内容的宽度。
  • 行内元素只能容纳文本或其他行内元素。(a特殊)

16.行内块元素(inline-block)

在行内元素中有几个特殊的标签——<img/、<input/、<td,可以对它们设置宽高和对齐属性,有些资料可能会称它们为行内块元素。

行内块元素的特点:

  • 和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。
  • 默认宽度就是它本身内容的宽度。
  • 高度,行高、外边距以及内边距都可以控制。

17.CSS三大特性

层叠、继承、优先级

  • CSS层叠性: 是指多种CSS样式的叠加。
  • CSS继承性: 是指书写CSS样式表时,子标签会继承父标签的某些样式,如文本颜色和字号。 想要设置一个可继承的属性,只需将它应用于父元素即可。简单理解就是:子承父业。
  • CSS优先级: 定义CSS样式时,经常出现两个或更多规则应用在同一元素上,这时就会出现优先级的问题。

使用了!important声明的规则。考虑权重时,需要注意的以下几点:

  • 继承样式的权重为0。
  • 行内样式优先。
  • 权重相同时,CSS遵循就近原则。

18.盒子模型⭐⭐⭐⭐⭐

CSS三大模块:盒子模型、浮动、定位

语法: border : border-width |l border-style ll border-color

常用属性值: none: 没有边框即忽略所有边框的宽度(默认值)、solid线(单实线)、dashed(虚线)、dotted(点线)、double(双实线)

19.居中

1.外边距实现盒子居中

需要满足以下两个条件:

  • 必须是块级元素。
  • 盒子必须指定了宽度 (width) , 然后给元素左右的外边距都设置为auto。

例子:.header{width:960px;margin:0 auto;}

2.文字盒子居中

  • 文字水平居中是 text-align:center
  • 盒子水平居中 - 左右 margin 改为 auto

20.盒子模型布局稳定性

按照优先使用宽度 (width) 、其次使用内边距 (padding) 、再次外边距 (margin) 。width > padding > margin

原因:

  • margin会有外边距合并还有 ie6 下面 margin 加倍的 bug ,所以最后使用。
  • padding 会影响盒子大小,需要进行加减计算(麻烦)其次使用。
  • width 没有问题,我们经常使用宽度剩余法高度剩余法来做。

21.盒子阴影

语法: box-shadow: 水平阴影垂直阴影模糊距离阴影尺寸阴影颜色﹑内/外阴影;

22.浮动(float)

CSS的定位机制有3种:普通流(标准流)、浮动和定位。

浮动: 是指设置了浮动属性的元素会脱离标准普通流的控制,移动到其父元素中指定位置的过程。

语法:选择器{float:属性值;}属性值可以是left,right, both, none。 目的:为了让多个块级元素同一行上显示。

23.定位(position)

position 属性值分为四种:

  • static:自动定位(默认定位方式),所谓静态位置就是各个元素在 HTML 文档流中默认的位置。
  • relative:相对定位,相对定位是将元素相对于它在标准流中的位置进行定位
  • absolute:绝对定位,相对于其上一个已经定位的父元素进行定位
  • fixed:固定定位,相对于浏览器窗口进行定位。它的特点在于它的元素跟父亲没有任何关系,只认浏览器;完全脱标,不占有位置,不随着滚动条滚动。

叠放次序(z-index的特点:

  • z-index的默认属性值是0,取值越大,定位元素在层叠元素中越居上。
  • 如果取值相同,则根据书写顺序,后来居上。
  • 后面数字—定不能加单位。
  • 只有相对定位,绝对定位,固定定位有此属性,其余标准流,浮动,静态定位都无此属性,亦不可指定此属性。

结尾

今天主要学习理解CSS,都是一些很基础的内容,但是能写到这里我感到非常的满足。🤷‍♀️ (太不容易了)

综上,今天又是好好学习的一天!😊