css_day_001

一、简介

1. 网页的组成

  • 结构(html)
  • 表现(css)
  • 行为(JavaScript)

2. css(层叠样式表)

网页实际上是一个多层的结构,通过css可以分别为网页的每一层来设置样式,而最终我们能看到的知识网页的最上边一层。

(1)作用:用来设置网页中元素的样式。

(2)使用方式:

  • 第一种方式(内联样式,行内样式):在标签内部通过style属性来设置元素的样式。
    • 缺点:
      • 使用内联样式,样式只能对一个标签生效。
      • 如果希望影响到多个元素,则必须在每一个元素中都复制一遍。
      • 当样式发生变化时,我们必须要一个一个的修改,非常的不方便。
    • 注意:开发时绝对不要使用内联样式。
<p style="color: red; font-size: 60px;">
    少小离家老大回,乡音无改鬓毛衰。
</p>
  • 第二种方式(内部样式表):将样式编写到head中的style标签里,然后通过css的选择器来选中元素并为其设置各种样式。
    • 优点:
      • 可以同时为多个标签设置样式,并且修改时只需要修改一处即可全部应用。
      • 内部样式表更加方便对样式进行复用。
    • 缺点:
      • 内部样式表只能对一个网页起作用,它里面的样式不能跨页面进行复用。
<head>
    <style>
        p{
            color: green; 
            font-size: 50px
        }
    </style>
</head>
  • 第三种方式(外部样式表):可以将css样式编写到一个外部的css文件中,然后通过link标签来引入外部的css文件。
    • 优点:
      • 外部样式表需要通过link标签进行引入,这意味着想要使用这些样式的网页都可以对其进行引用,使样式可以在不同页面之间进行复用。
      • 将样式编写到外部的css文件中,可以使用到浏览器的缓存机制,从而加快网页的加载速度,提高用户体验。
<head>
    <link rel="stylesheet" href="css文件路径">
</head>
p{
    color: green;
    font-size: 50px;
}

二、css语法

1. 注释

(1)说明:css中的注释内容会自动被浏览器所忽略。

/*

*/

2. css基本语法

2.1 选择器

(1)说明:通过选择器可以选中页面中的指定元素。

p {
    
}

2.2 声明块

(1)说明:通过声明块来指定要为元素设置的样式。

  • 声明块由一个一个的声明组成。

  • 声明是一个明值对结构。

    • 明值对结构:一个样式名对应一个样式值,名和值之间用:连接,以;结尾。
color: red;
font-size: 40px;

3. 常用选择器

3.1 元素选择器

(1)作用:根据标签名来选中指定的元素。

(2)语法:

标签名 {}

(3)例子:

p {
    
}

h1 {
    
}

3.2 id选择器

(1)作用:根据元素的id属性值选中一个元素。

(2)语法:

#id属性值{}

(3)例子:

#red {
    color: red;
}
<p id="red">
    少小离家老大回
</p>

3.3 类(class)选择器

(1)说明:class是一个标签的属性,它和id类似,不同的是class可以重复使用。我们可以通过class属性来为元素分组。

(2)作用:根据元素的class属性值选中一组元素。

(3)语法:

.class 属性值

(4)例子:

.blue {
    color: bule;
}
<p class="blue">
    落霞与孤鹜齐飞
</p>

<p class="blue">
    秋水共长天一色
</p>
  • 可以为一个元素指定多个class属性。

3.4 通配选择器

(1)作用:选中页面中的所有元素。

(2)语法:

* {
    
}

3.5 复合选择器

3.5.1 交集选择器

(1)作用:选中同时复合多个条件的元素。

(2)语法:

选择器1 选择器2 选择器3 选择器4 ··· 选择器n {
    
}

(3)注意:交集选择器中如果有元素选择器,必须使用元素选择器开头。

3.5.2 选择器分组(并集选择器)

(1)作用:同时选择多个选择器对应的元素。

(2)语法:

选择器1, 选择器2, 选择器3, 选择器4, ···, 选择器n {
    
}

3.6 关系选择器

(1)父元素:直接包含子元素的元素叫做父元素。

(2)子元素:直接被父元素包含的元素是子元素。

(3)祖先元素:直接或间接包含后代的元素的元素叫做祖先元素。

  • 一个元素的父元素也是它的祖先元素。

(4)后代元素:直接或间接被祖先元素包含的元素叫后代元素。

  • 子元素也是后代元素。

(5)兄弟元素:拥有相同父元素的元素是兄弟元素。

3.6.1 子元素选择器

(1)作用:选中指定父元素的指定子元素。

(2)语法:

父元素 > 子元素 {
    
}

(3)例子:

div > span {
    color: orange;
}
<div>
    <p>
        我是div中的p元素
        <span>我是p中的span元素</span>
    </p>
    <span>我是div中的span元素</span>
</div>

3.6.2 后代元素选择器

(1)作用:选中指定元素内的指定后代元素。

(2)语法:

祖先 后代 {
    
}

(3)例子:

div span {
    color: skyblue;
}
<div>
    <p>
        我是div中的p元素
        <span>我是p中的span元素</span>
    </p>
    <span>我是div中的span元素</span>
</div>

3.6.3 兄弟选择器

  • 第一种兄第选择器:

(1)作用:选择下一个兄弟。

(2)语法:

前一个 + 下一个 {
    
}

(3)例子:

p + span {
    color: red;
}
<div>
    <p>
        我是div中的p元素
        <span>我是p中的span元素</span>
    </p>
    <span>我是div中的span元素</span>
</div>
  • 第二种兄弟选择器:

(1)作用:选择下边所有的兄弟。

(2)语法:

兄 ~ 弟 {
    
}

(3)例子:

p ~ span {
    color: red;
}
<div>
    <span>我是div中的span元素</span>
    <p>
        我是div中的p元素
        <span>我是p中的span元素</span>
    </p>
    <span>我是div中的span元素</span>
    <span>我是div中的span元素</span>
    <span>我是div中的span元素</span>
</div>

3.7 属性选择器

(1)作用:选择含有指定属性的元素。

(2)语法:

  • 第一种:
[属性名] {
    
}
  • 第二种:
[属性名=属性值] {
    
}
  • 第三种:
    • 选择属性值以指定值开头的元素。
[属性名 ^= 属性值] {
    
}
  • 第四种:
    • 选择属性值以指定值结尾的元素。
[属性名 $= 属性值] {
    
}
  • 第五种:
    • 选择属性值中含有某值的元素。
[属性名 *= 属性值] {
    
}

(3)例子:

  • 第一种:
[title] {
    color: orange;
}
<p>西风吹老洞庭波,</p>
<p>一夜湘君白发多。</p>
<p title="a">醉后不知天在水,</p>
<p title="a">满船清梦压星河。</p>
  • 第二种:
[title = a] {
    color: orange;
}
<p>西风吹老洞庭波,</p>
<p>一夜湘君白发多。</p>
<p title="a">醉后不知天在水,</p>
<p title="b">满船清梦压星河。</p>

3.8 伪类选择器

(1)伪类(不存在的类,特殊的类):用来描述元素的特殊状态(比如:第一个子元素、被点击的元素、鼠标移入的元素……)。

(2)特点:一般情况下使用:开头。

  • first-child:第一个子元素。
  • last-child:最后一个子元素。
  • nth-child():选中第n个子元素。
    • 特殊值:
      • n:第n个,n的范围0到正无穷。
      • 2n或even:表示偶数位的元素。
      • 2n+1或odd:表示选中奇数位的元素。

(3)例子:

ul > li:first-child {
    color: red;
}
<ul>
    <li>第一个</li>
    <li>第二个</li>
    <li>第三个</li>
    <li>第四个</li>
    <li>第五个</li>
</ul>

(4)注意:以上这些伪类都是根据所有的子元素进行排序。

  • first-of-type
  • last-of-type
  • nth-of-type()
  • 这几个伪类的功能和上述的类似,不同的是他们是在同类型的元素中进行排序。
  • not():否定伪类,将符合条件的元素从选择器中去除。
ul > li:not(:nth-child(3)) {
    color: red;
}
<ul>
    <li>第一个</li>
    <li>第二个</li>
    <li>第三个</li>
    <li>第四个</li>
    <li>第五个</li>
</ul>

4. 超链接的伪类

4.1 超链接的状态

  • link(超链接独有):用来表示没有访问过的连接(正常的连接)。
a:link {
    color: red;
}
  • visited(超链接独有):用来表示访问过的连接。
    • 由于隐私的原因,所以visited这个伪类只能修改连接的颜色。
a:visited {
    color: orange;
}
  • hover:用来表示鼠标移入的状态。
a:hover {
    color: aqua;
    font-size: 50px;
}
  • active:用来表示鼠标点击时的状态。
a:active {
    color: yellowgreen;
}

5. 伪元素

(1)说明:用来表示页面中特殊的并不真实存在的元素(特殊的位置)。

(2)语法:

::
  • ::first-letter:表示第一个字母。
  • ::first-line:表示第一行。
  • ::selection:表示选中的内容。
  • ::before:表示元素的开始。
  • ::after:表示元素的最后。
    • before和after必须结合content属性来使用。

(3)例子:

p::first-letter {
    font-size: 50px.
}

div::before {
    content: "『"
}

div::after {
    content:"』"
}

6. 继承

(1)样式的继承:我们为一个元素设置的样式同样也会应用到它的后代元素上。

  • 继承的设计是为了方便我们的开发,利用继承我们可以将一些通用的样式统一设置到共同的祖先元素上,这样只需设置一次即可让所有的元素都具有该样式。
  • 注意:并不是所有的样式都会被继承(比如:背景相关的,布局相关的等这些样式都不会被继承)。

7. 选择器的权重

(1)样式冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。

(2)选择器的权重:发生冲突时,应用哪个样式由选择器的权重(优先级)决定。

  • 由大到小:

    • 内联样式: 1000
    • id选择器: 100
    • 类和伪类选择器 10
    • 元素选择器 1
    • 通配选择器 0
    • 继承的样式 没有优先级
  • 比较优先级时,需要将所有的选择的优先级进行相加计算,最后优先级越高,则越优先显示(分组选择器是单独计算的)。

    • 选择器的累加不会超过其最大数量级,类选择器再高也不会超过id选择器。
  • 如果优先级计算后相同,此时优先使用靠下的样式。

  • !important:在某一个样式后面添加important后,此时该样式会获取到最高优先级,甚至会超过内联样式。

    • 注意:再开发中一定要慎用

8. 像素和百分比

8.1 像素

(1)说明:屏幕(显示器)实际上是由一个一个的小点点构成的,不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰,所以在同样的像素下不同的设备显示效果不一样。

8.2 百分比

(1)说明:可以将属性值设置为相对于其父元素属性的百分比。

  • 好处:设置百分比可以使子元素跟随者父元素的改变进行改变。

8.3 em

(1)说明:em是相对于元素的字体大小来计算的。

  • 1 em = 1 font-size
  • em会根据字体大小的改变而改变。

8.4 rem

(1)说明:rem是相对于根元素(html)的字体大小来计算的。

9. RGB

(1)说明:在css中可以直接使用颜色名来设置各种颜色,但是在css中直接使用颜色名是非常不方便的。

9.1 RGB

(1)说明:通过三种颜色的不同浓度来调配出不同的颜色。

  • R:re、G:green、B:blue
  • 每一种颜色的范围在0~255之间。

(2)语法:

RGB(红色,绿色,蓝色);

9.2 RGBA

(1)说明:就是在RGB的基础上增加了一个A表示不透明度

RGBA(106, 53, 85,.5)
  • 需要四个值,前三个和RGB一样,第四个表示不透明度。
    • 1:表示完全不透明。
    • .5:表示半透明。
    • 0:表示完全透明。

(2)十六进制的RGB值

#ff0000;
  • 如果颜色两位两位重复可以进行简写。

9.3 HSL、HSLA

(1)说明:

  • H:色相(0 - 360)
  • S:饱和度(0% - 100%)
  • L:亮度(0% - 100%)
  • A:不透明度(0 - 1)

(2)语法:

hsl(0, 100%, 0%)

三、布局

1. 文档流(normal flow)

(1)说明:网页时一个多层结构,一层叠着一层。通过css可以分别为每一层来设置样式,作为用户只能看到最顶上的一层。这些层中,最底下的一层称为文档流,文档流是网页的基础。我们所创建的元素默认都是在文档流中进行排列。

  • 对于我们来说元素主要由两个状态:
    • 在文档流中。
    • 不再文档六种。
  • 元素在文档流中的特点:
    • 块元素
      • 块元素会在页面中独占一行(自上而下垂直排列)。
      • 默认宽度是父元素的全部(会把父元素撑满)。
      • 默认高度是被内容撑开(子元素撑开)。
    • 行内元素
      • 行内元素不会独占一行,只会占自身的大小。
      • 行内元素在页面中自左向右水平排列,如果一行之中不能容纳下所有的行内元素,则元素会换到第二行继续自左向右排列(与书写习惯一致)。
      • 行内元素的默认宽度和高度都是被内容撑开。
posted @ 2021-07-24 17:38  1706010214  阅读(32)  评论(0)    收藏  举报