CSS学习

尚硅谷学习笔记


目录

1.简介

[1].(内联样式,行内样式):

[2]. (内部样式表)

[3].(外部样式表) 最佳实践

 2.语法

[1].选择器

[2].声明块

3.常用选择器(在head中的style编辑)

[1].将所有的段落设置为红色(字体)

[2].将单独段落设置成红色

(1)id选择器(id不可以重复)#

(2)类选择器(class可以重复).

[3].通配选择器*

4.复合选择器

[1].交集选择器

[2]. 选择器分组(并集选择器)

5.关系选择器

[1]. 子元素选择器

[2].后代元素选择器:

 [3].选择下一个兄弟

[4].选择下边所有的兄弟

6.属性选择器

7.伪类选择器

8.a元素的伪类

9.伪元素选择器

10.样式的继承

11.单位

12.颜色

13.盒模型

14.盒子模型-边框

[1].border-width:

[2].border-color

[3].border-style

[4].border简写属性

15.盒子模型-内边距

16.盒子模型-外边距

17.盒子的水平布局

18.垂直方向的布局

19.外边距的折叠

兄弟元素

父子元素

20.行内元素的盒模型

[1].行内元素的盒模型

[2].display 用来设置元素显示的类型

[3].visibility 用来设置元素的显示状态

21.默认样式


1.简介

CSS

            - 层叠样式表

            - 网页实际上是一个多层的结构,通过CSS可以分别为网页的每一个层来设置样式

                而最终我们能看到只是网页的最上边一层

            - 总之一句话,CSS用来设置网页中元素的样式  

使用CSS来修改元素的样式:

[1].(内联样式,行内样式):

            - 在标签内部通过style属性来设置元素的样式

            - 问题:

                使用内联样式,样式只能对一个标签生效,

                 如果希望影响到多个元素必须在每一个元素中都复制一遍

                 并且当样式发生变化时,我们必须要一个一个的修改,非常的不方便

            - 注意:开发时绝对不要使用内联样式

<p style="color:red; font-size: 60px;">少小离家老大回,乡音无改鬓毛衰</p>

<p style="color: red; font-size: 60px;">今天天气真不错!</p>

[2]. (内部样式表)

            - 将样式编写到head中的style标签里

                然后通过CSS的选择器来选中元素并为其设置各种样式

                可以同时为多个标签设置样式,并且修改时只需要修改一处即可全部应用

            - 内部样式表更加方便对样式进行复用

            - 问题:

                我们的内部样式表只能对一个网页起作用,

                它里边的样式不能跨页面进行复用

<style>

        p{
            color: green;
            font-size: 50px;
        }

</style>

[3].(外部样式表) 最佳实践

            - 可以将CSS样式编写到一个外部的CSS文件中,

                然后通过link标签来引入外部的CSS文件

            - 外部样式表需要通过link标签进行引入,

                意味着只要想使用这些样式的网页都可以对其进行引用

                使样式可以在不同页面之间进行复用

            - 将样式编写到外部的CSS文件中,可以使用到浏览器的缓存机制,

                从而加快网页的加载速度,提高用户的体验。

link在 head中写,注意要有./因为在同一个文件夹下

<link rel="stylesheet" href="./style.css">

 2.语法

(CSS中的注释,注释中的内容会自动被浏览器所忽略。)

CSS的基本语法:

选择器 声明块

[1].选择器

通过选择器可以选中页面中的指定元素 -比如 p 的作用就是选中页面中所有的p元素

[2].声明块

通过声明块来指定要为元素设置的样式 。声明块由一个一个的声明组成 ,声明是一个名值对结构,一个样式名对应一个样式值,名和值之间以:连接,以;结尾。

<style>
      p{
          color: red;
          font-size: 40px;
      }

      h1{
          color: green;
      }
</style>

3.常用选择器(在head中的style编辑

[1].将所有的段落设置为红色(字体)

            元素选择器

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

                语法:标签名{}

                例子:p{}  h1{}  div{}

        p{
            color: red;
        }

        h1{
            color: green;
        }

[2].将单独段落设置成红色

(1)id选择器(id不可以重复)#

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

                语法:#id属性值{}

                例子:#box{} #red{}  

#red{
            color: red;
     }

(2)类选择器(class可以重复).

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

                语法:.class属性值

补充:class 是一个标签的属性,它和id类似,不同的是class可以重复使用

            可以通过class属性来为元素分组

            可以同时为一个元素指定多个class属性,之间加空格就可

 .blue{
            color: blue;
        }
 .abc{
            font-size: 20px;
        }

[3].通配选择器*

                作用:选中页面中的所有元素

                语法: *

*{
            color: red;
}

4.复合选择器

[1].交集选择器

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

                语法:选择器1选择器2选择器3选择器n{}

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

/*将class为red的div字体大小设置为30px */
div.red{
            font-size: 30px;
 }



.a.b.c{
            color: blue
}
<div class="red2 a b c">我是div2</div>

[2]. 选择器分组(并集选择器)

                作用:同时选择多个选择器对应的元素

                语法:选择器1,选择器2,选择器3,选择器n{}

                #b1,.p1,h1,span,div.red{}

h1, span{
            color: green
}

5.关系选择器

父元素 - 直接包含子元素的元素叫做父元素

子元素 - 直接被父元素包含的元素是子元素

祖先元素 - 直接或间接包含后代元素的元素叫做祖先元素

                - 一个元素的父元素也是它的祖先元素

后代元素 - 直接或间接被祖先元素包含的元素叫做后代元素

                - 子元素也是后代元素

兄弟元素 - 拥有相同父元素的元素是兄弟元素

[1]. 子元素选择器

                作用:选中指定父元素的指定子元素

                语法:父元素 > 子元素

/*为div的子元素span设置一个字体颜色红色

            (为div直接包含的span设置一个字体颜色)*/
div.box > span{
            color: orange;
        }

[2].后代元素选择器:

                作用:选中指定元素内的指定后代元素

                语法:祖先 后代

div span{
             color: skyblue
} 

div > p > span{
             color: red;
} 

 [3].选择下一个兄弟

(若紧邻的不是编辑的兄弟,则什么也不显示)

                语法:前一个 + 下一个

 p + span{
              color: red;
 }

[4].选择下边所有的兄弟

                语法:兄 ~ 弟

p ~ span{
              color: red;
}

6.属性选择器

            [属性名] 选择含有指定属性的元素 p[title]

            [属性名=属性值] 选择含有指定属性和属性值的元素p[title=abc]

            [属性名^=属性值] 选择属性值以指定值开头的元素p[title^=abc]

            [属性名$=属性值] 选择属性值以指定值结尾的元素p[title$=abc]

            [属性名*=属性值] 选择属性值中含有某值的元素的元素 p[title*=e]

head/style: 

p[title]{
            color: orange;
}


p[title=abc]{ 
            color: orange;
}


p[title^=abc]{ 
            color: orange;
}


p[title$=abc]{
            color: orange;
}


p[title*=e]{
            color: orange;
}

body: 

 <p title="abc">少小离家老大回</p>

7.伪类选择器

伪类(不存在的类,特殊的类)

            - 伪类用来描述一个元素的特殊状态

                比如:第一个子元素、被点击的元素、鼠标移入的元素...

            - 伪类一般情况下都是使用:开头

[1].根据所有的子元素进行排序

                :first-child 第一个子元素

                :last-child 最后一个子元素

                :nth-child() 选中第n个子元素

                    特殊值:

                        n 第n个 n的范围0到正无穷

                        2n 或 even 表示选中偶数位的元素

                        2n+1 或 odd 表示选中奇数位的元素

[2].同类型元素中进行排序 

                :first-of-type

                :last-of-type

                :nth-of-type()

[3],符合条件的元素从选择器中去除

          - :not() 否定伪类 

ul > li:first-child{
            color: red;
 } 
    
ul > li:last-child{
            color: red;
 } 

ul > li:nth-child(2n+1){
            color: red;
 }

ul > li:nth-child(even){
            color: red;
 } 
ul > li:first-of-type{
            color: red;
 } 

ul > li:not(:nth-of-type(3)){
            color: yellowgreen;
 }

8.a元素的伪类

:link 用来表示没访问过的链接(正常的链接)

 a:link{
            color: red;            
        }

:visited 用来表示访问过的链接

            由于隐私的原因,所以visited这个伪类只能修改链接的颜色

a:visited{
            color: orange; 
          }

:hover 用来表示鼠标移入的状态

a:hover{
             color: aqua;
             font-size: 50px;
        }

:active 用来表示鼠标点击

 a:active{
             color: yellowgreen;             
         }

body:

 <a href="https://www.baidu.com">访问过的链接</a>

    <br><br>

    <a href="https://www.baidu123.com">没访问过的链接</a>

9.伪元素选择器

伪元素,表示页面中一些特殊的并不真实的存在的元素(特殊的位置)

                伪元素使用 :: 开头

                ::first-letter 表示第一个字母

                ::first-line 表示第一行

                ::selection 表示选中的内容

                ::before 元素的开始

                ::after 元素的最后

                    - before 和 after 必须结合content属性来使用

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

        p::first-line{
            background-color: yellow; 
        }

        p::selection{
            background-color: greenyellow;
        }

        /* div::before{
            content: 'abc';
            color: red;
        }

        div::after{
            content: 'haha';
            color: blue;
        } */

        div::before{
            content: '『';
         }

        div::after{
            content: '』';
        }

10.样式的继承

样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上

            继承是发生在祖先后后代之间的            继承的设计是为了方便我们的开发,

                利用继承我们可以将一些通用的样式统一设置到共同的祖先元素上,

                    这样只需设置一次即可让所有的元素都具有该样式

            注意:并不是所有的样式都会被继承:比如 背景相关的,布局相关等的这些样式都不会被继承。

11.单位

长度单位:

                    像素

                        - 屏幕(显示器)实际上是由一个一个的小点点构成的

                        - 不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰

                        - 所以同样的200px在不同的设备下显示效果不一样

                    百分比

                        - 也可以将属性值设置为相对于其父元素属性的百分比

                        - 设置百分比可以使子元素跟随父元素的改变而改变

.box2{
            width: 50%;
            height: 50%;
            background-color:aqua; 
        }

                    em

                        - em是相对于元素的字体大小来计算的

                        - 1em = 1font-size

                        - em会根据字体大小的改变而改变

.box3{
            font-size: 50px;
            /* width: 10em;
            height: 10em; */
            width: 10rem;
            height: 10rem;
            background-color: greenyellow;
        }

                    rem

                        - rem是相对于根元素(html)的字体大小来计算

html{
            font-size: 30px;
}

12.颜色

颜色单位:

                    在CSS中可以直接使用颜色名来设置各种颜色

                        比如:red、orange、yellow、blue、green ... ...

                        但是在css中直接使用颜色名是非常的不方便

                    RGB值

                        - RGB通过三种颜色的不同浓度来调配出不同的颜色

                        - R red,G green ,B blue

                        - 每一种颜色的范围在 0 - 255 (0% - 100%) 之间

                        - 语法:RGB(红色,绿色,蓝色)

                    RGBA:

                        - 就是在rgb的基础上增加了一个a表示不透明度

                        - 需要四个值,前三个和rgb一样,第四个表示不透明度

                            1表示完全不透明   0表示完全透明  .5半透明

                    十六进制的RGB值

                        - 语法:#红色绿色蓝色

                        - 颜色浓度通过 00-ff

                        - 如果颜色两位两位重复可以进行简写  

                            #aabbcc --> #abc              

                    HSL值 HSLA值

                        H 色相(0 - 360)

                        S 饱和度,颜色的浓度 0% - 100%

                        L 亮度,颜色的亮度 0% - 100%

            background-color: red;
            background-color: rgb(255, 0, 0);
            background-color: rgb(0, 255, 0);
            background-color: rgb(0, 0, 255);
            background-color: rgb(255,255,255);
            background-color: rgb(106,153,85);
            background-color: rgba(106,153,85,.5);
            background-color: #ff0000;
            background-color: #ffff00;
            background-color: #ff0;
            background-color: #bbffaa;
            background-color: #9CDCFE;
            background-color: rgb(254, 156, 156);
            background-color: hsla(98, 48%, 40%, 0.658);

13.盒模型

盒模型、盒子模型、框模型(box model)

            - CSS将页面中的所有元素都设置为了一个矩形的盒子

            - 将元素设置为矩形的盒子后,对页面的布局就变成将不同的盒子摆放到不同的位置

            - 每一个盒子都由一下几个部分组成:

                内容区(content)

                内边距(padding)

                边框(border)

                外边距(margin)

.box1{
            /* 
                内容区(content),元素中的所有的子元素和文本内容都在内容区中排列  
                    内容区的大小由width 和 height两个属性来设置
                        width 设置内容区的宽度
                        height 设置内容区的高度          
             */
            width: 200px;
            height: 200px;
            background-color: #bfa;

            /* 
                边框(border),边框属于盒子边缘,边框里边属于盒子内部,出了边框都是盒子的外部
                    边框的大小会影响到整个盒子的大小
                要设置边框,需要至少设置三个样式:
                    边框的宽度 border-width
                    边框的颜色 border-color
                    边框的样式 border-style
             */

             border-width: 10px;
             border-color: red;
             border-style: solid;
        }

14.盒子模型-边框

 边框

                    边框的宽度 border-width

                    边框的颜色 border-color

                    边框的样式 border-style

[1].border-width:

10px;默认值,一般都是 3个像素

border-width可以用来指定四个方向的边框的宽度

值的情况         四个值:上 右 下 左

                        三个值:上 左右 下

                        两个值:上下 左右

                        一个值:上下左右         

 除了border-width还有一组 border-xxx-width

 (xxx可以是 top right bottom left)用来单独指定某一个边的宽度

border-width: 10px; 
border-top-width: 10px;
border-left-width: 30px;

[2].border-color

用来指定边框的颜色,同样可以分别指定四个边的边框       规则和border-width一样

border-color也可以省略不写,如果省略了则自动使用color的颜色值

border-color: orange red yellow green;
border-color: orange; 

[3].border-style

指定边框的样式  solid 表示实线

                           dotted 点状虚线

                           dashed 虚线

                           double 双线

border-style的默认值是none 表示没有边框

border-style: solid dotted dashed double;
border-style: solid; 

[4].border简写属性

通过该属性可以同时设置边框所有的相关样式,并且没有顺序要求

除了border以外还有四个 border-xxx

                    border-top

                    border-right

                    border-bottom

                    border-left

border: solid 10px orange; 
border-top: 10px solid red;
border-left: 10px solid red;
border-bottom: 10px solid red; 

15.盒子模型-内边距

内边距(padding

                    - 内容区和边框之间的距离是内边距

                    - 一共有四个方向的内边距:

                        padding-top

                        padding-right

                        padding-bottom

                        padding-left

- 内边距的设置会影响到盒子的大小  - 背景颜色会延伸到内边距上

 一共盒子的可见框的大小,由内容区 内边距 和 边框共同决定,所以在计算盒子大小时,需要将这三个区域加到一起计算

padding-top: 100px;
padding-left: 100px;
padding-right: 100px;
padding-bottom: 100px;

padding 内边距的简写属性,可以同时指定四个方向的内边距

                    规则和border-width 一样

padding: 10px 20px 30px 40px;
padding: 10px 20px 30px ;
padding: 10px 20px ;
padding: 10px ;

16.盒子模型-外边距

外边距(margin

                    - 外边距不会影响盒子可见框的大小

                    - 但是外边距会影响盒子的位置

                    - 一共有四个方向的外边距:

                        margin-top                          - 上外边距,设置一个正值,元素会向下移动

                        margin-right                        - 默认情况下设置margin-right不会产生任何效果

                        margin-bottom                    - 下外边距,设置一个正值,其下边的元素会向下移动

                        margin-left                          - 左外边距,设置一个正值,元素会向右移动

                        - margin也可以设置负值,如果是负值则元素会向相反的方向移动

                    - 元素在页面中是按照自左向右的顺序排列的,所以默认情况下如果我们设置的左和上外边距则会移动元素自身, 而设置下和右外边距会移动其他元素

                    - margin的简写属性      margin 可以同时设置四个方向的外边距 ,用法和padding一样

                    - margin会影响到盒子实际占用空间

margin-top: 100px;
margin-left: 100px;
margin-bottom: 100px; 
margin-bottom: 100px; 
margin-top: -100px; 
margin-left: -100px;
margin-bottom: -100px; 
margin-right: 0px; 
margin: 100px;

17.盒子的水平布局

元素的水平方向的布局:元素在其父元素中水平方向的位置由以下几个属性共同决定“

 margin-left     border-left    padding-left    width    padding-right    border-right    margin-right

一个元素在其父元素中,水平布局必须要满足以下的等式

margin-left+border-left+padding-left+width+padding-right+border-right+margin-right = 其父元素内容区的宽度 (必须满足)

0 + 0 + 0 + 200 + 0 + 0 + 0 = 800

0 + 0 + 0 + 200 + 0 + 0 + 600 = 800

 - 以上等式必须满足,如果相加结果使等式不成立,则称为过度约束,则等式会自动调整

- 调整的情况:

- 如果这七个值中没有为 auto 的情况,则浏览器会自动调整margin-right值以使等式满足

 - 这七个值中有三个值和设置为auto

width    margin-left    maring-right

- 如果某个值为auto,则会自动调整为auto的那个值以使等式成立

0 + 0 + 0 + auto + 0 + 0 + 0 = 800  auto = 800

0 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 600

200 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 400

auto + 0 + 0 + 200 + 0 + 0 + 200 = 800  auto = 400

auto + 0 + 0 + 200 + 0 + 0 + auto = 800  auto = 300

- 如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距会自动为0

- 如果将三个值都设置为auto,则外边距都是0,宽度最大

- 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值

所以我们经常利用这个特点来使一个元素在其父元素中水平居中

示例:           width:xxxpx;         margin:0 auto;

18.垂直方向的布局

默认情况下父元素的高度被内容撑开

子元素是在父元素的内容区中排列的,如果子元素的大小超过了父元素,则子元素会从父元素中溢出

 使用 overflow 属性来设置父元素如何处理溢出的子元素

可选值:

visible  默认值 子元素会从父元素中溢出,在父元素外部的位置显示

hidden 溢出内容将会被裁剪不会显示

scroll 生成两个滚动条,通过滚动条来查看完整的内容

auto 根据需要生成滚动条

overflow-x:(横向)       overflow-y:(纵向)

/*父元素*/
.box1{
            width: 200px;
            height: 200px;
            background-color: #bfa;
            overflow: auto;
}

19.外边距的折叠

垂直外边距的重叠(折叠)

- 相邻的垂直方向外边距会发生重叠现象

兄弟元素

- 兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)

- 特殊情况:如果相邻的外边距一正一负,则取两者的和。 如果相邻的外边距都是负值,则取两者中绝对值较大的

- 兄弟元素之间的外边距的重叠,对于开发是有利的,所以我们不需要进行处理

父子元素

- 父子元素间相邻外边距,子元素的会传递给父元素(上外边距)

- 父子外边距的折叠会影响到页面的布局,必须要进行处理

20.行内元素的盒模型

[1].行内元素的盒模型

- 行内元素不支持设置宽度和高度

- 行内元素可以设置padding,但是垂直方向padding不会影响页面的布局

- 行内元素可以设置border,垂直方向的border不会影响页面的布局

- 行内元素可以设置margin,垂直方向的margin不会影响布局

[2].display 用来设置元素显示的类型

可选值:

inline 将元素设置为行内元素

block 将元素设置为块元素

inline-block 将元素设置为行内块元素.行内块,既可以设置宽度和高度又不会独占一行

table 将元素设置为一个表格

none 元素不在页面中显示

[3].visibility 用来设置元素的显示状态

可选值:

visible 默认值,元素在页面中正常显示

hidden 元素在页面中隐藏 不显示,但是依然占据页面的位置

 a{ 
            display: block;
            visibility: hidden;
            width: 100px;
            height: 100px;
            background-color: orange;
   }

21.默认样式

默认样式:

- 通常情况,浏览器都会为元素设置一些默认样式

- 默认样式的存在会影响到页面的布局,通常情况下编写网页时必须要去除浏览器的默认样式(PC端的页面)

1.

ul{
            margin: 0;
            padding: 0;
            /* 去除项目符号(ul前面的·) */
            list-style:none; 
}

2.重置样式表:专门用来对浏览器的样式进行重置的(在style的上面)

            reset.css 直接去除了浏览器的默认样式

            normalize.css 对默认样式进行了统一

<!-- <link rel="stylesheet" href="./css/reset.css"> 两者选其一-->
    <link rel="stylesheet" href="./css/normalize.css">

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值