CSS基础知识总结

前言:学习Vue要求要有中级的html,css和js的基础,来补一下css的基础
一、CSS简介
1.1页面美容师

  • 功能:美化网页,布局页面
  • CSS:层叠样式表,标签语言
  • 最大价值:让HTML专心去做结构,结构(HTML)与样式(CSS)分离
    1.2CSS语法规范
  • 组成:选择器+一条或者多条声明
  • 选择器是指定HTML标签
    1.3CSS代码风格
  • 选择器与大括号之间要有一个空格
  • 属性值与前面的冒号之间要有空格
    1.4选择器分类
  • 基础选择器和复合选择器
  • 基础选择器包括:标签选择器;类选择器;id选择器;通配符选择器
  • 标签选择器:用HTML标签名作为选择前,但不能差异化设计
  • 类选择器:单独选一个或者几个标签,使用类选择器;类名是自己命名的,尽量使用英文命名,但不能和标签名重名;长名称或词组可以使用中横线来;命名要尽量做到见名知意;样式点(.)定义,结构类(class)调用,一个或多个,开发最常用;多个类名之间使用空格隔开
  • id选择器:样式#定义,结构id调用,只能调用一次,一般和js搭配使用
  • 通配符选择器:*选择所有的标签,特殊情况下使用
    二、字体属性
    2.1字体系列(font-family)
  • 多个字体间要使用逗号隔开
  • 有多个单词组成的字体加单引号
  • 微软雅黑:Microsoft Yahei
  • 字体大小(font-size):不同浏览器默认显示的字体大小不一致,尽量明确规定px(像素);可以给body指定整个页面文字的大小;
  • 字体粗细(font-weight):更经常用number,700为加粗,400为正常(变细),数字后面不加px
  • 文字样式(font-style 斜体/不斜体):很少给文字加斜体(italic),更多的是让倾斜的正过来(normal)
  • font复合属性写法:font: style weight size family,前两者都可省,但后面两个不可省略
    三、文本属性
    3.1文本颜色
  • 预定义的颜色值 red blue
  • 16进制#FF00000(开发中更多用,但不用记,后期提取即可)
  • rgb代码:rhgb(250,0,0)
    3.2文本对齐
  • text-align:left(默认左对齐)、right、center
    3.3装饰文本
  • text-decoration(装饰文本):none(默认无装饰线线)underline(下划线)line-through(删除线) overline(上划线)
    3.4行间距
  • line-height:用于设置行之间的距离,分为上间距、文本高度、下间距三个部分,像素变大改变的是上下间距
    四、CSS的引入方式:
    4.1内部样式表:CSS代码写在HTML页面中,实现结构与样式的部分分离
    4.2行内样式表:在元素标签内的style属性中中设定CSS样式,一般很少用
    4.3外部样式表(开发使用较多)
  • 需要实现的样式比较多
  • 单独开个.css文件,需要引用的时候在head中写link按table,后面写上css的路径即可
    五、Emmet语法
  • 生成标签:直接写标签名然后按tab键
  • 生成多个多个标签:加即可,如div3
  • 父子级关系:如ul>li
  • 兄弟级关系:如div+p
  • 如果要生成带有类名或者id名的,直接写.demo和#two,tab键即可,如果是在p里面写类名可以使用p.one这样写
  • 如果要生成的div类名是有顺序的,使用自增符号$
  • 在生成的标签内写内容可以用{}表示
  • 也可以使用简写按Tab键来快速实现CSS样式的书写
    六、复合选择器
    6.1后代选择器(很经常使用)
  • 两元素可以是任意选择器,之间使用空格隔开
  • 不仅可以是儿子,还可以是孙子,如.nav ol li
    6.2子元素选择器(亲儿子选择器)
  • 两元素使用>隔开
  • 只选择离他最近的那一个,孙子重孙都不归他们管
    6.3并集选择器
  • 语法规范:元素1,元素2{}
  • 任何选择器都可作为并集选择器的一部分
    6.4伪类链接选择器
  • a🔗选择未被访问过的链接
  • a:visited:选择已经被访问过的链接
  • a:hover(重点):选择鼠标位置位于其上的链接
  • a:active:选择鼠标点击了但还没有松开的链接
  • 为确保生效:按照LVHA的顺序声明
  • 开发时候最常用的是给a颜色,然后写一个a:hover就行了
    6.5伪类focus选择器
  • :focus:光标定在哪里,就修改哪里,如input:focus
    七、CSS的元素显示模式
    7.1显示模式
  • 释义:标签以什么方式显示
  • HTML标签分为块元素和行内元素两种
    7.2块元素
  • 比较霸,自己占一行
  • 高度、宽度、外边距、内边距可以设置
  • 宽度默认和父级容器一样
  • 里面可以放行内或者块元素
  • 注意:p和h这种属于文字类块元素,里面不能再放其他块元素(比如p里面不能再放div)
    7.3行内元素
  • 一行中可以显示多个
  • 高、宽直接设置无效
  • 默认宽度是本身的宽度
  • 里面只能放文本或者其它行内元素
  • 注:链接内不能再放链接;a里面可以块级元素
    7.4行内块元素
  • img,input,td,既具有块元素特点,也具有行内元素特点
  • 一行可以显示多个,宽度默认为本身宽度,可以直接设置宽和高
    7.5模式转换
  • 转换为块元素:display:block
  • 转换为行内元素:display:inline
  • 转转换为行内块元素:display:block-inline
    7.6单行文字垂直居中
  • 文字行高等于盒子高度(让上空隙和下空隙把文字挤到中间)
    八、CSS背景
    8.1背景颜色
  • background-color
    8.2背景图片
  • background-image:url()
  • 常用于一些Logo/ 装饰性的小图片/很大的背景图
  • 优点:便于控制位置
  • 背景平铺(background-repeat):repeat(横向纵向平铺)no-repeat(不平铺) repeat-x(x轴方向平铺) repeat-y(y轴方向平铺)
    8.3背景位置
  • background-position: x y,可以使用方位名词或者精确单位
  • 方位名词:top center left right bottom
  • 如果两个值都是方位名词,则两个值写的顺序无关
  • 如果只写了一个方位名词,另一个省略,后者默认居中
  • 也可以使用参数:使用参数的话严格按照前x后y来写
  • 如果只写了一个,y就默认是居中
  • 如果用混合单位:前者是x,后者是y
    8.4背景固定
  • background-attachment:scroll或者fixed,前者图片会随滚轮滚动而滚动
  • 背景符合写法:background:背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置(无硬性要求,这只是推荐写法)
    8.5背景颜色半透明
  • background:rgba(0,0,0,x)最后一个参数是透明度参数,取值范围在0-1之间,0.3可以省略掉0写.3
    九、CSS三大特性
    9.1介绍
  • 层叠性、继承性、优先级
    9.2层叠性
  • 层叠性:相同选择器设置相同样式,后面的样式会覆盖冲突的样式
    9.3继承性
    继承性:子标签会继承父标签的某些样式(并不是所有样式),一般为文字样式,如给div上样式,子标签p也会被上样式
  • 像素可以不跟单位px,代表的是当前文字大小的倍数,方便不同的子集根据自身的文字大小调整自身的行高
    9.4优先级
  • !important>标签内style>ID选择器>类选择器、伪类选择器>元素选择器
  • 继承的权重是0
  • a是比较特殊的,浏览器默认了是蓝色且有下划线,权重要高于0
  • 复习选择器存在权重叠加问题(ul li=0,0,0,2>li=0,0,0,1)
    十、盒子模型
    10.1网页布局本质
  • 网页是由许许多多盒子来组成的,利用CSS来摆盒子、往盒子里面装内容
  • 盒子模型的组成:边框、外边距(盒子与盒子之间的间距)、内边距、内容
    10.2边框(border)
  • border-weight:边框粗细(单位为px)
  • border-style:边框样式(solid-实线,dashed虚线,dotted加点)
  • border-color:边框颜色
  • 合并相邻边框(border-collapse:collapse)
  • 边框会影响盒子实际的大小
    10.3内容、内边距
  • 内边距(padding):padding-top:10px等调节上下左右的边距
  • padding的复合写法:一个值:上下左右都是这个;两个值:前为上下,后为左右;三个值:前为上,中为左右,后为下;四个值就正常
  • 内边距会撑大盒子,需要相应调整盒子大小
  • 导航栏中的文字不一样多,可以不设置盒子的宽度,设置相同的内边距,这样看起来效果就比较一样了
  • 如果盒子本身没有制定weight/height,则padding不会撑开盒子
    10.4外边距(margin)
  • 用法以及复合写法与padding都一样
  • 外边距可以让块级盒子居中对齐:要设置宽度+左右外边距设置为auto(margin:0 auto)
  • 行内元素或行内块元素要居中对齐的话找其父元素设置text-align:center
  • 嵌套外边距的坍塌:对于两个有父子关系的的块元素,父亲有外边距,儿子也有外边距,父亲会塌陷较的的外边距,儿子不动。可以给父标签添加overflow:hidden来解决
  • CSS要写的第一行*{padding:0;margin:0;}清楚所有的内外边距。行内元素只设置左右内外边距,块级元素和行内块元素任意设置
  • 只要将图片的宽度修改为100%,图片就能和盒子一样宽
  • 去掉无序列表前的原点:list-style:none
    10.5圆角边框
  • border-radius:length(数值/百分比)
  • 对于正方形变圆形,设置为宽的一般或者50%即可
  • 对于圆角矩形,设置为高的一半即可
    10.6盒子阴影(box-shadow)
    -水平阴影位置 竖直阴影位置 阴影的虚实程度 阴影的大小 阴影的颜色 阴影的内外边距
    10.7文字阴影(test-shadow)
  • 和盒子阴影用法一样,不过只有前四个
    十一、浮动
    11.1传统网页三种布局方式
  • 标准流(标签按照默认的方式来进行排放)、浮动、定位
    11.2为什么学习浮动
  • 多个块级元素纵向排列找标准流,横向排列找浮动
  • 语法规范:float:none(不浮动) left(左浮动) right(右浮动)
    11.3浮动特性
  • 脱标:脱离标准流控制移动到指定位置;浮动的盒子不再保留原来的位置,标准流会补上浮动空出来的位置,浮动盒子浮在标准流盒子的上面
  • 浮动的盒子一行内显示且上对齐.显示不开的盒子自动换行显示
  • 任何元素都可以浮动,添加浮动后会具有行内块元素的特点(块级盒子没有宽度,默认和父级一样,浮动后根据内容大小决定)(浮动盒子中间是没有空隙的,行内元素加浮动后也是如此)
  • 为约束浮动盒子的位置,先用标准流的父元素排上下元素,内部子元素采取浮动的方式排列左右元素
  • 注意:浮动的盒子只会影响到后面的标准流,不会影响到前面的标准流
    11.4清除浮动
  • 额外标签法(不常用):在最后一个浮动子元素的后面添加一个额外的块级标签
  • 父级元素overflow:hidden(在父级元素中添加overflow:hidden)
  • after伪元素法(父级):用的较多,后期具体讲解;升级版的额外标签法,相当于用CSS在后面添加了一个盒子
  • 双伪元素清除浮动:后门前门都给关上
    11.5学成在线实践
  • html与css量比较大的话可以选择分开写,但要记得在html中用link连接起来
  • CSS属性的较规范书写顺序:布局定位属性(display、position、float…);自身属性(width\height…);文本属性(color、font、text-decoration…);其他属性(content\box-shadow…)
  • 页面布局整体思路:确定版心;分析行模块以及行模块内的列模块;一行中的列通常采用浮动来做,先确定列的大小,再确定列的位置;遵循现有结构,再有样式
  • 在实际开发中,导航栏不会直接就使用a,而是采用li包含a的做法
  • 浮动的盒子是不会有外边距问题的
  • 行高会继承给孩子
    十二、定位
    12.1为什么要使用定位
  • 让盒子自由的在某个盒子内移动位置或是固定他的位置
    12.2定位模式
  • 静态定位(static):可以简单理解为标准流,不常用
  • 相对定位(relative):总是相对于自己原来的位置来移动的;原来的位置并不是空出来,会继续的占有
  • 绝对定位(absolute):如果没有祖先元素或者祖先元素没有 定位,则以浏览器为准;如果祖先元素有定位,则以最近一级的有定位的的祖先元素为参考点;绝对定位不占有位置
  • 子绝父相:子集要浮在父级盒子里并且位置多变,所以使用绝对定位。父级盒子要用来定位,要占有位置,所以选择相对定位
  • 固定定位(fixed):以浏览器的可视窗口为参照点移动元素;不随滚动条滚动;固定定位不保留原先的位置
  • 固定到版心右侧的小算法:先让left走50%,再用margin-left走版心宽度一半的距离
  • 粘性定位(了解):以浏览器的可视窗口为参照点;占有原来的位置;上下左右必须添加其一才能起作用
    12.3定位叠放次序
  • z-index:xx;
  • 数字后面不能加单位;数字大的在上面;相同属性后面的在上;有定位的盒子才有index属性
  • 绝对定位的盒子居中:加了绝对定位的盒子不能用margin直接实现剧终了;使用left:50%,然后margin-left:进行居中调节
    12.4定位的特殊性
  • 行内元素加了绝对或者固定定位的话,可以直接设置高度和宽度
  • 块级元素加了绝对或者固定定位的话,默认的大小是内容的大小
  • 浮动元素会压住下面标准流的盒子,但不会压住下面标注流盒子的元素(浮动的初心就是做文字环绕)
  • 绝对定位会压住下面标准流的所有内容
  • 如果给一个盒子既加了左,又加了右,则会默认执行左属性
    12.5元素的显示与隐藏
  • display用于设置一个元素应该如何显示
  • display:none隐藏元素;display:block,除了转换为块级元素外,还有显示元素的功能。元素隐藏后,不再占有位置
  • visibility:hidden(隐藏)\visible(显示),隐藏后保留位置
  • overflow溢出:visible(默认显示溢出部分)hidden(超出部分隐藏掉)scroll(有无超出都显示滚动条)auto(有超出显示滚动条,没有就不显示)
    第二部分、CSS进阶技巧
    一、
    1.1精灵图与字体图标
    *简单的小图标用字体图标,样式较复杂的小图标用精灵图
    *字体图标的下载推荐:icomoon字库 阿里iconfont字库
    *字体图标的使用:先将下载包中的font放在根目录中;再将那一块声明写再style中;再打开demo中复制一下
    *CSS三角做法:盒子高和宽都是0,边框颜色都为透明,设置一个边有颜色即可
    1.2CSS用户样式界面
    *鼠标样式cursor :default(默认白标) pointer(小手)move(移动十字格式) text(I) not-allowed(禁止)
    *取消表单轮廓:outline:0/none
    *防止文本框拖拽:resize:none
    *vertical-align:middle:只针对行内块元素与行内元素有效,图片与表单都是行内块元素,实现图片与文字的居中对齐
    *解决图片底部空白缝隙的问题:给图片添加vertical-align去除基线对齐效果;将图片转换为块级元素
    *溢出的文字省略号显示:强制一行显示(white-space:nowrap) 溢出的部分隐藏起来(overflow:hidden) 文字溢出的部分省略号显示(text-overflow:ellipsis)
    1.3常见布局技巧
    *margin负值解决边框叠加问题,鼠标经过某个盒子通过相对定位或者z-index提升层级即可
    *盒子加上浮动,文字自动环绕
    *只要给盒子父元素添加center,盒子中的行内块元素和行内元素都能执行
    *三角形强化(直角三角形):一个px大一个px小其余为0,保留一个颜色其余为透明
    1.4H5C3新属性
    *vidio插入视频:autoplay width height loop muted
    *input新增表单:number tel search
    *placeholder:表单的提示信息 multiple:上传多个文件
    *属性选择器[]+结构伪类选择器(:数字、关键字、公式)+伪元素选择器(CSS生成行内元素)
    *在最开始的初始化声明中写上box-sizing,避免盒子再被撑大
    *对图片进行模糊处理(filter:blur())
    *calc(100%-30px)让子盒子始终比父盒子短30px
    *transition:变化属性 变化实践 变化曲线 变化延迟
    *favicon图标的制作:png格式+比特虫转换ico+放在html根目录
    *网站TDK三大标签SEO优化:title,description,keyword
    1.5Logo的SEO优化
    *Logo盒子里放一个h1标签+h1标签中放一个a,a修饰成Logo大小,里面放上名字+将Logo的链接放在背景中
    *当内部的小盒子因为与外部大盒子边框重叠而导致换行的时候,可以将ul大盒子调整大一些,多出来的边框使用overfloat隐藏掉
    1.6 服务器
    *分类:远程服务器 本地服务器
    *免费的远程服务器网站:http://free.3v.do/
    X.在网页制作过程中经常遇到的小问题
    *点击图片实现跳转:在a里面放img(a中包含有宽度的盒子,需要转换为块级元素)
    *放在图片上有文字显示是在a标签中加的title
    *盒子内的内容比盒子大的话,对盒子的css写overflow:hidden,将内容控制在自己设置的盒子大小范围内
    *一个没有高度的盒子,里面的元素也都是浮动的,可以对父盒子加清除浮动代码,这段代码直接从网上粘就可以
    *加边框后出现抖动问题:给图片设置一个透明边框,点上去后变颜色即可
    *注册页面不需要再使用SEO优化
    *比较正规方便的右浮动:让文字所在的盒子去右浮动
    *将盒子放在页面中间的两种方式:在本盒子用margin:auto,在父盒子用text-align:center
    *border-radius:50%,做出来头像的那种圆框感觉
    *伪元素是行内元素,设置大小需要样式转换,before是在原盒子上面显示出来的
    *cursor:pointer:将箭头变为小手
    *n+2是从第二个开始选,-n+2是选前两个
    *shift+alt是可以同时更改多个盒子的内容
    *如果一个盒子用类选择器添加了定位,那其他的类选择器就不用再声明一遍定位了,可以直接进行位置的填写
    *z-index:1,将被压在下面的盒子提到上面
    三、CSS 2D转换
    *transform:tanslate(x,y)(移动);最大优点:无论怎么改变,不会影响其他盒子的位置;跟百分比是自己长宽的百分比,可以借此替代之前50%定位之后再用margin往一边返一半长宽的垂直居中布局
    *rotate(旋转):单位deg,可以配合过渡食用(谁变过渡在谁身上,tansition:all,0.xs);可以解决CSS三角问题:一个盒子只给两个边框,然后一旋转即可;div:hover::after-经过盒子的时候伪元素发生变化;transform-align:left bottom,改变旋转中心点
    *scale(缩放):scale(倍数,倍数);优势:不会影响其他盒子,而且可以更改缩放中心点;会让阴影也随着放大
    *transform也可以使用复合写法,但是位移要放在最前面,旋转后坐标轴也会发生变化.。但并不绝对,旋转木马案例就是先旋转再移动
    *浏览器私有前缀(兼容老版本);-webkit-:safari,chrome;-o-:opera;-ms-:IE;
    -moz-:firefox;
    四、CSS3 动画
    *@keyframes 动画名称{}
    *animation:动画名称 进行时间 速度曲线(linear匀速) infinite(循环播放)
    *animation-play-state:paused鼠标放上去停止动画
    五、3D转换
    *3D位移:translate3d(x,y,z);z单位一般用px,不用百分比
    *透视:perspective:px;数值越小,要观察的那个盒子越大。透视加在被观察元素的父盒子上。z轴的数值越大,要观察的盒子越大
    *3D旋转:rotate(),使用左手准则来判断正负
    *保留子盒子立体:转动父盒子的时候,子盒子原本的立体效果消失。添加transform-style:preserve-3d(给父级添加的)
    -------------------------------------web端完结撒花------------------------------------
    -------------------------------------移动端学习开始------------------------------------
    一、移动端基础
    *background-size:cover(覆盖盒子,但可能有部分图片显示不全);contain(长或者宽沾边就停了,会存在一些空白)
    *移动端css初始化代码https://necolas.github.io/normalize.css/
    *-webkit-tap-highlight-color:transpararent;(隐藏高亮);-webkit-appearence:none(加上这个之后才可以修改按钮和输入框样式);-webkit-touch-callout:none(按久之后也不会出现菜单页)
    *二倍精灵图:将精灵图等比例缩放后再量位置
    1.2 流式布局
    *用百分比代替像素去做,只管宽度,不管高度
    *无论是PC端还是移动端,图片垂直居中要vertical-align:middle,不然图片和文字是基线(最底边对齐)
    1.3 flex布局
    *给父级添加flex来控制子元素的位置和排列方式
    *flex-direction:row column
    *justify-content(调整主轴):flex-start(默认);flex-end(尾部排列);center(居中);
    space-around(平分空间);space-between(两边贴边,其余平分)
    *flex-wrap:nowrap(默认不换行)
    *align-items(调整单行侧轴):比主轴多一个stretch(不设置高度,拉伸和父级盒子等长)
    *align-content(调整多行侧轴):在调整主轴的五个上加了stretch
    *flex-flow:设置主轴与是否换行的复合写法
    *flex:来表示占几份
    *align-self:控制单个元素在侧轴上的排列;order:默认为0,设置负数将盒子提前
    *固定定位一定要加宽度,是相对整个页面宽度来说的
    *flex布局导航栏上下结构:将主轴调整为y,再在y上居中
    *背景线性渐变(必须加浏览器私有前缀):-webkit-linear-gradient(left,re,blue)
    1.4 rem适配布局
    *em相对于父级文字大小;rem相对于html文字大小
    *媒体查询:@media all/print/screen and/or/only (媒体特性),一般从小到大写;在link中可以通过media来设置不同屏幕大小实现不同css
    *less语言:css拓展语言,多了一些程序语言特性。如果是伪类、伪元素选择器,加&
    *import样式间的导入
    *制作圆角:高度的一半
    *添加!important提升到最高权重
    *flexible.js就不用我们自己划分了,宽度动一点点,高度就能自动动。代码链接https://github.com/amfe/lib-flexible
    移动端开发流程概览
    *制作轮播图借用swiper插件,将js和css引入后,将人家的代码也复制进去
    *opacity:盒子的透明度
    1.4 响应式布局
    *可以随着不同的终端自行调整
    *Bootstrap列嵌套加.row取消父级盒子的padding
    *offset(列偏移);push推,pull拉(列排序)
    1.5 bootstrap
    ----------------------------------------css篇完结撒花----------------------------------
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值