CSS从入门到入魔笔记······

1、什么是CSS

        Cascading Style Sheet        翻译为:层叠样式列表

前端三层
语言功能
结构层HTML搭建结构、放置部件、描述语义
样式层CSS美化页面、实现布局
行为层JavaScript实现交互效果、数据收发、表单验证等

2、CSS的作用

        结构与样式分离的方式,便于后期维护与改版

        可以用多套样式,使网页有任意样式切换的效果

        使页面载入更快、降低服务器的成本

3、CSS书写位置

        内嵌式在学习CSS时,最常使用内嵌式,顾名思义,内嵌在.html件中,在<head></head>标签对中,书写<style></style>标签对,在里面书写CSS语句。

        外链式:可以将CSS单独存为.css文件,然后使用<link>标签引入它:<link rel="stylesheet" href="css.css">,外链式的优点:多个html网页,可以共用一个css样式表文件。

        行内式:样式可以直接通过style属性写在标签身上:<h2 style="color: red;">我是二级标题</h2>,行内式牺牲了样式表的批量设置样式的能力,只能给一个标签设置样式,所以不常用,后台工程师较常用行内式。

        导入式:导入式是最不常见的样式表导入方法:<style>@import url(css/css.css);</style>,使用导入式引入的样式表,不会等待css文件加载完毕,而是会立即渲染HTML结构,所以页面会有几秒中的“素面朝天”的时间

4、CSS样式文件结构

p{
    background-color:red;
    font-size:26px;
}                        #p为样式选择器,background-color为属性,red为属性值,:为分隔符
<head>
    <meta charset="UTF-8">
    <title>层叠样式表</title>
    <style type="text/css">
        p{
           /*设置背景颜色和字号*/
            background-color:red;
            font-size:26px;
        } 
    </style>
</head>
<body>
    <p>你好</p>
    <p>世界</p>
</body>

5、什么是选择器

        选择器是用来选择(找到)需要添加样式的位置

        常用的选择器有标签选择器、类选择器等

        5.1、标签选择器也称元素选择器、类型选择器,它直接使用元素的标签名当做选择器,将选择页面上所有该种标签,无论这个标签所处位置的深浅。标签选择器“覆盖面”非常大,所以通常用于标签的初始化。

        5.2、标签可以有id属性,是这个标签的唯一标识 id的名称只能由字母、数字、下划线、短横构成,且不能以数字开头,字母区分大小写,但习惯上一般为小写字母,同一个页面上不能有相同id的标签。CSS选择器可以使用井号#前缀,选择指定id的标签

        5.3、class属性表示“类名”,类名的命名规范和id的命名规范相同。使用点.前缀选择指定class的标签,多个标签可以为相同类名,同一个标签可以同时属于多个类,类名用空格隔开

        5.4、原子类在做网页项目前,可以将所有的常用字号、文字颜色、行高 、外边距、内边距等都先设置为单独的类。HTML标签就可以“按需选择”它的类名了,这样可以非常快速的添加一些常见样式

        5.5、复合选择器

复合选择器
选择器名称示例示例的意义
后代选择器.box .spec选择类名为box的标签内部的类名为spec的标签
交集选择器li.spec选择既是li标签,也属于spec类的标签
并集选择器ul, ol选择所有ul和ol标签

        后代选择器:CSS选择器中,使用空格表示“后代”,“后代”并不一定是“儿子”,后代选择器可以有很多空格,隔开好几代

        交集选择器:选择有.spec类的h3标签,此时应该使用交集选择器:h3.spec { font-style: italic;}

        并集选择器:并集选择器也叫作分组选择器,逗号表示分组:ul, ol { list-style: none; }

        复合选择器: 选择器可以任何搭配、结合,从而形成复合选择器,我们必 须要能一目了然的看出选择器代表的含义。
        伪类 伪类是添加到选择器的描述性词语, 指定要选择的元素的特 殊状态 ,超级链接拥有4个特殊状态
伪类意义
a:link没有被访问的超级链接
a:visited已经被访问过的超级链接
a:hover正在被鼠标悬停的超级链接
a:active正在被激活的超级链接(按下但没松开鼠标)

        a标签的伪类书写,要按照“爱恨准则”的顺序,否则会有伪类不生效:

        LOVE HATE : link  : visited   : hover   : active

        5.6、CSS3新增选择器
元素关系选择器
名称举例意义
子选择器div>pdiv的子标签p
相邻兄弟选择器img+p图片后面紧跟着的p段落将被选中
通用兄弟选择器p~spanp元素之后的所有同层级的span元素

        子选择器:当使用 > 符号分隔两个元素时,它只会匹配那些作为第一 个元素的直接后代元素,即两个标签为父子关系。后代选择器不一定是子元素。

        相邻兄弟选择器:相邻兄弟选择器 (+) 介于两个选择器之间,当第二个元素紧跟在第一个元素之后,并且两个元素都是属于同一个父元素的子元素,则第二个元素将被选中。说白了,a+b就是选择“紧跟在a后面的一个b”。

        通用选择器:通用兄弟选择器(~),a~b 选择a元素之后所有同层级b元素。

        序号选择器:

序号选择器
举例意义
:first-child第一个子元素
:last-child最后一个子元素
:nth-child(x)第x个子元素
:nth-of-type(x)第x个某类型子元素
:nth-last-child(x)倒数第x个子元素
:nth-last-of-type(x)倒数第x个某类型子元素

        :first-child表示“选择第一个子元素”。

        :last-child表示“选择最后一个子元素”。

        :nth-child()可以选择任意序号的子元素。

        :nth-child()可以写成an + b的形式,表示从b开始每a个选一个,注意不能写为b + an,例:2n+1等价于odd,表示奇数、2n等价于even,表示偶数。

        :nth-of-type()将选择同种标签指定序号的子元素。

         :nth-last-child()和:nth-last-of-type()都是倒数选择。
        属性选择器
属性选择器
举例意义
img[alt]选择有alt属性的img标签
img[alt="故宫"]选择alt属性是故宫的img标签
img[alt^="北京"]选择alt属性以北京开头的img标签
img[alt$="雪景"]选择alt属性以雪景结尾的img标签
img[alt~="相机"]选择alt属性中有空格隔开的相机字样的img标签
img[alt*="雨"]选择alt属性中含有雨字的img标签
img[alt|="参赛作品"]选择alt属性以“参赛作品-”开头的img标签

        5.7、CSS3新增伪类

CSS3新增伪类
伪类意义
:empty选择空标签
:focus选择当前获得焦点的标签
:enabled选择当前有效的表单元素
:disabled选择当前无效的表单元素
:checked选择当前已经勾选的单选按钮或着复选框
:root选择根元素,即<html>标签

        ::before和::after:::before 创建一个伪元素,其将成为匹配选中的元素的第一个子元素,必须设置 content 属性表示其中的内容。::after 创建一个伪元素,其将成为匹配选中的元素的最后一个子元素,必须设置 content 属性表示其中的内容。

        ::section:::selection CSS伪元素应用于文档中被用户高亮的部分(使用鼠标圈选的部分)。

         ::first-letter 会选中某元素中(必须是块级元素)第一 行的第一个字母。
         ::first-line 会选中某元素中(必须是块级元素)第一行 全部文字。

6、文本与字体属性

        6.1、常用文本样式属性
        color:color 属性可 设置文本内容的前景色, color 属性主要可以用英语单词、十六进制、rgb()、rgba()【最后一位可以设置透明度】 等表示法。
         十六进制表示法是所有 设计软件中都通用的颜色表示法 ,设 计师给我们的设计图上面标注的颜色,通常为十六进制表示 color: #ff0000;   十六进制 ff 就是十进制的255,每种颜色分量都是0~255
的数字。如果颜色值是#aabbcc的形式,可以简写为#abc。
         颜色也可以用 rgb() 表示法: color: rgb( 255, 0, 0);

        颜色也可以用rgba()表示法,最后一个参数表示透明度,介01之间,0表示纯透明,1表示纯实心。例:color: rgba(255, 0, 0, .65);
        font-size属性用来设置字号,单位通常为px。此外还有emrem单位。网页文字正文字号通常是16px,浏览器最小支持10px字号。例:font-size: 30px;

        font-weight属性设置字体的粗细程度,通常就用normal和bold两个值,font-weight:normal;表示正常粗细,与400等值。font-weight:bold;表示加粗,与700等值。

        font-style属性设置字体的倾斜,通常用normal和italic两个值,font-style: normal;表示取消斜体,可以把天生倾斜的i、em等标签设置为不倾斜。font-style: italic;设置为倾斜字体。

        text-decoration属性用于设置文本的修饰线外观的(下划线、删除线),有三个属性值:text-decoration: none;表示没有修饰线,text-decoration: underline;下划线,text-decoration: line-through;删除线。

        font-family属性用于设置字体,字体可以是列表形式,一般英语字体放到前面,后面的字体

是前面的字体的“后备”字体: font-family : serif, "Times New Roman", " 微软雅黑 " ;( 字体名称中有空格,必须用引号包裹 )。
        定义字体: 字体文件根据操作系统和浏览器不同,有 eot woff2 woff ttf svg 文件格式,需要同时有这 5 种文件
        当我们拥有字体文件之后,就可以用@font-face 定义字体
@font-face {
    font-family: '字体名称';
    font-display: swap;
    src: url('eot字体文件地址');
    src: url('eot字体文件地址') format('embedded-opentype'),
        url('woff2字体文件地址') format('woff2'),
        url('woff字体文件地址') format('woff'),
        url('ttf字体文件地址') format('truetype'),
        url('svg字体文件地址') format('svg');
   }
        阿里巴巴提供了一套免费商用授权的 普惠字体,网址https://www.iconfont.cn/webfont。使用阿里巴巴普惠字体也省去了下载字体的麻烦

        6.2、段落和行相关属性
        text-indent属性定义首行文本内容之前的缩进量,缩进两个字符应该写作:text-indent: 2em;(em表示字符宽度)

        line-height属性用于定义行高,属性的单位可以是以px为单位的数值 :line-height: 30px;属性也可以是没有单位的数值,表示字号的倍数 ,这是最推荐的写法:line-height: 1.5;属性也可以是百分数,表示字号的倍数line-height: 150%;

        单行文本垂直居中:设置行高=盒子高度,即可实现单行文本垂直居中,设置text-align: center,即可实现文本水平居中。

        font属性可以用来作为font-style, font-weight, font-size, line-height和font-family属性的合写,例:font: 20px/1.5 Arial, "微软雅黑";(字号/行高 字体)。font: italic bold 20px/1.5 Arial, "微软雅黑";(倾斜 加粗 字号/行高 字体)

        6.3、继承性:文本相关的属性普遍具有继承性,只需要给祖先标签设置,即可在后代所有标签中生效。包括:• color  • font- 开头的 • list- 开头的 • text- 开头的 • line- 开头的。因为文字相关属性有继承性,所以通常会设置body标签的字号、颜色、行高等,这样就能当做整个网页的默认样式了。

        在继承的情况下,选择器权重计算失效,而是“就近原则”

7、盒模型

        所有HTML标签都可以看成矩形盒子,由width、height、padding、border构成,称为“盒模型 

    

         width、height不是盒子总宽高, 盒子的总宽度 = width + 左右padding + 左右border。
盒子的总高度 = height + 上下padding + 上下border。
         width属性表示盒子 内容的宽度 width属性的单位通常是px ,移动端开发也会涉及百分数、
rem等单位。 当块级元素(div、h系列、li等)没有设置width属性时,它 将自动撑满 ,但这并不意味着width可以继承。
         height属性表示盒子 内容的高度 height属性的单位通常是px ,移动端开发也会涉及百分数、
rem等单位, 盒子的height属性如果不设置,它将自动被其内容撑开 ,如 果没有内容,则height默认是0
        7.1、padding 是盒子的内边距,即盒子边框内壁到文字的距离。盒模型四个方向的padding,可以分别用小属性进行设置
小属性意义
padding-top上padding
padding-right有padding
padding-bottom下padding
padding-left左padding

        padding的四数值写法:padding属性如果用四个数值以空格隔开进行设置,分别表示上、右、下、左的padding,例:padding: 10px 20px 30px 40px;

        padding的三数值写法:padding属性如果用三个数值以空格隔开进行设置,分别表示上、左和右、下的padding,例:padding: 10px 20px 30px;

         padding的二数值写法 padding 属性如果用二个数值以空格隔开进行设置,分别表
示上下、左右的padding,例: padding : 10px 20px ;
        灵活设置: 请思考这个盒模型的 padding ,应该怎么设置最快呢? 
                                        
        padding : 40px padding-bottom : 0 ; 用小属性层叠大属性
        7.2、margin是盒子的外边距,即盒子和其他盒子之间的距离。
        
        margin也有四个方向
小属性意义
margin-top上margin,“向上踹”
margin-right右margin,“向右踹”
margin-bottom下margin,“向下踹”
margin-left左margin,“向左踹”
        margin的塌陷: 竖直方向的margin有塌陷现象 :小的margin会塌陷到大的margin中,从而margin不叠加,只以大值为准。       
        一些元素(比如body、ul、p等)都有默认的margin,在开始制作网页的时候,要将他们清除。 * { margin: 0; padding: 0;}      通配符有效率问题 应该使用并集选择 body, ul, p { margin: 0; padding: 0;}
         盒子的水平居中: 将盒子左右两边的margin都设置为auto,盒子将水平居中 
        .box { margin : 0 auto ; }, 文本居中是text-align: center; 和盒子水平居中是两个概念。盒子的垂直居中,需要使用绝对定位技术实现   
   
        将盒子添加了 box-sizing: border-box; 之后,盒子的width 、height数字就表示盒子实际占有的宽高(不含margin)了,即 padding、border变为“内缩”的,不再“外扩”。

 .box {box-sizing: border-box; width: 200px; height: 200px; border: 10px solid #000; padding: 10px; }

        box-sizing属性大量应用于移动网页制作中,因为它结合百分比布局、弹性布局等非常好用,在PC页面开发中使用较少。

        7.3、display属性:行内元素和块级元素

display属性类型是否并排显示是否能设置宽高当不设置width属性时举例
块级元素width自动撑满div、section、header、h系列、li、ul等
行内元素width自动收缩a、span、em、b、u、i、等
        img和表单元素是特殊的 行内块 ,它们既能够设置宽度高度,也能够并排显示。
         行内元素和块级元素的相互转换:
         使用 display:block; 即可将元素 转为块级元素。
        使用 display:inline; 即可将元素 转为行内元素 ,将元素转为行内元素的应用不多见。
        使用 display:inline-block; 即可将元素 转为行内块。
         元素的隐藏:
        使用display: none; 可以将元素隐藏, 元素将彻底放弃位置 ,如同没有写它的标签一样。         
        使用visibility: hidden; 可以也可以将元素隐藏, 但是元素不放弃自己的位置。

        7.4、浮动用来实现并排:用浮动用来实现并排。

                                

        浮动使用要点:要浮动,并排的盒子都要设置浮动。父盒子要有足够的宽度,否则子盒子会掉下去。子盒子会按顺序进行贴靠,如果没有足够空间,则会寻找再前一个兄弟元素。

                        

·        浮动的元素一定能设置宽高:浮动的元素不再区分块级元素、行内元素,已经脱离了标准文档流,一律能够设置宽度和高度,即使它是span或者a标签等。

        右浮动:float:right;即可设置右浮动 

                        

        7.5、使用浮动实现网页布局

                        

        垂直显示的盒子,不要设置浮动,只有并排显示的盒子才要设置浮动!“大盒子带着小盒子跑”,一个大盒子中,又是一个小天地,内部可以继续使用浮动。div是免费的!不要节约盒子!

        7.6、BFC(Box Formatting Context,块级格式化上下文)是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。

        一个盒子不设置height,当内容子元素都浮动时,无法撑起自身,这个盒子没有形成BFC。

        如何创建BFC:方法一:float的值不是none、方法二:position的值不是static或者relative 方法三:display的值是inline-block、flex或者inline-flex、方法四:overflow:hidden;

        overflow:hidden;表示溢出隐藏,溢出盒子边框的内容将会被隐藏,overflow:hidden;是非常好用的让盒子形成BFC的方法。

        BFC的其他作用:一、BFC可以取消盒子margin塌陷,二、BFC可以可以阻止元素被浮动元素覆盖。

        7.7、清除浮动

        清除浮动:浮动一定要封闭到一个盒子中,否则就会对页面后续元素产生影响。

        清除浮动的方法一:让内部有浮动的父盒子形成BFC,它就能关闭住内部的浮动。此时最好的方法就是overflow:hidden属性。

        清除浮动方法二:给后面的父盒子设置clear:both属性。clear表示清除浮动对自己的影响,both表示左右浮动都清除。

        清除浮动方法三:使用::after伪元素给盒子添加最后一个子元素,并且给::after设置clear:both。

        清除浮动方法4:在两个父盒子之间“隔墙”,隔一个携带clear:both的盒子,即:在两个父盒子之间添加div盒子,里面添加clear:both属性。

        7.8、相对定位、绝对定位(子绝父相)、固定定位.........

8、边框border属性的三要素

       边框border属性的三要素 :线宽度、线型、线颜色:border:2px(线宽度) solid(线型) red(线颜色)

        8.1、边框三要素的小属性

小属性意义
border-width线宽
border-style线型
border-color线颜色

        可以在后面用小属性去改变已经设定的属性。

        8.2、线型

线型值意义
solid实线
dashed虚线
dotted点状线

        8.3、四个方向的边框

属性意义
border-top上边框
border-right右边框
border-bottom下边框
border-left左边框

         8.4、四个方向边框的三要素小属性

         8.5、去掉边框

        设置:border-left:none;属性即可去掉边框,以次类推。

        8.6、边框圆角的设置

        border-radius属性的值通常为px单位,表示圆角的半径。

        border-radius属性可以单独设置四个圆角:border-radius: 10px(左上) 20px(右上) 30px(右下) 40px(左下);

         也可以使用小属性,单独设置四个角

                 

        border-radius属性的值也可以用百分比做单位,表示圆角起始于每条边的哪里,正方形盒子如果设置的border-radius属性为50%,就是正圆形。

        8.7、盒子阴影

        box-shadow属性用来实现盒子的阴影:box-shadow: 10px 20px 30px rgba(0,0,0,.4);【x偏移量 y偏移量 模糊量 颜色】

        阴影延展box-shadow: 10px 20px 30px 40px rgba(0,0,0,.4); 【x偏移量 y偏移量 模糊量 阴影延伸 颜色】

        内阴影 :box-shadow属性值前加inset单词,表示内阴影:box-shadow: inset 10px 20px 30px 40px rgba(0,0,0,.4);

        多阴影:box-shadow属性值可以用逗号隔开多个,表示携带多个阴影。

9、背景与渐变

        9.1、背景颜色:background-color属性表示背景颜色,背景颜色可以用十六进制、rgb()、rgba()表示法表示,padding区域是有背景颜色的。

        9.2、背景图片:background-image属性用来设置背景图片,图片路径要写 到url()圆括号中,可以是相对路径,也可以是http://开头的绝对路径:background-image: url(images/bg1.jpg);

        注意:如果样式表是外链的,那么要书写从CSS出发到图片的路径,而不是从html出发。

        background-repeat属性用来设置背景的重复模式:

                                

         background-size属性用来设置背景图片的尺寸,兼容到IE9:background-size: 100px 200px;【宽度 高度】、值也可以用百分数来设置,表示为盒子宽、高的百分之多少、需要等比例设置的值,写auto

        contain和cover:contain和cover是两个特殊的background-size的值:

        9.2.1、contain表示将背景图片智能改变尺寸以容纳到盒子里

        9.2.2、cover表示将背景图片智能改变尺寸以撑满盒子

        background-clip 属性用来设置元素的背景裁切到哪个盒子。兼容到IE9。

                 

         background-attachment 属性决定背景图像的位置是在视口内固定,或者随着包含它的区块滚动:

                    

        background-position属性可以设置背景图片出现在盒子的什么位置:background-position: 100px 200px可以用top、bottom、center、left、right描述图片出现的位置。

        9.3、CSS精灵:将多个小图标合并制作到一张图片上,使用 background-position属性单独显示其中一个,这样的技术叫做CSS精灵技术,也叫作CSS雪碧图。

        CSS精灵可以减少HTTP请求数,加快网页显示速度。缺点也很明显:不方便测量、后期改动麻烦。
        9.4、background综合属性

        一些常用的背景相关小属性,可以合写到一条background属性中:background: white url (images/archer.png) no-repeat center center; 【背景颜色 背景图片地址 背景重复 背景位置】

10、2D与3D转换......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值