CSS3学习笔记

CSS3笔记

Writing In The Front:

@Auther:纸箱里的猫

@Description:CSS3自用学习笔记

@Last Updated Date:2021.7.20

@Learning Completion Date:2021.7.8—7.9

@Writing The Software:Typora


目录

1. 什么是CSS

1.1 CSS是什么

Cascading Style Sheet (层叠级联样式表)

Hyper Text Markup Language(超文本标记语言)

CSS:表现(美化网页)

字体,颜色,边距,高度,宽度,背景图片,网页定位,网页浮动等


1.2 CSS的发展史

CSS1.0

CSS2.0 DIV(块)+CSS,HTML与CSS结构分离的思想,SEO(搜索引擎优化)

CSS2.1 浮动,定位

CSS3.0 圆角,阴影,动画… 浏览器兼容性


1.3 快速入门

style

基础入门

规范,style编写CSS的代码,每一个声明最好使用分号结尾
语法:
选择器{
声明1;
声明2;
声明3;
}

<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!-- 规范,<style>编写CSS的代码,每一个声明最好使用分号结尾
    语法:
        选择器{
            声明1;
            声明2;
            声明3;
        }
    -->
    <style>
        h1{
            color: red;
        }
    </style>

</head>
<body>

<h1>我是标题</h1>

</body>

推荐写法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8HrEVug-1626771276077)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210708090427328.png)]

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

1.4 CSS的优势

1.内容和表现分离

2.网页结构表现同一,可以实现复用

3.样式十分的丰富

4.建议使用独立于html的css文件

5.利于SEO,容易被搜索引擎收录


1.5 CSS的3种导入方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--    内部样式-->
    <style>
        h1{
            color: aqua;
        }
    </style>
    <!--    外部样式-->
    <link rel="stylesheet" href="css/style.css">
</head>
<body>

<!--优先级:就近原则-->
<!--行内样式:在标签元素中,编写一个style属性,编写样式即可-->
<h1 style="color: red"></h1>

</body>
</html>

拓展:外部样式两种写法,一般使用链接式

rel 属性是必须的,规定当前文档与被链接文档/资源之间的关系。

  • 链接式:

    html

    <!--    外部样式-->
        <link rel="stylesheet" href="css/style.css">
    
  • 导入式:

    @import是css2.1特有的

    <style>
        /*导入式*/
        /*@import url("css/style.css");*/
    </style>
    

2. 选择器

作用:选择页面上的某一个或者某一列元素

2.1 基本选择器

1.标签选择器

选择一类标签 标签{}

/标签选择器,会选择到页面上所有的这个标签的元素,标签{}/

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*标签选择器,会选择到页面上所有的这个标签的元素*/
        h1{
            color: red;
            background: aqua;
            border-radius: 10px;
        }
        p{
            font-size: 80px;
        }
    </style>

</head>
<body>

    <h1>学Java</h1>
    <h1>学Java</h1>

    <p>123</p>
</body>
</html>
2.类选择器 class

选择所有class属性一致的标签,跨标签 .类名{}

/*类选择器的格式 .class的名称{}
好处:可以多个标签归类,是用一个class,可以复用
*/

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*类选择器的格式   .class的名称{}
        好处:可以多个标签归类,是用一个class,可以复用
        */
        .style1{
            color: antiquewhite;
        }
        .style2{
            color: blue;
        }
    </style>

</head>
<body>

    <h1 class="style1">标题1</h1>
    <h1 class="style2">标题2</h1>
    <h1 class="style1">标题3</h1>

</body>
</html>
3.id选择器

全局唯一 #id名{}

/*id选择器 : id必须保证全局唯一
#id名称{}
优先级:
不遵循就近原则,固定的
id选择器 > class选择器 > 标签选择器
*/

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*id选择器 : id必须保证全局唯一
            #id名称{}
            优先级:
            不遵循就近原则,固定的
            id选择器 > class选择器 > 标签选择器
        */
        #id1{
            color: antiquewhite;
        }
    </style>

</head>
<body>

    <h1 id="id1">标题1</h1>
    <h1>标题2</h1>
    <h1>标题3</h1>
    <h1>标题4</h1>
    <h1>标题5</h1>

</body>
</html>

优先级:
不遵循就近原则,固定的
id选择器 > class选择器 > 标签选择器

2.2 层次选择器

1.后代选择器

在某个元素的后面

/*后代选择器*/body ul{    background: antiquewhite;}
2.子选择器

一代

/*子选择器*/body>p{    background: red;}
3.相邻兄弟选择器

同辈

/*相邻兄弟选择器: 只有一个,相邻(向下)*/.active + p{    background: red;}
4.通用选择器
/*!*通用兄弟选择器,当前选中元素的向下的所有兄弟元素*!*//*.active ~ p{*//*    background: red;*//*}*/

2.3 结构伪类选择器

伪类:伪类用于定义元素的特殊状态。

例如,它可以用于:

  • 设置鼠标悬停在元素上时的样式
  • 为已访问和未访问链接设置不同的样式
  • 设置元素获得焦点时的样式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-izEO2FNH-1626771276079)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210708111258978.png)]


2.4 属性选择器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nsG05G9r-1626771276081)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210708141338796.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fodTRqMD-1626771276083)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210708141403926.png)]


3. 美化网页元素

3.1 为什么要美化网页

1.有效的传递页面信息

2.美化网页,页面漂亮,才能吸引用户

3.凸显页面的主题

4.提高用户的体验

span标签:重点要突出的字,使用span套起来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1GhdTqTe-1626771276084)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210708143239866.png)]

3.2 字体样式

<!--font-family:字体font-size:字体大小font-weight:字体粗细color:字体颜色px:像素--><style>    body{        font-family: Arial;        color: antiquewhite;    }    h1{        font-size: 50px;    }    .p1{        font-weight: bold;    }</style>

3.3 文本样式

1.颜色 color rgb rgba

2.文本对齐的方式 text-align = center

3.首行缩进 text-indent: 2em

4.行高 line-height 单行文字上下居中line-height = height

5.装饰(下划线)

text-decoration: underline; 下划线
text-decoration: line-through; 中
text-decoration: overline; 下
text-decoration: none; 超链接去下划线

6.文本图片水平对齐 vertical-align:middle

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <!--    text-align:排版    text-indent: 2em 首行缩进    height: 300px;    line-height: 300px;        行高和 块的高度一致,就可以上下居中    text-decoration: underline; 下划线    text-decoration: line-through;  中    ext-decoration: overline;   下    -->    <style>        h1{            color: aquamarine;            text-align: center;        }        p{            text-indent: 2em;        }        .p1{            background: bisque;            height: 300px;            line-height: 300px;            text-decoration: underline;            text-decoration: line-through;            text-decoration: overline;        }    </style></head><body><p>123456789</p><h1>最新疫情</h1><p >    中新网7月8日电 据云南卫健委官方微信消息,7月7日0时至24时,云南省新增本土确诊病例2例(为7月6日无症状感染者转为确诊病例)。新增境外输入无症状感染者1例。</p><p class="p1">    截至7月7日24时,云南省现有确诊病例92例(本土23例,境外输入69例),无症状感染者15例(境外输入),均在定点医疗机构隔离治疗和医学观察。</p></body></html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NuHmAaS8-1626771276085)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210708151008563.png)]

3.4 超链接伪类

a:hover

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        /*默认的颜色*/        a{            text-decoration: none;            color: black;        }        /*鼠标悬浮的状态*/        a:hover{            color: blue;            font-size: 30px;        }        /*鼠标按住未释放的状态*/        a:active{            color: aquamarine;        }        /*a:visited{*/        /*    color: brown;*/        /*}*/        /*text-shadow: 水平偏移,垂直便宜,阴影半径*/        .style1{            text-shadow: 5px 5px 5px #FF0000;        }    </style></head><body><a href="#">    <img src="../4.超链接伪类/images/a.png" alt="amy" width="400px" height="200px"></a><p>    <a href="#">明日方舟</a></p><p>    <a href="#">amy</a></p><p class="style1">    123456</p></body></html>

3.5 阴影

/*text-shadow: 水平偏移,垂直便宜,阴影半径*/.style1{    text-shadow: 5px 5px 5px #FF0000;}

3.6 列表

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <link rel="stylesheet" href="../5.列表/css/style.css"></head><body><div id="nav"><h2 class="title">全部商品分类</h2><ul>    <li>        <a href="#">图书</a>&nbsp;<a href="#">音像</a>&nbsp;<a href="#">数字商品</a>    </li>    <li>        <a href="#">家用电器</a>&nbsp;<a href="#">手机</a>&nbsp;<a href="#">数码</a>    </li>    <li>        <a href="#">电脑</a>&nbsp;<a href="#">办公</a>    </li>    <li>        <a href="#">家居</a>&nbsp;<a href="#">家装</a>&nbsp;<a href="#">厨具</a>    </li>    <li>        <a href="#">服饰鞋帽</a>&nbsp;<a href="#">个性化妆</a>    </li>    <li>        <a href="#">礼品箱包</a>&nbsp;<a href="#">钟表</a>&nbsp;<a href="#">珠宝</a>    </li>    <li>        <a href="#">食品饮料</a>&nbsp;<a href="#">保健食品</a>    </li>    <li>        <a href="#">彩票</a>&nbsp;<a href="#">旅行</a>&nbsp;<a href="#">充值</a>&nbsp;<a href="#">票务</a>    </li>    </ul></div></body></html>
#nav{    width: 300px;    background: burlywood;}.title{    font-size: 18px;    font-weight: bold;    text-indent: 1em;    line-height: 35px;    background: antiquewhite;}/*ul li*//*list-style:    none:去掉圆点    circle:空心圆    decimal:数字    square:正方形*/ul{    background: burlywood;}ul li{    line-height: 35px;    list-style: none;    text-indent: 1em;}a{    text-decoration: none;    font-size: 20px;    color: black;}a:hover{    color: aquamarine;    text-decoration: underline;}

3.7 背景

背景颜色

背景图片

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        div{            width: 1000px;            height: 700px;            border: 1px solid red;            background-image: url("../6.背景/image/a.png");            /* 默认是全部平铺的  repeat */        }        .div1{            /*            repeat-x    水平平铺            repeat-y    垂直平铺            no-repeat   不平铺            */            background-repeat: no-repeat;        }    </style></head><body>    <div class="div1"></div>    <div class="div2"></div>    <div class="div3"></div></body></html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eWo1e9xh-1626771276085)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210708165452462.png)]

3.8 渐变

https://www.grabient.com/

background-color: #4158D0;background-image: linear-gradient(43deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);

4. 盒子模型

4.1 什么是盒子

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TqdwodMm-1626771276086)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709084815746.png)]

margin:外边距

padding:内边距

border:边框

4.2 边框

1.边框的粗细

2.边框的样式

3.边框的颜色

/border:粗细 样式 颜色/
#box{
border: 1px solid red;
}

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        /*body总有一个默认的外边距margin:0,常见操作            h1,ul,li,a,body{            margin: 0;            padding: 0;            text-decoration: none;        }        */        h1,ul,li,a,body{            margin: 0;            padding: 0;            text-decoration: none;        }        /*border:粗细 样式 颜色*/        #box{            width: 300px;            border: 1px solid red;        }        h2{            font-size: 16px;            background: antiquewhite;            line-height: ;        }        form{            background: #FFCC70;        }        div:nth-of-type(1)>input{            border: 3px solid black;        }        div:nth-of-type(2)>input{            border: 3px dashed fuchsia;        }        div:nth-of-type(3)>input{            border: 3px solid aquamarine;        }    </style></head><body><div id="box">    <h2>会员登录</h2>    <form action="#">        <div>            <span>用户名:</span>            <input type="text">        </div>        <div>            <span>密码:</span>            <input type="text">        </div>        <div>            <span>邮箱:</span>            <input type="text">        </div>    </form></div></body></html>

4.3 内外边距

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gd0OZdom-1626771276086)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709093341281.png)]

盒子的计算方式:

margin+border+padding+内容宽度

4.4 圆角边框

4个角

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JpYfrKeP-1626771276087)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709105141404.png)]

4.5 盒子阴影

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sWuBTWk3-1626771276087)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709105015455.png)]


5. 浮动

5.1 标准文档流

块级元素:独占一行

h1-h6	p	div	列表

行内元素:不独占一行

span	a	img	strong

行内元素 可以被包含在 块级元素中,反之不可以

5.2 display

<!--block   块元素inline  行内元素inline-block    是块元素,但是可以内联,在一行none    -->    <style>        div{            width: 100px;            height: 100px;            border: 1px solid red;            display: inline;        }        span{            width: 100px;            height: 100px;            border: 1px solid red;            display: inline-block;        }    </style>

这个也是实现行内元素排列的方式,但是我们很多情况都是用float

5.3 Float

左右浮动 float

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LLueB9vl-1626771276088)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709143338919.png)]

5.4 父级边框塌陷的问题

clear

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZmk4JQm-1626771276088)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709144454072.png)]

解决方案:

1. 增加父级元素的高度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OoXjp30r-1626771276089)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709145110039.png)]

2. 增加一个空的div

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ES3XIyzi-1626771276089)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709145143220.png)]

3. overflow

在父级元素中增加一个overflow:hidden;

4. 在父类添加一个伪类 after

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wbvi7cI-1626771276089)(C:\Users\10512\AppData\Roaming\Typora\typora-user-images\image-20210709150928510.png)]

5.小结

1.浮动元素增加空div

​ 简单,代码中尽量避免空div

2.设置父元素的高度

​ 简单,元素假设有了固定的高度,就会被限制

3.overflow

​ 简单,下拉的一些场景避免使用

4.父类添加一个伪类:after(推荐)

​ 写法稍微复杂一点,但是没有副作用,推荐使用!

5.5 对比

display

​ 方向不可控制

float

​ 浮动起来的话会脱离标准文档流,所以要解决父级边框塌陷的问题


6. 定位

6.1 相对定位

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <!--    相对定位            相对于自己原来的位置进行偏移    -->    <style>        body{            padding: 20px;        }        div{            margin: 10px;            padding: 5px;            font-size: 12px;            line-height: 25px;        }        #father{            border: 1px solid #666;        }        #first{            background-color: #FFCC70;            border: 1px dashed #db2c2c;            position: relative; /*相对定位:上下左右*/            top: -20px;            left: 20px;        }        #second{            background-color: #FFCC69;            border: 1px solid rebeccapurple;        }        #third{            background-color: #FFCC68;            border: 1px solid aquamarine;            position: relative;            buttom: -10px;            right: 20px;        }    </style></head><body><div id="father">    <div id="first">第一个盒子</div>    <div id="second">第二个盒子</div>    <div id="third">第三个盒子</div></div></body></html>

相对定位:position: relative;

相对于原来的位置,进行指定的偏移,相对定位的话,它仍然在标准文档流中,原来的位置会被保留

top: -20px;left: 20px;buttom: -10px;right: 20px;

练习

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        #box{            width: 300px;            height: 300px;            padding: 10px;            border: 2px solid red;        }        a{            width: 100px;            height: 100px;            text-decoration: none;            background: #C850C0;            line-height: 100px;            text-align: center;            color: white;            display: block;        }        a:hover{            background: #4158D0;        }        .a2,.a4{            position: relative;            left: 200px;            top: -100px;        }        .a5{            position: relative;            left: 100px;            top: -300px;        }    </style></head><body>    <div id="box">        <a class="a1" href="#">链接1</a>        <a class="a2" href="#">链接2</a>        <a class="a3" href="#">链接3</a>        <a class="a4" href="#">链接4</a>        <a class="a5" href="#">链接5</a>    </div></body></html>

6.2 绝对定位

定位:基于xxx定位,上下左右

1没有父级元素定位的前提下,相对于浏览器定位

2假设父级元素存在定位,我们通常会相对于父级元素进行偏移

3在父级元素范围内移动

相对于父级或浏览器的位置,进行指定的偏移,绝对定位的话,它仍然在标准文档流中,原来的位置不会被保留

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        div{            margin: 10px;            padding: 5px;            font-size: 12px;            line-height: 25px;            position: relative;        }        #father{            border: 1px solid #666;        }        #first{            background-color: #FFCC70;            border: 1px dashed #db2c2c;        }        #second{            background-color: #FFCC69;            border: 1px solid rebeccapurple;            position: absolute;            left: 100px;        }        #third{            background-color: #FFCC68;            border: 1px solid aquamarine;        }    </style></head><body><div id="father">    <div id="first">第一个盒子</div>    <div id="second">第二个盒子</div>    <div id="third">第三个盒子</div></div></body></html>

6.3 固定定位

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        body{            height: 1000px;        }        div:nth-of-type(1){/*绝对定位:相对于浏览器*/            width: 100px;            height: 100px;            background: red;            position: absolute;            right: 0;            buttom: 0;        }        div:nth-of-type(2){/*fixed,固定定位*/            width: 50px;            height: 50px;            background: yellow;            position: fixed;        }    </style></head><body><div>div1</div><div>div2</div></body></html>

6.4 z-index

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <link rel="stylesheet" href="style.css"></head><body>    <div id="content">        <ul>            <li>                <img src="images/1.jpg" alt="">            </li>            <li class="tipText">                激情悍匪,在线蹦迪            </li>            <li class="tipBg">            </li>            <li>                时间:2021-7-9            </li>            <li>                地点:zkwx            </li>        </ul>    </div></body></html>
opacity: 0.5;/*透明度*/
#content{    width: 280px;    padding: 0px;    margin: 0px;    overflow: hidden;    font-size: 12px;    line-height: 25px;    border: 1px solid black;}ul,li{    padding: 0px;    margin: 0px;    list-style: none;}/*父级元素相对定位*/#content ul{    position: relative;}.tipText,.tipBg{    position: absolute;    width: 380px;    height: 25px;    top: 260px;}.tipText{    z-index: 999;    color: aqua;}.tipBg{    background: black;    opacity: 0.5;/*透明度*/    /*filter: alpha(opacity=0.5);*//*透明度  过时了*/}

7. 动画(待补充)

不做重点

canvans模板

8. CSS3总结

CSS3总结.xmind


Extra1.自学视频教程链接

https://www.bilibili.com/video/BV1YJ411a7dy

Extra2.修改及备注

21.7.12 1.重新排版

21.7.16 1.增加rel 属性描述

21.7.20 1.增加了【Writing In The Front】的描述 2.增加Extra章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值