html-->木偶 css--->化妆 js--->跳舞
css:
1.什么是css?
层叠样式表;不能脱离html而单独存在。
2.基础语法
属性名和属性值之间使用冒号连接;多对属性之间使用分号连接;
最后一对属性可以不加分号
选择器{ width:100px; height:100px; color:red; } p{ width:100px; height:100px; color:blue; } 注释:不能嵌套使用 /*注释内容*/ 作用:html中注释作用一致 速记写法: 简写形式: td{ border:1px solid red } border-top-width:1px; border-top-style:solid; border-top-color:red; border-left-width border-left-style border-left-color --> border:width style color 内外边距: 盒子: 内容+内边距+边框+外边距 padding:10px; --> padding-top:10px; padding-left:10px; padding-right:10px; padding-bottom:10px; padding:10px; //上下左右 padding:10px 20px; //上下10px 左右20px padding:10px 20px 30px; //上 左右 下 padding:10px 20px 30px 40px;//上 右 下 左 margin:同上
3.如何将css作用在html上?
1.行内样式 style
2.内联样式 css
3.外部引入
创建一个以.css为后缀名的文件
建议: 先加载css,再加载html
@import url():先去加载html再加载css
优先级: 行内样式>内联/外部引入
就近原则: 哪一个样式距离标签更近,谁的优先级就更高
4.选择器
标签选择器:根据标签名称选择一类元素
id选择器:根据元素的id属性选择一个元素 #value
类选择器:通过class属性来选择一类元素 .value
后代选择器:
>:选择当前元素的直接子元素
空格:选择当前元素的所有子元素(包含孙代元素)
兄弟选择器:
+:选择当前元素之后的一个兄弟
~:选择当前元素之后的所有兄弟
普遍选择器:*:所有
多选择器:
使用逗号连接多个选择器
div,p{} #one,.two{}
组合选择器:
直接将选择器拼接到一起使用
div.one{}
属性选择器:
根据元素的属性去选择一类元素
[id]:选择当前页面中具有id属性的元素 [class='one']:选择当前页面中具有class属性并且属性值为one的元素 [class~='one']:选择当前页面中具有class属性并且属性值之一为one的元素 [class^='o']:选择当前页面中具有class属性的并且class属性以o开头 [class$='o']:选择当前页面中具有class属性的并且class属性以o结尾 [class*='o']:选择当前页面中具有class属性的并且class属性值中包含o字符的
伪类选择器:
:伪类名称 :first-child:选择当前元素作为父元素的第一个时 :last-child:最后一个孩子 :only-child:当前元素作为父元素的唯一一个孩子 :nth-child(number/odd/even): :hover 当鼠标悬停在元素上时 :active: 当鼠标按下时触发 :link: 当未被点击时触发 :visited 被访问过之后触发
书写顺序:link-->visited--〉hover-->active
伪元素选择器:
::伪元素名称 ::first-letter:第一个字符 ::first-line:选择第一行 ::selection:当文字被选择时
选择器优先级:
@important:优先级最高 行内样式:1000 id选择器:100 类/伪类/属性:10 元素/伪元素:1
特性值:特性值越大,优先级越高
当特性值相同时,越靠下的优先级越高
!important;//不计入特性值中,优先级最高
5.盒模型:
盒子:内容区域+内边距+边框+外边距
分为两类:
标准盒模型(w3c盒子):
默认都是标准盒子
box-sizing:content-box;
width=content
1.div的内容区域的宽度?
2.div的盒子宽度?
3.div在浏览器中所占据的空间的宽度?
边框盒模型(怪异盒子):
box-sizing:border-box;
width=content+padding+border
6.布局:
默认文档流:从上到下,从左到右
1.display属性:改变盒子默认特性 inline:将块级元素转换为行内元素;block:将行内元素转换为块级元素 inline-block:将当前元素转换为兼具行内和块级特性的元素 display: none;//元素的隐藏,隐藏元素所占据的空间 block;//元素的显示 visbility: hidden:元素的隐藏,不隐藏元素所占据的空间(将元素的透明度设置为0) visible;//元素的显示 2.浮动: float:left:左浮动 right:右浮动 none:不浮动 元素浮动不会遮挡普通文本 浮动何时停止? 1.遇到父级元素边框的时候停止浮动 2.遇到其他浮动元素时 清除浮动: clear:left right both 1.设置给浮动元素之后的块级元素
1) 块元素脱离默认文档流
1. 默认宽度为0
2. 失去了对父元素支撑的能力 【伪元素】
2) 在浮动流中,多个同级别浮动元素在一行中显示,当这一行容纳不下,会自动换行
2.伪元素选择器
div::after{ clear:both; display:block; content:'' }
官方解释: overflow: 超出元素部分如何设置 hidden:超出元素部分隐藏 scroll:超出元素部分以滚动条方式显示
3.列级布局:行级布局和列级布局
先进行行级布局,再进行列级布局
4.定位布局:
position: static:静态布局 absolute:绝对定位 1.脱离默认文档流 2.不保留定位前的空间 3.默认情况下,绝对定位的元素根据body的左上角进行定位 4.如果父级元素设置了定位属性时,子元素会根据父级元素的左上角进行定位 relative:相对定位 1.默认情况下,相对定位元素会根据元素本身的位置进行定位 2.不会脱离默认文档流 3.保留定位前的空间 fixed:固定定位 特点和绝对定位是类似 定位元素不会随着滚动条的滚动而滚动 sticky:粘性定位 定位前元素按照relative来定位 设置了配合属性后,到达设置的属性之后停止滚动 配合属性:left: top: right: bottom: z-index: number 两个元素必须使用绝对定位属性 设置元素的层叠顺序,值越大,越靠上
5.伸缩盒布局:
父元素:display:flex;
子元素:item的float属性自动失效;flex: 1;
外边距合并问题:
1.父子级之间
1.给父级元素添加边框属性 2.将本应该设置给子元素的外边距设置给父元素的内边距(注意父元素的盒模型) 3.给父子级设置浮动属性 4.给父子级添加position:absulute属性 5.给父子级元素设置display: inline-block; 6.给父级元素添加overflow: hidden;属性
2.兄弟级
将本应该设置给两个元素的外边距设置给一个元素 计算规则: 1.当两个外边距均为正数时,取较大的一个 2.当两个外边距均为负数时,取较小的一个 3.当两个外边距一正一负时,直接相加即可
7.文本样式
针对于盒子内容来进行修饰。具有可继承性 text-align:center; 定义行内内容(例如文字)如何相对它的块父元素对齐 vertical-align:middle; 调整行内元素的垂直排列 line-height:32px; text-transform: lowercase/ text-decoration-color text-decoration-style:solid/dotted/dashed text-decoration-line:underline/light-through/overline text-decoration:underline/light-through/overline/none overflow-x: overflow-y: overflow: visible/hidden/scroll
颜色:
关键字: rgb(r,g,b):0-255之间 rgba(r,g,b,a):0-255,a:透明度0-1;0:完全透明;1:完全不透明 16进制的颜色值 :通过拾色器获取 #fff #ccc 尺寸: width:50%; px:绝对单位,像素, em:相对单位 1em=16px 百分比:50%(相对单位) 字体: 针对于盒子内容来进行修饰。具有可继承性 font-family:'李氏字体','Microsoft YaHei','微软雅黑','宋体'; font-size:12px; font-weight:normal/bold font-style:normal/italic color:#333; font: font-size/line-height font-family; font: 12px/1.5 Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans GB,sans-serif 网络字体:iconfont font-awesome 1\. 获取字体文件: woff、 eot、... 2\. 定义网络字体 @font-face { font-family: "iconfont"; //字体文件 src: "" } 3\. 使用 // 基础样式 .iconfont { font-family: "iconfont" !important; font-size: 16px; font-style: normal; } // 特殊样式 .icon-aixin:before { content: "\e8ab"; }
8.其他规则:
display: block; inline; inline-bolck; 列表规则: list-style:none 表格规则 border-collapse:collapse; 当td添加边框,加在table上可以合并隔壁的边框 opacity:
9.单位
绝对单位:10px 相对单位: 1em , em相对于当前元素的字体大小 1rem , rem相对于html元素选择器中设定的字体大小 颜色: 关键字 pink 十六进制 #ffffff #000 #f4f4f4 函数 rgb(114,141,153) => #8f8d98 函数 rgba(114,141,153,1)
10. 背景色
background-image: url('图片地址') 背景图片 background-repeat : repeat/repeat-x/repeat-y/no-repeat 背景图片重复方式 background-origin : border-box/padding-box/content-box 背景铺设的起点 background-clip : border-box/padding-box/content-box 背景裁切的方式 background-size :contain;cover 图片大小 等比例 100px 200px background-position :center 背景图片的位置 background-color 背景***ackground: url() #ccc no-repeat center; 速写
11.定位布局
position: static; // 默认,静态 relative 相对点:该元素在文档流中初始的位置 是否脱离文档流:不脱离 最佳实践:一般不移动,作为相对点 absolute 相对点:距离它最近的父定位元素,如果没有父定位元素,那么就只能相对于浏览器视口 是否脱离文档流: fixed 相对点:相对于视口,并且不会随着浏览器的滚动而滚动 是否脱离文档流:脱离 sticky 相对点: 是否脱离文档流: 当元素上的position的取值为relative absolute fixed sticky之一,我们就认为当前这个元素为定位元素。定位布局可以使用定位属性,比如 left、right、top、bottom。
12.伸缩盒布局
作用:与浮动布局的作用类似,用于将一个容器中多个子元素【块元素】在一行中多列排列,常用于响应式布局(移动端) 概念:主轴:flex-direction定义,row - x; column - y 交叉轴:与主轴垂直的轴 y, x 1\. 子元素都是沿着主轴来排列的 2\. 一般建议给容器添加宽高,子元素在容器中排列 使用: ul 容器: display: flex; 让容器成为伸缩盒容器 flex-direction: row; 容器中子元素的排列方式,row-沿着x轴 flex-wrap: wrap; justify-content: space-around; li 子元素: flex-basis 主轴中基准值,主轴是x轴,相等于width flex-grow 主轴中剩余空间分配所占据份数 flex-shrink 主轴中如果有亏损,所占亏损的份数 flex 速写 ul { display: flex; }
13. bootstrap : 栅格布局(栅格系统)
bootstrap3 浮动 bootstrap4 伸缩盒
14.动画:
动画轨迹--》元素 @keyframes run{ from{} to{} } @keyframes run{ 0%{} 50%{} 100%{} }
动画、过渡、变形: animation-* transition-* transform
动画设定:
animation-name animation-duration 10s 10000ms animation-delay 10s 10000ms animation-timing-function: linear/steps/ease/ease-in/... animation-direction : reverse; alternate; alternate-reverse animation-iteration-count: 4; infinite。 animation-fill-mode: forwards;backwards;both;
动画库
1\. 打开网页的时候可能一开始有白屏(*) 1) 加强服务器! 2) faster mini 1\. 图片压缩 2\. 图片合并(图标) 3\. cdn加速 : 将库【iconfont、】放到cdn服务器 2\. 使用 1\. 获取cdn连接 2\. 使用class 基础规则: animate__animated 特殊规则: animate__pulse 库太多!(html、css、js): 50个 iconfont、animate.css、bootstrap、jquery、vue、vuerouter、vuex、react、redux、redux-saga、reat-router、webpack、babel、webpack-server、axios、moment、lodash、.... 3) 过渡 1\. 更加简单的动画,没有动画帧 2\. 需要触发(:hover) transition-property 需要过渡的属性 all transition-duration 持续时间 2s transition-timing-function 时间曲线函数 linear steps() easy transition-delay: 0s; 延迟时间 transition: property duration delay timing; 4) 变形 transform-origin: center top left transform: scale(2) rotate(45deg) rotateX(45deg) rotateY(45deg) rotateZ(45deg) skew() skewX() skewY() translate() translateX() translateY()
15. 响应式布局
1) pc端 1\. 类似于腾讯视频: 容器的宽度随着屏幕的分辨率大小的改变而改变 2\. 纯响应式(与mobile兼容): 完全兼容移动的设备 2) mobile端 手机型号不同,宽度不同 1\. 不要给容器【块元素】指定宽度,让他默认为100% 2\. 子元素【列元素】宽度使用相对单位,百分数 媒体查询技术 .products { width: 990px; margin: 0 auto; } .products > ul > li { width: 19.5%; height: 100px; background-color: rebeccapurple; } @media screen and (min-width: 1300px) { .prodmucts { width: 1200px; } .products > ul > li { width: 16.5%; } } @media screen and (min-width: 1500px) { .products { width: 1400px; } .products > ul > li { width: 14%; } }
前端 服务器端 css文件 css文件 「Content-Type:text/html」
16. less
1) 安装 npm install -g cnpm --registry=[https://registry.npm.taobao.org](https://registry.npm.taobao.org) cnpm install -g less less --version