柏竹 柏竹
首页
后端
前端
  • 应用推荐
关于
友链
  • 分类
  • 标签
  • 归档

柏竹

奋斗柏竹
首页
后端
前端
  • 应用推荐
关于
友链
  • 分类
  • 标签
  • 归档
  • 前端必备

    • HTML
    • CSS
      • 概述
      • 载入样式表
        • 内部样式表
        • 行内式
        • 外部样式
        • 样式表总结
      • 选择器
        • 标签选择器
        • 类选择器
        • id选择器
        • 通配符选择器
        • 选择器总结
      • 复合选择器
        • 交集选择器
        • 并集选择器
        • 后代选择器
        • 子代选择器
        • 伪类选择器
        • 属性选择器
        • 属性值的匹配
      • 优先级
        • 选择器
        • 样式表
      • 元素显示模式
        • 块级元素 (block)
        • 行内元素 (inline)
        • 行内块元素 (inline-block)
        • 标签显示总结
      • 字体样式
        • 字体编码
      • 文本样式
      • 背景样式
      • 盒子样式
        • 边框写法总结
        • 盒子扩展
        • 盒子宽高
        • 盒子外边距实现居中
        • 清除元素的默认内外边距
      • 浮动 (float)
        • 浮动特性
        • 浮动清除
        • 额外标签法
        • 父级添加overflow属性方法
        • after伪元素清除浮动
        • 使用before和after双伪元素清除浮动
      • 定位(position)
        • 静态定位 (static)
        • 相对定位 (relative)
        • 绝对定位 (absolute)
        • 固定定位 (fixed)
        • 叠放次序 (z-index)
        • 定位总结
      • 显示&隐藏
        • 显示 (display)
        • 可见性 (visibility)
        • 溢出隐藏 (overflow)
      • 高级技巧
        • 鼠标样式 (cursor)
        • 禁止选中 (select)
        • 轮廓 (outline)
        • 文本域固定 (resize)
        • 垂直对齐 (vertical-align)
        • 自动换行 (word-break)
        • 空格换行 (white-space)
        • 文字溢出 (text-overflow)
      • 动画&变形
        • 元素变化(transform)
        • 元素中心变换(transform-origin)
        • 过渡效果(transition)
        • 参与过渡属性
        • 过渡持续时间
        • 过渡延迟时间
        • 过渡动画类型
        • 过渡连写
        • 动画(Animation)
        • 关键帧
        • 动画属性
      • 弹性布局 (Flex)
        • justify-content
        • align-items
        • flex-direction
        • flex-wrap
      • 精灵图
      • 滑动门
      • 字体图标
      • 版心和布局流程
        • 版心
        • 布局流程
      • CSS书写规范
        • 空格规范
        • 选择器规范
        • 属性规范
        • 高度格式
      • CSS 三大特性
        • CSS层叠性
        • CSS继承性
        • CSS优先级
        • CSS特殊性
        • 权重总结
    • JavaScript
    • ES6
    • Git
  • 技术拓展

  • 前端技巧

  • Vue

  • 前端
  • 前端必备
柏竹
2020-02-18
目录

CSS

# CSS

# 概述

css样式表或层叠样式表(级联样式表),用与设置HTML页面的文本内容(字体,大小,对齐样式)、图片外形等外观 CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式

# 载入样式表

# 内部样式表

在 head标签 内,并且用style标签定义属性

<head>
	<style type="text/CSS">
   	 	选择器 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
	</style>
</head>

# 行内式

内联样式。通过在标签中的 style属性 来设==置样式==

<标签名 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;"> 内容 </标签名>

# 外部样式

在 head标签 内,定义 link标签 引用外部文件

<head>
  <link href="CSS文件的路径"  rel="stylesheet" />
</head>
link属性 说明
hreft URL地址(相对/绝对)
rel 类型 。值: stylesheet

# 样式表总结

样式表 优点 缺点 使用情况 控制范围
行内样式表 书写方便,权重高 没有实现样式和结构相分离 较少 控制一个标签(少)
内部样式表 部分结构和样式相分离 没有彻底分离 较多 控制一个页面(中)
外部样式表 完全实现结构和样式相分离 需要引入 最多,强烈推荐 控制整个站点(多)

# 选择器

# 标签选择器

标签选择器对指定的 标签 或 元素 作用

标签名 | 元素名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; ···}

# 类选择器

类选择器可对指定的对象起作用

.类名{属性1:值; 属性2:值; 属性3:值; }

# id选择器

只对一个对象起作用

#id名{属性1:值; 属性2:值; 属性3:值; }

# 通配符选择器

匹配页面中所有的元素

*{ 属性1:值; 属性2:值; }

# 选择器总结

选择器 例子 例子描述
.class .intro 选中 class="intro" 的元素
#id #firstname 选中 id="firstname" 的元素
* * 选中 所有元素
element p 选中 所有 <p> 元素
选择器 优点 缺点 使用范围
标签选择器 快速在同一类型的标签添加样式 不能在同一标签设置不同样式 限制于设置的标签
类选择器 可为对象单独定义样式,也可多标签 广泛
id选择器 可为对象单独定义样式 不能多标签共用 一个标签的范围
通配符选择器 能匹配页面中所有的元素 不能单独定义样式 范围最广

# 复合选择器

# 交集选择器

交集选择器由两个选择器构成,两个选择器之间不能有空格

满足两个选择器的条件才能应用样式

比如: p.one   选择的是: 类名为 .one 的段落标签。 
p.class{····}
h3.class {····}

# 并集选择器

并集选择器 通过选择器与选择器之间通过逗号连接而成,任何形式的选择器都可作为并集选择器的一部分

逗号连接的选择器 都有样式

.class , h3 {属性:属性值; ····}

# 后代选择器

后代选择器用于 选择元素 或 元素组的后代 写法:外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。

指定的父选择器里的 指定选择器有样式

类名选择器 标记选择器{···}
.class h3{····}
div p{····}

# 子代选择器

子代选择器又称子元素选择器,只能选择作为某元素子元素的元素

指定的父选择器里的 下一代选择器有样式

类别选择器 > 标记选择器{···}
.class > h3{···}
div > p{···}

# 伪类选择器

伪类选择器用于向某些选择器添加特殊的效果。 用“:”做前缀进行标识,后面紧跟伪类名,在style标签中

更多的选择器:https://www.w3school.com.cn/cssref/css_selectors.asp

链接伪类选择器

选择器 链接显示情况
link 未访问的链接
visited 已访问的链接
hover 鼠标移动到链接上
active 选定的链接
first-child 选择 父元素内的首个子元素
last-child 选择 父元素内的最后一个元素
nth-child(n) 选择器选取父元素的第n个子元素
nth-last-child(n) 选择 父元素内的第length-n个元素(重最后一个子元素开始数)

注意写的时候,他们的顺序,尽量不要颠倒,按照选择器开头的 lvha 的顺序。

类别选择器:伪类选择器{···}
a {   /* a是标签选择器  所有的链接 */
	font-weight: 700;
	font-size: 16px;
	color: gray;
}
a:hover {   /* :hover 是鼠标经过时*/
	color: red; /*  鼠标经过的时候,由原来的灰色变成了红色 */
}
.myclass:nth-child(1){···}
#myid:nth-child(2){···}

# 属性选择器

属性选择器可根据元素的属性及属性值来选择元素

/* 标签[属性名] */
a[href] {color:red;}

# 属性值的匹配

属性值选择

选择指定值

/* a标签的href属性的 'http://www.baidu.com' 值 */
a[href="http://www.baidu.com"]

属性值模糊选择

指定属性中选择可能存在的单词

/* p标签的href属性 存在 'http' 字符串值 */
p[href~="http"]

属性值子串匹配

类型 描述
[abc^="def"] 选择 abc 属性值以 "def" 开头的所有元素
[abc$="def"] 选择 abc 属性值以 "def" 结尾的所有元素
[abc*="def"] 选择 abc 属性值中包含子串 "def" 的所有元素
/* p标签的class属性以 'd' 开头的值 */
p[class^="d"]
/* p标签的class属性以 'd' 结尾的值 */
p[class$="d"]
/* p标签的class属性包含有 'd' 值 */
p[class*="d"]

# 优先级

# 选择器

优先级:ID > 类 > 标签 多个选择器作用一个标签时,先看优先级,不样式叠加

# 样式表

优先级:内行 > 内部 > 外部 多个样式作用一个标签时,属性冲突看优先级,否则样式叠加

# 元素显示模式

# 块级元素 (block)

block-level块元素通常都会占一整行或多整行。 块级元素可以设置宽度、高度、对齐等··属性,常用于网页布局和网页结构的搭建。

常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的块元素。

块级元素的特点:

  1. 总是从新行开始
  2. 高度,行高、外边距以及内边距都可以控制
  3. 宽度默认是100%
  4. 可以容纳内联元素和其他块元素

# 行内元素 (inline)

inline-level行内元素又称内联元素,单纯字体空间。 自身的字体大小和图像尺寸来支撑结构,一般不可以设置宽度、高度、对齐等属性,常用于控制页面中文本的样式。

常见的行内元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>标签最典型的行内元素

行内元素的特点:

  1. 和相邻行内元素在一行上
  2. 高、宽无效,但水平方向的padding和margin可以设置,垂直方向的无效
  3. 行内元素只能容纳文本或则其他行内元素。(a特殊)
  4. 注意:只有文字才能组成段落 因此 p 里面不能放块级元素。链接里面不能再放链接

# 行内块元素 (inline-block)

inline-block:范围只限于内容范围的大小 行内块元素的特点:

  1. 和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。
  2. 默认宽度就是它本身内容的宽度。
  3. 高度,行高、外边距以及内边距都可以控制。

# 标签显示总结

属性 说明
display : inline; 行内元素
display : block; 块级元素
display : inline-block; 行内块元素
元素 特点
行内元素 总是从新行开始
高度,行高、外边距以及内边距都可以控制。
宽度默认是容器的100%
可以容纳内联元素和其他块元素。
块级元素 和相邻行内元素在一行上。
高、宽无效,但水平方向的padding和margin可以设置,垂直方向的无效。
默认宽度就是它本身内容的宽度。
行内元素只能容纳文本或则其他行内元素。
行内块元素 和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。
默认宽度就是它本身内容的宽度。
高度,行高、外边距以及内边距都可以控制。

# 字体样式

样式属性 值 说明
font-size em
px
字号大小
font-family (可逗号隔开支持多字体) 字体类型
font-weight normal(400)
bold(700)
bolder(900)
lighter(200)
数值(100 ~ 900)
字体粗细
font-style normal(标准)
italic(斜体)
oblique(倾斜)
倾斜字体
font font: 斜体 粗细 大小 类型; 字体样式(连写)

# 字体编码

字体名称 英文名称 Unicode 编码
宋体 SimSun \5B8B\4F53
新宋体 NSimSun \65B0\5B8B\4F53
黑体 SimHei \9ED1\4F53
微软雅黑 Microsoft YaHei \5FAE\8F6F\96C5\9ED1
楷体_GB2312 KaiTi_GB2312 \6977\4F53_GB2312
隶书 LiSu \96B6\4E66
幼园 YouYuan \5E7C\5706
华文细黑 STXihei \534E\6587\7EC6\9ED1
细明体 MingLiU \7EC6\660E\4F53
新细明体 PMingLiU \65B0\7EC6\660E\4F53

# 文本样式

样式属性 值 说明
color 预定
十六进制值
RGB值 rgb(255,0,0),rgb(100%,0%,0%)
文本颜色
line-height 像素值、百分比、数值 字符的高距
letter-spacing 像素值、百分比、数值 字符的水平间距
text-align left、right、center 字体水平对齐方式
text-indent 像素值、百分比、字个数(em) 首行文本缩进
text-decoration none(无装饰)
underline(下划线)
overline(上划线)
line-through(删除线)
链接装饰
user-select none(不可选)、text(可选) 文本是否可被选择

字体顶与最顶行的距离=(设置值 - 字体)/2(单位:px)

# 背景样式

可以添加背景颜色和背景图片,以及来进行图片设置

透明色 transparent

属性 值 说明
background background:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置; 背景
background-color 预定
十六进制值
RGB值 rgb(255,0,0),rgb(100%,0%,0%)
背景颜色
background-position 数值、方位词
background-position : (length | position) (length | position);
背景位置 (X Y)
background-size 像素值、数值、auto 背景尺寸
background-repeat repeat(纵向和横向上平铺)
no-repeat(不平铺)
repeat-x(横向平铺)
repeat-y(纵向平铺)
背景平铺
background-origin padding-box(内边距框)
border-box(边框)
content-box(内容框)
背景起点
background-clip border-box (边框剪切)
padding-box (外边距剪切)
content-box (内容剪切)
text(文本剪切)
显示范围
background-attachment scroll(滚动)
fixed(固定)
背景固定还是滚动
background-image url("URL") 背景图片地址
background-blend-mode normal(普通)
multiply(相加)
screen(屏幕)
overlay(覆盖)
darken(变暗)
lighten(变亮)
color-dodge(减淡)
saturation(饱和度)
color(颜色)
luminosity(亮度)
背景混合模式
opacity 数值(0 - 1) 透明度
rgba rgba(0,0,0,value); RGB颜色
可设透明度

# 盒子样式

盒子就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器

属性 值 说明
border border : 边框的粗细 边框的样式 边框的颜色; 边框(连写)
border-width 像素值 边框的粗细
border-style none(默认)
solid 单实线
dashed 虚线
dotted 点线
double 双实线
边框样式
border-color 颜色值
#十六进制
rgb(r,g,b)、rgb(r%,g%,b%)
边框颜色
border-collapse separate(分开)
collapse(合并)
表格边框是否合并
border-spacing 像素值(px)
字符数(em)
相邻单元格边框间的距离
border-radius border-radius: 左上角 右上角 右下角 左下角;
border-radius: [百分比、像素值];
变圆角边框
padding padding: 上 [右 下 左]; 内边距
padding-top 像素值(px)
字符数(em)
上 内边距
padding-right 像素值(px)
字符数(em)
右 内边距
padding-bottom 像素值(px)
字符数(em)
下 内边距
padding-left 像素值(px)
字符数(em)
左 内边距
margin padding: 上 [右 下 左]; 外边距
margin-top 像素值(px)
字符数(em)
上 外边距
margin-right 像素值(px)
字符数(em)
右 外边距
margin-bottom 像素值(px)
字符数(em)
下 外边距
margin-left 像素值(px)
字符数(em)
左 外边距
box-shadow box-shadow: 水平阴影 垂直阴影 模糊距离 阴影尺寸 阴影颜色 内/外阴影;
box-shadow: 10px 10px 5px #888888;

# 边框写法总结

样式属性 常用属性值 说明
border-top-style:样式;
border-top-width:宽度;
border-top-color:颜色;
border-top:宽度 样式 颜色;
上边框
border-bottom-style:样式;
border- bottom-width:宽度;
border- bottom-color:颜色;
border-bottom:宽度 样式 颜色;
下边框
border-left-style:样式;
border-left-width:宽度;
border-left-color:颜色;
border-left:宽度 样式 颜色;
左边框
border-right-style:样式;
border-right-width:宽度;
border-right-color:颜色;
border-right:宽度 样式 颜色;
右边框
border-style:上边 [右边 下边 左边]; none(默认)
solid 单实线
dashed 虚线
dotted 点线
double 双实线
样式综合
border-width:上边 [右边 下边 左边]; 像素值 宽度综合
border-color:上边 [右边 下边 左边]; 颜色值
#十六进制
rgb(r,g,b)、rgb(r%,g%,b%)
颜色综合

# 盒子扩展

# 盒子宽高

盒子总宽度 = whidth + padding-right + padding-left + border-right + border-left = 盒子宽度 + 左右内边距 + 左右边框

盒子总高度 = height + padding-top + padding-bottom + border-top + border-bottom = 盒子高度 + 上下内边距 + 上下边框

padding和border会影响盒子原型大小,需要减去本身调节大小

# 盒子外边距实现居中

  1. 必须是块级元素
  2. 盒子指定宽度
  3. 左右的外边距都设置为auto

# 清除元素的默认内外边距

* {
   padding:0;         /* 清除内边距 */
   margin:0;          /* 清除外边距 */
}

# 浮动 (float)

CSS的定位机制有3种:普通流(标准流)、浮动和定位。

float 属性来定义浮动,语法格式:

选择器{
	float: 属性值;
}
属性值 说明
left 向右浮动
right 向左浮动
none(默认) 不浮动

# 浮动特性

浮动脱离标准流,不占位置,会影响标准流。浮动只有左右浮动。

  1. 如果在一个父类盒子内浮动的子类盒子,浮动的子类盒子不会超出浮动范围
  2. 一个父盒子里面的子盒子,如果其中一个子级有浮动的,则其他子级都需要浮动。这样才能一行对齐显示
  3. 元素添加浮动后,元素会具有行内块元素的特性

浮动目的

浮动的目的就是为了让多个块级元素同一行上显示。

float 浮 漏 特

浮: 加了浮动的元素盒子是浮起来的,漂浮在其他的标准流盒子上面。 漏: 加了浮动的盒子,不占位置的,它浮起来了,它原来的位置漏 给了标准流的盒子。 特: 特别注意,首先浮动的盒子需要和标准流的父级搭配使用, 其次 特别的注意浮动可以使元素显示模式体现为行内块特性。

# 浮动清除

清除浮动主要为了解决父级元素因为子级浮动引起内部高度为 0 的问题。就是把浮动的盒子圈到里面,让父盒子闭合出口和入口不让他们出来影响其他元素。 清除浮动:

 clear: 属性值;
值 说明
left 不允许左侧有浮动元素(清除左侧浮动的影响)
right 不允许右侧有浮动元素(清除右侧浮动的影响)
both 同时清除左右两侧浮动的影响

# 额外标签法

通过在浮动元素末尾添加一个空的标签! (不建议) 注意:是最后一个空的子标签

<div style=”clear:both;”></div>

优点: 通俗易懂,书写方便

缺点: 添加许多无意义的标签,结构化较差


# 父级添加overflow属性方法

可以通过触发 BFC 的方式,可以实现清除浮动效果。给父盒子添加!!!

overflow: hidden|auto|scroll;

优点: 代码简洁

缺点: 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素


# after伪元素清除浮动

:after 方式为空元素的升级版,好处是不用单独加标签了

.clearfix:after {  
    content: ""; 
    display: block; 
    height: 0; 
    clear: both;
    visibility: hidden;
}
 .clearfix {
    *zoom: 1;
} 
/*zoom 1就是ie6清除浮动方式 * ie7以下的版本所识别* /

父盒子调用 clearfix 类使用即可

优点: 符合闭合浮动思想 结构语义化正确

**缺点:**低版本不支持

注意: content:"" ,尽量不要带点


# 使用before和after双伪元素清除浮动

.clearfix:before, .clearfix:after { 
  content:"";
  display:table;  
}
.clearfix:after {
  clear:both;
}
.clearfix {
  *zoom:1;
}

父盒子调用 clearfix 类使用即可 优点: 代码更简洁

缺点: 低版本不支持

# 定位(position)

定位可以建立列式布局,将布局的一部分与另一部分重叠

position 属性用于定义元素的 定位模式

position: static | relative | absolute | fixed 
属性值 说明
static 静态定位,无特殊定位(默认)
relative 相对定位,由top、right、bottom、left等属性决定
absolute 绝对定位,相对于其上一个已经定位的父元素进行定位
fixed 固定定位,相对于浏览器窗口进行定位

# 静态定位 (static)

position: static HTML文档流中默认样式

  1. 无法偏移
  2. 可取消定位
  3. 跟随滚动

# 相对定位 (relative)

position: relative  多个元素一个搞定,盒子打包

  1. 可偏移,原有位置继续占有
  2. 移动位置,是以元素左上角为基点移动
  3. 跟随滚动

# 绝对定位 (absolute)

position: absolute  不占空间的漂浮元素

  1. 可偏移,原有位置不占有
  2. 无父级,以浏览器为基准
  3. 有父级,以父级盒子为基准
  4. 跟随滚动

口诀技巧

  1. 子绝父相 子级盒子是绝对定位,父级盒子是相对定位
  2. 子绝父绝 父级盒子是绝对定位,子级盒子是绝对定位

# 固定定位 (fixed)

position: fixed; 始终在窗口展示的元素

  1. 跟父亲没有关系,只认浏览器
  2. 完全脱标,不占有位置
  3. 不随滚动

# 叠放次序 (z-index)

z-index: 4; 调整重叠定位元素的堆叠顺序

  1. 默认属性值:0,值越大越靠顶层
  2. 取值相同,书写顺序,后者居上
  3. 没有单位
  4. 除了静态,只能用于定位,其他类型,则无效

# 定位总结

定位模式 是否脱标占有位置 是否可以使用边偏移 移动位置基准
静态 static 不脱标,正常模式 不可以 正常模式
相对定位 relative 脱标,占位置 可以 相对自身位置移动
绝对定位 absolute 脱标,不占位置 可以 相对于定位父级移动位置
固定定位 fixed 脱标,不占位置 可以 相对于浏览器移动位置

# 显示&隐藏

主要目的是让一个元素在页面中消失,但是不在文档源码中删除

# 显示 (display)

display 设置元素如何显示

display : none; 隐藏对象 、不保留位置


# 可见性 (visibility)

visibility 设置元素否显示

visibility属性值 说明
visible(默认) 对象可视
hidden 对象隐藏 、保留位置

# 溢出隐藏 (overflow)

overflow 当对象的内容超过指定的高度和宽度则隐藏

overflow属性值 说明
visible (默认) 不剪切内容也不添加滚动条
auto 超出自动显示滚动条,不超不显示
hidden 超出内容隐藏掉
scroll 总是显示滚动条

# 高级技巧

# 鼠标样式 (cursor)

cursor 鼠标移到对象上更换预定义光标形状

常用的鼠标样式:

cursor属性值 说明
default 默认
pointer 小手
move 移动
text 文本

# 禁止选中 (select)

user-select 设置用户是否可选中

/* 参数依次为 允许选中/禁止选中/可被选中/单击选中 */
user-select: [auto | none | text | all]

# 轮廓 (outline)

outline 边框边缘的外围,可起到突出元素的作用

outline: color style width
outline: #fff solid 1px;

参数: color: 选择颜色 style:样式 width: 宽度

一般情况,我们只关心的直接写法是 outline: 0;、outline: none;


# 文本域固定 (resize)

resize 调节文本域尺寸大小或固定

resize属性值 说明
none 固定大小
both 可调节大小
horizontal 只可以调节宽
vertical 只可以调节高

# 垂直对齐 (vertical-align)

vertical-align 设置内容与图片\表单的对齐方式

vertical-align属性值 说明
baseline (默认) 基线对齐
top 顶部对齐
middle 居中对齐
bottom 底部对齐

# 自动换行 (word-break)

word-break 设置文本换行行为

word-break属性值 说明
normal(默认) 强制显示所有文本
keep-all 只能在半角空格或连字符处换行(处理英文)
break-all 遇边界断行,不考虑单词完整
break-word 遇边界断行,考虑单词完整

# 空格换行 (white-space)

white-space 对元素内容的空格处理!br可换行!!!

white-space属性值 说明
normal (默认) 默认处理
pre 超出边界不断行
pre-wrap 空白距离不合并,碰边断行
pre-line 合并多余空白,碰边断行
nowrap 合并多余空白,结束换行

# 文字溢出 (text-overflow)

text-overflow 将元素内容溢出时用自定义字符代替

text-overflow属性值 说明
clip 切掉溢出部分
ellipsis 溢出部分替换为(...)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div {
            width: 100px;
            height: 20px;
            border: 1px solid red;
            margin: 20px;
            overflow: hidden;
            white-space: nowrap;
        }
        .no1 {
            text-overflow: clip;
        }
        .no2 {
            text-overflow: ellipsis;
        }
    </style>
</head>
<body>
<ul>
    <li>clip<div class="no1">内容内容内容内容内容内容</div></li>
    <li>ellipsis<div class="no2">内容内容内容内容内容内容</div></li>
</ul>
</body>
</html>

生效前提:

  1. 元素宽度小于内容
  2. 超出内容隐藏的属性overflow: hidden
  3. 操出边界不换行的属性white-space:( pre | nowrap )
  4. 为有内容的文本添加属性 text-overflow

# 动画&变形

# 元素变化(transform)

transform 属性实现元素平移、缩放、旋转、倾斜等效果

transform: none | translate(···) | ···
属性值 | 函数 说明
none 不变形
translate(<length>[,<length>]) 平移(X , Y)(参数只有一个则取X一个)
translateX(<length>) X轴平移
translateY(<length>) Y轴平移
scale(<number>[,<number>]) 缩放(X , Y)(参数只有一个则XY一样)
scaleX(<number>) X轴缩放
scaleY(<number>) Y轴缩放
skew(<angle>[,<angle>]) 倾斜(X , Y)(参数只有一个则取X一个)
skewX(<angle>) X轴倾斜
skewY(<angle>) Y轴倾斜
rotate(<angle>) 旋转角度

# 元素中心变换(transform-origin)

transform-origin 属性实现中心点的变换,默认坐标X:50% ; Y:50%

transform-origin: [左右] [上下]
transform-origin: [<percentage> | <length> | left | center | right]  [<percentage> | <length> | top | center | bottom]

尖括号单位说明:

length: 长度 number: 数值 percentage: 百分比 angle: 角度(deg、grad、rad、turn)

# 过渡效果(transition)

# 参与过渡属性

transition-property 属性 控制元素在指定时间进行渐变式变化

transition-property: all | none | <property> [, <property>]

all: 默认值,所有可进行过渡的css属性 none: 不指定过渡的css属性 property: 指定过渡的css属性。多属性以, 分隔

# 过渡持续时间

transition-duration 属性 指定过渡的持续时间

transition-duration: <time> [, <time>]

<time>: 指定过渡时间(默认0)。多属性以, 分隔

# 过渡延迟时间

transition-delay 属性 指定过渡的延迟时间

transition-delay: <time> [, <time>]

<time>: 指定过渡时间(默认0)。多属性以, 分隔

# 过渡动画类型

transition-timing-function 属性 指定过渡的动画类型

transition-timing-function: linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier(x1 , y1 , x2 , y2) [, linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier(x1 , y1 , x2 , y2)]
属性值 说明
linear 线性渡过
ease 平滑渡过
ease-in 渐变加速
ease-out 渐变减速
ease-in-out 慢》快》慢
cubic-bezier(x1 , y1 , x2 , y2) 贝塞尔曲线类型

# 过渡连写

transition: ease-in-out 0.5
/* 两个参数 */
transition: <指定属性> <持续时间>;
/* 三个参数 */
transition: <指定属性> <持续时间> <延迟时间>;
/* 三个参数 */
transition: <指定属性> <持续时间> <动画类型>;
/* 多个属性对象 */
transition: <指定属性> <持续时间> , <指定属性> <持续时间> [,...];
/* 全参 */
transition: <指定属性> <持续时间> <动画类型> <延迟时间>;

# 动画(Animation)

# 关键帧

实现动画前先定义动画帧

@keyframes name '{' <keyframes-blocks> '}';

name: 动画名称 <keyframes-blocks> : 定义动画在不同时间段的样式规则

实现过渡动画

1.关键字from & to 定义帧位置

从一个状态过渡到另一个状态

from{
    属性值n :属性值1;
    ···
}
to{
    属性值n :属性值1;
    ···
}
/*完整定义*/
@keyframes myFrame{
    from{···}
    to{···}
}

2.百分比定义 关键帧位置

通过百分比指定过渡各个状态

@-keyframes myFrame{
    0%{···}
    20%{···}
    50%{···}
    80%{···}
    100%{···}
}

# 动画属性

定义关键帧后,还需要相关属性执行关键帧的变化

animation: name | duration | timing-function | delay | iteration-count | direction;
值 描述
animation 复合属性
animation-name 需要绑定到选择器的 keyframe 名称
animation-duration 动画完成时长
animation-timing-function 指定对象过渡类型
animation-delay 动画开始前延迟时长
animation-iteration-count 动画播放的次数(infinite无限循环)
animation-direction 是否轮流反向播放动画
值:normal(正方向)、alternate(反方向)
animation-play-state 指定对象动画的状态
值:running(运动)、paused(停止)
animation-fill-mode 指定对象动画之外的状态
值:none(默认)、forwards(动画后)、backwwards(动画前)、both(两者都有)

# 弹性布局 (Flex)

# justify-content

对齐内容 , 主轴控制 内容指定分配空间

属性值 说明
flex-start 项目开头对齐(默认)
center 项目居中对齐
flex-end 项目结尾对齐
space-between 所有项目两端分开对齐 , 其余空间平分
space-around 所有项目对齐两端都有一半大小空间
space-evenly 所有项目左右两端空间平分

flex-start(默认)

flex-start

center

flex-end

space-between

space-around

# align-items

对齐项目 , 交叉轴控制 项目之间和项目周围垂直分配空间

属性值 说明
stretch 项目拉伸填充(默认)
center 项目居中对齐
flex-start 项目开头对齐
flex-end 项目末端对齐
baseline 项目基线对齐

stretch(默认)

center

flex-start

flex-end

baseline

# flex-direction

轴互换 , 主轴 和 交叉轴 互换

属性值 说明
row 行排列 (默认)
row-reverse 行反序排列
column 竖排列
column-reverse 竖反序排列

row(默认)

row-reverse

column

column-reverse

# flex-wrap

让元素进行折行排列,使得每行的元素都不超过容器的宽度

属性值 说明
nowrap 不换行(默认)
wrap 换行
wrap-reverse 反序移出换行

nowrap(默认)

wrap

wrap-reverse

### Flex 调整

align-content 对齐内容

align-items 对齐项目

align-self 对齐本身

# 精灵图

由很多小的背景图像合成的大图被称为 精灵图。可以减少浏览器与服务器数据交换的次数。

精灵图运用

根据大小查找图片,锁定位置

精灵图在css使用到的属性有

/*背景连写*/
background
/*背景图片*/
background-image: none | url;
/*背景平铺 */
background-repeat: repeat | no-repeat | repeat-x | repeat-y ;
/*背景位置*/
background-position: (length | position) (length | position);
/*length: 精准坐标、position: 方位名词*/

原图调用 :(京东精灵图)

示范代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        li {
            margin: 20px;
            float: left;
        }
        .no1 {
            width: 30px;
            height: 26px;
            background: url("img/jd.png") no-repeat;
        }
        .no2 {
            width: 16px;
            height: 22px;
            background: url("img/jd.png") no-repeat 0 -68px;
        }
        .no3 {
            width: 230px;
            height: 52px;
            background: url("img/jd.png") no-repeat 0 -134px;
        }
        .no4 {
            width: 20px;
            height: 26px;
            background: url("img/jd.png") no-repeat 0 -408px;
        }
        .no5 {
            width: 42px;
            height: 44px;
            background: url("img/jd.png") no-repeat 0 -442px;
        }
    </style>
</head>
<body>
<ul>
    <li class="no1"></li>
    <li class="no2"></li>
    <li class="no3"></li>
    <li class="no4"></li>
    <li class="no5"></li>
</ul>
</body>
</html>

结果图示


# 滑动门

为网页元素设置特殊形状的背景。 以下我网站例子:

背景原型:

滑动门应用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body {
            height: 1000px;
            /*背景*/
            background: url("img/wx.jpg") repeat-x;
        }
        .box li {
            float: right;
            margin: 20px;
            list-style: none;
        }
        .box a {
            height: 33px;
            line-height: 33px;
            text-decoration: none;
            display: inline-block;
            color: #fff;
            /*按钮样式背景(左)*/
            background: url("img/to.png") no-repeat;
            padding-left: 16px;
        }
        .box span {
            height: 33px;
            display: inline-block;
            /*按钮样式背景(右)*/
            background: url("img/to.png") right;
            padding-right: 16px;
        }
        /*鼠标指定时高亮*/
        .box a:hover span {
            background: url("img/ao.png") right;
        }
        .box a:hover {
            background: url("img/ao.png") no-repeat;
        }
    </style>
</head>
<body>
    <ul class="box">
        <li><a href="#"><span>PC平台</span></a></li>
        <li><a href="#"><span>开放平台</span></a></li>
        <li><a href="#"><span>帮助与反馈</span></a></li>
        <li><a href="#"><span>首页</span></a></li>
    </ul>
</body>
</html>

说明:

  1. a 设置背景左侧,内边距撑开左框中的宽度
  2. span 设置背景右侧,内边距撑开有边框的宽度,左边有内容
  3. a包含span是因为整体是可以点击的缘故

# 字体图标

字体图标是以特殊形式的字体呈现出来的图标,可透明、旋转、改颜色等····

使用流程:

  1. 获取svg格式的效果图
  2. 上传生成兼容性的字体文件包
  3. 下载到本地的兼容字体文件包
  4. 字体文件包引入到HTML页面中

引入网页:

  1. 创建fonts文件夹在根路经里

  2. 在样式里声明字体图标,声明代码可在下载的项目里获取!!!

    以下是例子:(不同来源网站不同声明代码!!!)

    @font-face {
      font-family: 'icomoon';
      src:  url('fonts/icomoon.eot?7kkyc2');
      src:  url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),
        url('fonts/icomoon.ttf?7kkyc2') format('truetype'),
        url('fonts/icomoon.woff?7kkyc2') format('woff'),
        url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');
      /*清除粗细*/
      font-weight: normal;
      /*清除倾斜*/
      font-style: normal;
    }
    
  3. 盒子使用字体

    /*盒子字体可用*/
    span {
        /*icomoon: 字体图标的名称*/
        font-family: "icomoon";
    }
    
  4. 盒子里添加结构,图标编码可在项目里获取!

    span::before {
    		 content: "\e900";
    	}
    /*或者 (一下是特殊字体图标)*/
    <span>&#xe613;</span> 
    

# 版心和布局流程

# 版心

是指网页中主体内容所在的区域。一般在浏览器窗口中水平居中显示,常见的宽度值为960px、980px、1000px、1200px等。

# 布局流程

布局时通常需要遵守一定的布局流程,具体如下:

  1. 确定页面的版心(可视区)
  2. 分析页面中的行模块,以及每个行模块中的列模块
  3. 制作HTML结构
  4. CSS初始化,然后开始运用盒子模型的原理,通过DIV+CSS布局来控制网页的各个模块。

# CSS书写规范

# 空格规范

【强制】 选择器 与 { 之间必须包含空格。

.selector { }

【强制】 属性名 与之后的 : 之间不允许包含空格, : 与 属性值 之间必须包含空格。

font-size: 12px;

# 选择器规范

【强制】 当一个样式包含多个选择器时,每个选择器声明必须独占一行。

/*好习惯*/
.post,
.page,
.comment {
    line-height: 1.5;
}

/*坏习惯*/
.post, .page, .comment {
    line-height: 1.5;
}

选择器的嵌套层级不大于 3 级,位置靠后的限定条件应尽可能精确。

/* 好习惯 */
#username input {}
.comment .avatar {}

/* 坏习惯 */
.page .header .login #username input {}
.comment div * {}

# 属性规范

【强制】 属性定义必须另起一行。 【强制】 属性定义后必须以分号结尾。

/* 好习惯 */
.selector {
    margin: 0;
    padding: 0;
}

/* 坏习惯 */
.selector { margin: 0; padding: 0; }

# 高度格式

顶线(字体最高),中线(字体中间),基线(字体底部),底线(最底部) 基线与基线的距离为行高。 字体上距离=(设置值 - 字体) / 2(单位:px)

# CSS 三大特性

# CSS层叠性

一般情况下,如果出现样式冲突,则会按照CSS书写的顺序,以最后的样式为准。

  1. 样式冲突,遵循的原则是就近原则。 那个样式离着结构近,就执行那个样式。
  2. 样式不冲突,不会层叠

# CSS继承性

子标签会继承父标签的某些样式。想要设置一个可继承的属性,只需将它应用于父元素即可。 恰当地使用继承可以简化代码,降低CSS样式的复杂性。子元素可以继承父元素的样式

# CSS优先级

出现两个或更多规则应用在同一元素上,这时就会出现优先级的问题。注意的特殊情况:

  1. 继承样式的权重为0!!!
  2. 行内样式优先。
  3. 权重相同时,CSS遵循就近原则。
  4. CSS定义了一个!important命令,该命令被赋予最大的优先级。

# CSS特殊性

关于CSS权重,需要一套计算公式来去计算,这个就是 CSS Specificity,是衡量CSS值优先级的一个标准。 specificity用一个四位的数字串(CSS2是三位)来表示,更像四个级别,值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越

继承的贡献值(权重) 0,0,0,0
* 全部 0,0,0,0
每个元素(标签) 0,0,0,1
每个类,伪类 0,0,1,0
每个ID 0,1,0,0
每个行内样式 1,0,0,0
每个!important(重要的) ∞无穷大

权重是可以叠加的 比如的例子:

div ul  li   ------>      0,0,0,3

.nav ul li   ------>      0,0,1,2

a:hover      ------>      0,0,1,1

.nav a       ------>      0,0,1,1   

#nav p       ----->       0,1,0,1

数位之间没有进制。比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不会存在10个div能赶上一个类选择器的情况。

# 权重总结

  1. 使用了!important声明的规则。
  2. 内嵌在HTML元素的style属性里面的声明。
  3. 使用了ID 选择器的规则。
  4. 使用了类选择器、属性选择器、伪元素和伪类选择器的规则。
  5. 使用了元素选择器的规则。
  6. 只包含一个通用选择器的规则。
  7. 同一类选择器则遵循就近原则。

权重是优先级的算法,层叠是优先级的表现

#CSS
上次更新: 2023/03/12, 00:43:49

← HTML JavaScript→

最近更新
01
HTTPS自动续签
10-21
02
博客搭建-简化版(脚本)
10-20
03
ruoyi-vue-plus-部署篇
07-13
更多文章>
Theme by Vdoing | Copyright © 2019-2024 | 桂ICP备2022009417号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式