当前位置: 移动技术网 > IT编程>网页制作>HTML > CSS3笔记整理

CSS3笔记整理

2020年07月17日  | 移动技术网IT编程  | 我要评论

一、CSS入门

1.什么是CSS

【人靠衣装马靠鞍】
层叠样式表(Cascading Style Sheets,缩写为 CSS), 是一种样式表语言,用来描述HTML或XML文档的呈现。
层叠:
多个样式用于修饰一个页面元素
样式表(声明块) {
color:blue;
}

2.CSS语法

		选择器(之后加空格){
					样式名:样式值;
					样式名:样式值;
			}

3.CSS可读性

		1.加空白
				div {
					color: 'red';
					font-size:'18px';
				}
				div {color:'red';font-size:'18px';}
		2.加注释
				/*注释*/
		3.采用速写
				padding:5px 10px 15px 20px;
				等价于
				padding-top:5px;
				padding-right:10px;
				padding-bottom:15px;
				padding-left:20px;

4.选择器组

				div {
						color:'red';
					}
				.one {
						color:'red';
					}
				.three {
						color:'red';
					}
				等价于:
				.one,.three {
						color:'red';
					}

				<div class ='one'>1</div>
				<div>2</div>
				<div class='three'>3</div>

5.CSS样式如何用于html文件

1)外部link导入【外部样式表】

		将样式从head标签中link标签引入
<link rel='stylesheet' href=''>

2)内部style标签【内部样式表】

	<style>

	</style>		

3)标签内部style属性【内联样式表】

	<div style='样式名:样式值;样式名:样式值;'></div>

4)@import引入

	<style>
            @import'./3-style.css';
        </style>
@import‘样式表的路径’;

结论:
1.import会破坏优先级
2.优先级最高的是内联样式表
3.link和@import的区别
1)所属范围
link是一个标签,不仅仅可以导入样式表,还可以设置rel;
rel="stylesheet"代表导入外部样式表
@import是CSS语法,只能导入样式表
2)加载顺序
link标签导入的样式是在浏览器加载html文件(标签)的同时加载
@import导入的样式是在文档加载完毕之后再去加载
文档加载完毕之前的方式
window.onload = function{}
$(function(){})
3)兼容性
link是一个html标签,没有兼容性问题
@import存在兼容性问题,IE低版本无法使用

6.CSS工作原理

1.浏览器加载HTML文件
2.浏览器解析HTML文件
如果存在CSS文件,就加载CSS文件,然后解析CSS文件
3.将解析后的CSS文件创建成DOM树进行显示

二、CSS3选择器

1)基本选择器

    1.标签选择器
    div{}
        含义:根据给定的标签名选取当前文件中所有具有该标签名的元素,设置属性
        语法:
            标签名 {
                样式名:样式值;
                样式名:样式值;
            }
        注意:
            1.标签选择器可以选中当前文件中所有具有该标签名的元素,而不是某一个
            2.不管具有该标签名的元素嵌套多少层,都可以被选中
            3.只要是html标签,都可以被用作于标签选择器
            	
    2.类名选择器
    .one {}
        含义:根据给定的类名选取当前文件中所有具有该类名的元素,设置属性
        语法:
            .类名 {
                样式名:样式值;
            }
        注意:
            1.类名选择器的类名在同一文件中允许重复
            2.类名选择器命名是有规范的
                数字、字母、下划线
                不能以数字开头
                不能以其它标签名作为类名(.div\.p\.html)
            3.同一个元素可以有多个类名
                <div class='类名一'></div>
                <div class='类名一 类名二'></div>
            4.类名选择器使用需要在类名前加上'.'
            	
    3.id选择器
    #one {}
        含义:根据给定的id选取当前文件中具有该id的元素,设置属性
        语法:
            #id {
                样式名:样式值;
            }
        注意:
            1.在同一个文件中,id的取值是唯一的
            2.同一个元素只能有一个id
            3.在使用id选择器的时候,需要在id里面加上#,不能有&nbps
                错误:# id {}
                争取:#id {}
            4.id选择器的命名规范与类名选择器一致
    4.通配选择器
    * {}
        含义:选择当前文件中所有的标签,设置属性
        语法:
            * {
                样式名:样式值;
            }
        注意:
            用于初始化页面元素的样式
    5.逗号选择器
    div, .one {}
        含义:给多个选择器同时选中的元素,设置属性
        语法:
            选择器一,选择器二,... {
                样式名:样式值;
            }
            注意:
                如果同一文件中有多个元素都需要设置同样的样式的时候,就可以使用逗号选择器【减少代码冗余】
                功能 性能
    6.组合选择器
	div .one {}

2)层次选择器

    1.子代选择器
    div > .one {}
        含义:
            先选中具有标签名一的元素,再再该元素的第一代子元素中选中具有标签名二的元素,设置属性
        语法:
            标签名一 > 标签名二 {
                样式名:样式值;
            }
        注意:
            1.子代选择器只能选中第一代,如果出现嵌套关系,无法选中
            2.在使用子代选择器的时候,要使用‘>’来连接
    2.后代选择器
    div .one {}
        含义:
            先选中具有标签名一的元素,再再该元素的所有子元素中选中具有标签名二的元素,设置属性
        语法:
            标签名一 标签名二 {
                样式名:样式值;
            }
        注意:
            1.在使用后代选择器的时候使用空格连接两个标签名
            2.子元素不论被嵌套多少个,都可以被选中
            3.标签名的取值不仅仅可以是标签,还可以是类名、id
    3.兄弟选择器
        1.相邻兄弟选择器
        div + .one {}
            含义:给指定选择器后面紧跟的那个选择器选中的标签设置属性
            语法:
                选择器一 + 选择器二 {
                        样式名:样式值;
                }
            注意:
                选择指定选择器后面紧跟的那个标签,两个标签中间不能有其他元素
        2.通用兄弟选择器
        div ~ .one {}
            含义:给指定选择器后面的选择器选中的所有标签设置属性
            语法:
                选择器一 ~ 选择器二 {
                    样式名:样式值;
                }

3)属性选择器

[type]
    [type=text]
    <input type='text'>
    <input type='password'>
        [type='password']

    [attr]
        选中具有某个属性的元素,不论其属性值为多少
    [attr=value]
        选中具有某个属性值且值为value的元素
    [attr^=value]
        选中以某个属性开始的元素
    最常用的地方
        区分input选择框

4)伪类选择器

    在其他选择器的后面使用:连接,实现特殊的效果
    1.跟状态相关
        :link /*未访问的链接
        :hover
        :active
        :visited /*已访问的链接
        :focus 聚焦状态
        2.跟子元素相关
        :first-child
        :last-child
        :nth-child(n)
            n的取值:
                数字
                    1.2.3.4.5.。。
                英文字符
                    odd/even

5)伪元素选择器

   ::after {}
    ::before {}
        1.用法:导航栏的侧边
        2.清除浮动

选择器的优先级【级联】

1)!important;
    在修改其他组件库的样式的时候使用
2)选择器的权重
    1000
        内联style
    100
        id选择器
    10
        类名选择器、属性选择器、伪类选择器
    1
        标签选择器、伪元素选择器
3)css代码顺序
    谁离选中的页面元素更近谁生效【就近原则】

选择器继承

inherit 继承父元素的样式
initial 不继承
unset   不设定

三、样式规则

1)字体样式 font

    color   字体颜色
    font-style 字体样式
        font-style: italic; 斜体
        font-style: normal; 正常字体【默认】
    font-weight 字体粗细
        normal  正常字体【默认】
        bold    粗体
        lighter 更细的
        100-900 数值越大,字体越粗
    line-height 行高
        取值等于该字体的包裹元素的高度
        <div style='height:200px;'>123</div>
        line-height:200px;//文字垂直居中
    font-size   字体大小
        浏览器默认字体大小位16px
    font-family 字体族
        字体族的名称
        ’微软雅黑‘
        ‘Microsoft YaHei’
        serif 有衬线
        sans-serif 无衬线
        fangsong 政府文件
    font
        1.必须包含font-size、font-family
        2.font-style、font-weight必须在font-size之前
        3.font-family必须在最后

        font:font-style font-weight font-size font-family;
    webfont
        @font-face
            .ttf
            1.下载ttf字体文件
            2.将文件放到相对应的目录下(项目的目录)
            3.通过@font-face引入
                @font-face {
                    font-family: 'myfont';
                    src: url(./文件名.ttf);
                }
            4.使用字体
                div {
                    font-family:myfont;
                }
        字体图标库
            iconfont、fontawesome

2)文本样式 text

    text-align 当前文本在元素中的对齐方式
    left
    center
    right
    justify
text-decoration 文本的线
    underline   下划线
    overline    上划线
    line-through    删除线
text-transform 文本变形
    capitalize  首字母大写
    uppercase   全部大写
    lowercase   小写
text-shadow 文本阴影
    px  x轴偏移量
    px  y轴偏移量
    blur    模糊程度
    color   阴影颜色
    text-shadow: 10px 5px 5px #333;

3)列表样式

    list-style:none;

4)单位

    px、n%
    1.颜色
        1.关键字
            red、black...
            color:red;
        2.十六进制颜色
            #ededed
            #333333 ==> #333
            color:#333;
        3.rgb函数
            r red
            g green
            b blue
            0-255
            color:rgb(255,255,0);
        4.rgba函数
            r red
            g green
            b blue
            0-255
            a 颜色透明度
            0-1
            color:rgba(0,0,0,0.5);

            opacity:0;隐藏
        5.渐变色
            background-image: linear-gradient(to right,red,#ccc);
            从左向右,从红色渐变到#ccc 
            
    2.尺寸
        绝对单位
            px
        相对单位
            em
                等于父元素的fontsize
                <div style='font-size:12px;'></div>

                1em = 12px
                2em = 24px
            %   相对于父元素

5)文本的水平垂直居中、子元素在父元素中水平垂直居中

    文本
        水平:text-align:center;
        垂直:line=height:父元素的高度;
    标签
        父元素
        vertical-align: middle;
        display:table-cell;
        align-items:center;
        子元素
        display:inline-block;

如何消除a标签的默认样式?

        text-decoration:none;
        color:black;
        cursor:default;
            pointer
            wait
            help
            ...

rgba和opacity的区别

        rgba会给父元素设置透明度,但是不会影响到子元素
        cpacity会给父元素设置透明度,会影响到子元素

四、布局

1)默认文档流

    1.元素在页面中显示的顺序根元素在代码中出现的顺序一致
    2.块级元素独占一行空间
    3.行内元素与其他元素共享一行空间

2)改变默认布局

1.float浮动布局

    float:left/right;
        特点:
        1)使用了浮动的元素会失去对父元素的支撑
        2)使用了浮动的元素的宽高由内容决定
        3)使用了浮动的元素在网页中原本的位置由其他的块级元素替代
        4)使用了浮动的元素会在一行从左向右排布,当前行宽度不够时,会自动换行
        用法:使元素脱离文档流,向左或者向右移动
        取值:
            left/right
        注意:
            1.宽高由内容决定
            2.使用了浮动的元素,原本的位置会被其它块级元素所替代
        *清除浮动的方式:
    1.浮动元素的父元素
        .parent::after {
            content:'';
            clear:both;
            display:block;
        }
    2.浮动元素的父元素
        .parent {
            overflow:hidden;
        }
    3.浮动元素的下一个相邻兄弟
        .one {
            content:'';
            clear:both;
        }

2.盒子模型

文档中的每个元素都可以被看作是一个矩形盒子
1)盒子属性
    width
    height
    margin 外边距
        盒子与其他盒子之间的距离
        margin-top  上外边距
        margin-right 右外边距
        margin-bottom   下外边距
        margin-left 左外边距

        margin:10px;    上下左右都为10px
        margin:5px 10px;    上下为5px,左右为10px
        margin:5px 10px 15px;上为5px 左右为10px,下为15px
        margin:5px 10px 15px 20px 上右下左
    border  边框
        border-width    边框线宽
            px
        border-style    边框样式
            solid   实现
            dotted  点状线
            dashed  虚线
            double  双实线
        border-color    边框颜色
    速写:
        border: 1px solid #ccc;
    padding 内边距
        盒子边框与内容之间的距离
    background-color    背景颜色
    background-image    背景图片
    background-repeat    背景图片重复的方式
        no-repeat
        repeat-x
        repeat-y
    background-size    背景图片尺寸
        background-size: 100% 100%;

2)盒子组成
    width,padding,border,margin
3)盒子分类
    通过box-sizing可以设置盒子的类型
    1.box-sizing:content-box;【内容盒子】【W3C标准盒子】
        width = 内容width
        所占的宽 = width +border +padding + margin
    2.box-sizing:border-box;【边框盒子】【IE盒子】
        width = 内容width +border + padding

3.定位布局

position
用法:
    当一个元素悬挂在另一个元素之上时,一般采用定位布局
案例:
    模态框、二级下拉菜单
特点:
    1)元素可能会脱离文档流
    2)可以使用left、right、top、bottom来描述元素的位置
    3)
取值:
    static  静态布局    【默认值】
    relative    相对定位
        1)不脱离文档流
        2)参考点:相对于当前元素的原本位置
    absolute    绝对定位
        1)不脱离文档流
        2)参考点:相对于当前元素的父定位元素,如果父元素中没有定位元素,则相对于浏览器视口
    
       

    fixed   固定定位
        1)脱离文档流
        2)参考点:相对于浏览器视口
    sticky  粘滞定位
         1)不脱离文档流
        2)参考点:相对于当前元素的父定位元素,如果父元素中没有定位元素,则相对于浏览器的视口
            position:sticky;
            top:100px;

拓展:1.网页中有两个嵌套关系的盒子,外层盒子和内层盒子之间有一定的距离,如何设置?
1.将子元素设置为相对定位
position:relative;
top:50px;
2.给父元素设置上内边距
padding-top: 50px;
box-sizing: border-box;
3.给子元素设置浮动
float:left;
margin-top:50px;
4.子元素设置绝对定位,父元素设置相对定位
子元素
position:absolute;
top:50px;
父元素
position:relative;

2)子元素在父元素中水平垂直居中?

            1.父元素设置相对定位,子元素设置绝对定位
                子元素
                    top:0;
                    left:0;
                    right:0;
                    bottom:0;
                    margin:auto;
            2.父元素设置相对定位,子元素设置绝对定位
                子元素
                    left:50%;
                    top:50%;
                    margin-left: -当前元素宽度的一半;
                    margin-top: -但钱元素高度的一半;
            3.设置display:table-cell;

4.伸缩盒布局

            	作用:响应式布局 --> 手机端开发
用法与浮动布局类似,都是将子元素在父元素中列/行排布

属性
    display:flex;  将盒子设置为伸缩盒
    flex-direction  主轴的方向
        collumn 行布局  子元素会在y轴方向上排布
        row     列布局  【默认值】,子元素会在x轴方向上排布
    flex-wrap   设置换行
        当所有子元素的宽/高超出父元素的宽/高的时候,设置换行
            wrap    超出时换行
            nowrap  超出时不换行    【默认值】
    flex 速写
        flex-basis  指定了 flex 元素在主轴方向上的初始大小
        flex-grow   指定了flex容器中剩余空间的多少应该分配给项目(flex增长系数)
        flex-shrink 指定了 flex 元素的收缩规则
    align-items
        center  在交叉轴上居中显示
    justify-content
        center  在主轴上居中显示
    注意:
        1.父元素需要在主轴方向上有固定的宽/高,供子元素分配
            flex-basis  
        2.子元素的默认宽/高会在交叉轴上占满父元素
            主轴为x轴的时候,子元素的默认高度会占满父元素
            主轴为y轴的时候,子元素默认的宽度会占满父元素

六、动画

1)介绍
    1.动画是CSS3新增,所以可能存在兼容性问题
    2.动画是通过keyframes来定义
    3.动画不需要任何js基础
2)语法
    1.动画的定义
        一定要写在style标签内部
        在一个文件内可以同时定义多个动画
        @keyframes 动画名称 {
            from{

            }//from是关键帧,动画的开始
            to {

            }//to是关键帧,动画的结束
        }
        ==>等价于
        @keyframes  test {
            0% {

            }
            25% {

            }
            50% {

            }
            75% {

            }
            100% {

            }
        }
        使用百分数的好处,可以规定动画执行过程中某一个阶段的样式
    2.动画的使用
        极简形式
            只要设置动画名称和动画时间即可让动画执行
        在需要使用动画的元素上引用,在样式表内部
        div {
            margin:10px;
            animation-name:test;
            animation-duration:2s;
        }
        animation-name  动画名称
            animation-name:test;
            animation-duration  动画的运行时间
                单位:秒
            animation-delay: 2s;    动画的延迟
                单位:秒
                文件首次打开时多少秒再执行动画
            animation-direction:    动画的方向
                reverse ;   反方向

                alternate ;     交替反转
            animation-iteration-count:      动画执行的次数
                infinite;    动画无限次播放
                n   n是一个整数,表示动画执行N次
            animation-fill-mode:    动画结束时元素显示位置 
                backwards;  动画开始的位置【默认值】
                forwards    动画结束的位置
            animation-timing-function:  动画的速度曲线
                linear ;    匀速
                ease-in     先慢后快
                ease-out    先快后慢
                ease-in-out     先慢后快再慢
                steps(n);   n是一个整数,逐帧播放
            animation-play-state:
                running;    播放【默认值】
                paused ;    暂停
            animation速写
                animation:
                animation-name 
                animation-duration 
                animation-timing-function 
                animation-delay 
                animation-iteration-count 
                animation-direction 
                animation-fill-mode 
                animation-play-state 
                等价于
                animation: move 5s linear infinite forwards;

参考文档:https://developer.mozilla.org/zh-CN/

本文地址:https://blog.csdn.net/yanxuanrende/article/details/107377689

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网