CSS笔记

目录

01.CSS简介 

1.1 网页三部分

1.2 使用css修改元素样式方法

02.CSS语法

03.常用选择器

方式一:元素选择器

方式二:id选择器  #id

方式三:类选择器 .class

方式四:通配选择器

04.复合选择器

4.1 交集选择器

4.2 并集选择器

05.父子兄弟选择器

5.1 子元素选择器:

5.2 后代元素选择器:

5.3 兄弟元素选择器

06.属性选择器

07.伪类选择器

7.1 伪类 

7.2 对所有子元素排序选择

7.3 对同类元素排序选择

08.a元素的伪类

常用伪类

09.伪元素选择器

伪元素

10.样式的继承

11.选择器的权重

11.1 样式的冲突

11.2选择器权重

12.单位

13. 颜色

13.1 RGB值:

13.2 RGBA

13.3 HSL值 HSLA值


01.CSS简介 

        CSS是层叠样式表 类似ps中的图层

1.1 网页三部分

        结构(HTML)

        表现(CSS)

        行为(JavaScript)

1.2 使用css修改元素样式方法

方式一(内联/行内样式):不实用

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

        问题:

                样式只能对一个标签生效,易产生代码冗余,当样式变化时修改代码工程量大

         注意:

                开发时绝对不要使用内联样式

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

 方式二(内部样式表): 也不太实用

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

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

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

        问题:

                内部样式表只能对一个网页起作用

                它里面的样式不能跨平台进行复用

<style>
    p{color:purple;font-size : 30px;}
</style>

方式三(外部样式表):最佳实践

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

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

外部样式表需要通过link标签进行引用

        意味着可以跨网页、重复使用

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

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

①建立style.css文件

p{
    color:rgb(0, 17, 255);
    font-size : 30px;
}

②直接在head内部通过link标签进行引用 

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

02.CSS语法

CSS中的基本语法:

选择器 声明块

            选择器:通过选择器可以选中页面中指定元素,比如p

            声明块,通过声明块来制定要为元素设置的样式,声明块里面是名值对结构

                {        样式名:样式值;         }

<head>
    <style>
        p{
            color: rgb(0, 0, 0);
            font-size: 40px;
        }
        h1{
            color: red;
        }
    </style>
</head>

03.常用选择器

方式一:元素选择器

p{
    color: red;
}
h1{
    color: green;
}

方式二:id选择器  #id

#red{
    color: black;
}

方式三:类选择器 .class

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

方式四:通配选择器

*{
    color: red;
}

优先级:id -> class -> 元素选择器 -> 通配选择器

<body>
    <h1>标题</h1>
    <p id="red">少小离家老大回</p>
    <p>乡音无改鬓毛衰</p>
    <!-- 
        class是一个标签的属性,和id类似,不同的是class可以重复使用
            可以通过class属性来分组
     -->
    <p class="blue abc">儿童相见不相识</p>
    <p class="blue">笑问客从何处来</p>
</body>

04.复合选择器

4.1 交集选择器

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

div.red{
    font-size: 30px;
}
.a.b.c{
    color: green;
}

4.2 并集选择器

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

h1,span{
            color: aqua;
        }
<body>
    <div class="red">我是div</div>
    <div class="red a b c">我是div2</div>
    <p class="red">我是p元素</p>
    <h1>标题</h1>
    <span>哈哈</span>
</body>

05.父子兄弟选择器

        父元素:

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

        子元素:

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

        祖先元素:

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

        后代元素:

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

        兄弟元素:

            拥有相同父元素

5.1 子元素选择器:

        语法:父元素 > 子元素

div.box > span{
    color: red;
} 

5.2 后代元素选择器:

        语法:祖先 后代

div span{
    color: blue;
} 

5.3 兄弟元素选择器

选择下一个兄弟

        语法:前一个+下一个

选择下面所有兄弟

        语法:兄~弟

p + span{
    color: brown;
}
p ~ span{
    font-size: 30px;
}
<body> 
    <div class="box">
        div
        <p>
            div:p
            <br>
            <span>p:span</span>

        </p>
        <div>div</div>
        <span>div:span</span>
        <span>div:span</span>
        <span>div:span</span>
        <span>div:span</span>
    </div>
    <span>span</span>
</body>

06.属性选择器

        元素选择+属性选择

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

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

        [属性名^= 属性值] 选择属性值以指定值开头的元素  -->找头符合

        [属性名$= 属性值] 选择属性值以指定值结尾的元素  -->找尾符合

        [属性名*= 属性值] 属性值中含有某值的元素        -->找任意位置符合

        p[title]{
            font-size: 30px;
        }
        p[title = ABC]{
            color: blue;
        }
        P[title^=DEF]{
            font-size: 40px;
        }
        P[title$=ABC]{
            color: pink;
        }
<body>    
    <h1>标题</h1>
    <!-- title:提示文字 -->
    <p title="ABC">少小离家老大回</p>
    <p title="DEF">乡音无改鬓毛衰</p>
    <p title="DEFGHI">儿童相见不相识</p>
    <p title="hhABC">笑问客从何处来</p>
</body>

07.伪类选择器

7.1 伪类 

伪类 :不存在的类、特殊的类

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

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

伪类一般情况下用 " :" 开头

7.2 对所有子元素排序选择

:first-child 第一个子元素

:last-child 最后一个子元素

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

特殊值:

        n 选中全部

        2n / even 选中偶数位

        2n+1 / odd 奇数

 *以上伪类都是根据所有子元素进行排序

ul>li:first-child{
    font-size: 30px;
}

注:此代码无效

        无效是因为在所有类型中排序中first-child是span

        但是这里要选择的是ul里的li,所以交集为空找不到

7.3 对同类元素排序选择

:first-of-type

:last-of-type

:nth-of-type()

*以上伪类的功能和上述类似,不同点是他们在同类元素中进行排序

ul>li:first-of-type{
    color: red;
}

:not(),否定伪类

        将符合条件的元素从选择器中去除

ul>:not(:nth-child(3)){
    color: blue;
}
<body>
    <ul>
        <span>span</span>
        <li>一</li>
        <li>二</li>
        <li>三</li>
        <li>四</li>
        <li>五</li>
    </ul>
</body>

08.a元素的伪类

常用伪类

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

 :visited表示访问过的链接

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

--------上面两个伪类只适用于a元素---------

 :hover 表示鼠标移入的状态

 :active 表示鼠标点击状态

<style>
        /*    :link表示没访问过的链接(正常的链接)    */
        a:link{
            color: red;
        }
        /* 
              :visited表示访问过的链接
            由于隐私原因,visited这个伪类只能修改链接的颜色
        */
        a:visited{
            font-size: 50px;
            /* 由于隐私原因,此行代码无效 总不能将访问过的链接搞得很大
            让全世界都知道你在看h网 */
            color: orange;
        }
        /*     :hover 表示鼠标移入的状态    */
        a:hover{
            color: rgb(1, 255, 115);
        }
        /*    :active 表示鼠标点击状态    */
        a:active{
            color: yellow;
        }
    </style>

09.伪元素选择器

伪元素

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

                伪元素使用 :: 开头

        ::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: green;
}
div::before{
    content: '『';
    color: red;
}
div::after{
    content: '』';
    color: red;
}

10.样式的继承

 注意:

                并不是所有的样式都会被继承

                比如背景相关的,布局相关的 等 这些样式不会被继承

<style>
    p{
        color: red;
        background-color: orange;
    }
    body{
        font-size: 20px;
    }
</style>
<body>
    <p>
        p
        <br>
        <span>p中span</span>
    </p>
</body>

11.选择器的权重

11.1 样式的冲突

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

11.2选择器权重

        比较优先级时,需要将所有选择器优先级进行相加再比较(分组选择器单独计算)  

注意1:    

        选择器的累加不会超过其最大数量级

                eg:类选择器再多再搞不会超过id选择器

        不能跨数量级

        如果优先级相同,优先使用靠下的样式

注意2:

        可以在某个样式后面加 !important

此时该样式会获取到最高优先级,甚至超越内联样式,但是在开发中慎用

                内联样式                    1,0,0,0    (内联样式:直接写一个style属性在标签内)

                id选择器                     0,1,0,0

                类和伪类选择器         0,0,1,0

                元素选择器                 0,0,0,1

                通配选择器                 0,0,0,0

                继承的样式                 没有优先级

div{
    background-color: yellow;
}
.red{
    background-color: red;
}
#box1{
    background-color: blue;
}
div#box1{/*并集,优先级相加*/
    background-color: blueviolet;
}
div,p,span{/*并集,单独计算*/
    background-color: aqua;
}
*{
    font-size: 30px;
}

12.单位

12.1 像素:

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

        不同屏幕的像素大小是不用的,像素越小现实的效果越清晰

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

12.2 百分比

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

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

12.3 em

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

        1em = 1 font-size

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

12.4 rem

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

html{
    font-size: 30px;
}
.box1{
    width: 300px;
    height: 100px;
    background-color: orange;
}
.box2{
    width: 50%;
    height: 50%;
    background-color: aqua;
}
.box3{
    font-size: 30px;
    /* width: 10em;
    height: 10em; */
    width: 10rem;
    height: 10rem;
    background-color: greenyellow;
}

13. 颜色

13.1 RGB值:

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

         red green blue

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

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

13.2 RGBA

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

        1:完全不透明

        0:完全透明

        0.5 半透明

十六进制的RGB值

        语法:#红色绿色蓝色

                颜色浓度通过 00-ff

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

                #aabbcc --> #abc

13.3 HSL值 HSLA值

H 色相(0-360)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值