CSS 从头到尾

163 阅读28分钟
  • 重绘不一定需要重排,重排必然会导致重绘

CSS是什么?  层叠样式表

一、网页布局

通栏:始终占满整个屏幕宽度

外围结构不需要设置宽度,或者用100%(跟随父元素)

版心:固定宽度,放网页核心内容(ps中ctrl+r量取)

站点文件:首页(index.html)

二、样式

1、外部样式

(1)、html链接关联CSS名称<link href="index.css" rel="stylesheet" / type=""text/css>

顶部图标`<link href="img8.jpg" rel="icon"/>`

说明:

link需要放在<head></head>之间

rel:用于定义文档关联,如stylesheet、icon等

type:定义文档类型

权重:

1、同一个样式中表中优先级和书写的顺序有关,后写的优先级高

2、内部样式和外部样式表的优先级也和书写顺序有关,后写优先级高(另.内联优先级最高)(2)、<style type=”text/css“>(不推荐)</style>

2、内部样式(不推荐)

A、在body创建要修饰的对象,如

段落

B、在head标签创建一个

C、在标签里面,书写想要修饰的样式

规范:命名不能中文,数字开头,一般采用字母和字母+数字(可以用_和-);起名不要用关键字(所有标签名、属性都是属于关键字)

优秀命名方式:次首字母大写驼峰命名和蟒蛇命名法以及-字符链接命名

header头部区域;nav导航区域;banner区域;con内容区域;links链接区域;footer底部区域

3、行内样式(内联样式)

<标签 style="属性1:值1;属性2:值2; ……"></标签>

三、CSS选择符

(1)类型选择符

用法:所有html标签都可当做类选择符用,body,div,p,h1,a,img,em,strong,span......

作用:

a:统一某一个类型的标签的时候

b:想清除某个标签默认样式的时候

img {vertical-align: top;}

(2) id选择符

用法:<标签名 id="名字"></标签名>

css中 #取的名字{}

特点:id是惟一的,一个页面只能出现一次;主要用于外围结构构建(最外面的几个div)、

提示标签

锚点<标签 id=“名字”></标签>

(3)类选择符(前端用的最多)

用法:<标签 class="起的名字"></标签名>

css中: .自己取的名字{样式;}

特点:一个标签可以用多个名字,多个标签也可用相同名字

(4)包含选择符

用法:父选择符 父选择符 子选择符{子元素样式;}

特点:懒得给子元素取名,且某一个父元素有名字时

(5)群组选择符

用法:选择符1,选择符2,选择符3{统一样式}

(6)通配符

用法:页面中所有标签

特点:用于css开头清除内外边距

padding:0px;margin:0px;

(7)伪类选择器

用法:

a:link {color: red;} /\* 未访问的链接状态 \*/

a:visited {color: green;} /\* 已访问的链接状态 \*/

a:hover {color: blue;} /\* 鼠标滑过链接状态 \*/

a:active {color: yellow;} /\* 鼠标按下去时的状态 \*/

特点:常用于a超链接,且顺序不可更改

另:hover亦可用于其他标签,如div:hover(鼠标悬停)

cursor属性

1 、auto :标准光标

2 、default :标准箭头

3、 crosshair 光标呈现为十字线。

4、 pointer(手形光标)

5、 text 此光标指示文本。

6、 wait :等待光标

权重的总结:

内联样式表: 1000 (跟元素最接近)

id选择符: 0100 (id唯一)

(伪)类选择符:0010(用户定义行为)

标签选择符: 0001 (标签范围过广,权重较低)

通配符:0000 (标签范围最广,所以权重最低)

后代(包含)选择符:权重时父元素和子元素权重的和

群组选择符:权重还是组中各选择符自身的权重

!important 权重最高的!!!

注意:权重相同时,按照后写的执行,写在后面的样式会覆盖掉前面的样式

总结:

!important > 内联样式表 >id选择符 >(伪)类选择符 >标签选择符 >通配符

后代(包含)选择符的权重需要对父元素和子元素的权重相加

群组选择符的权重就是本身,不会发生变冉

层叠性:1、开发者模式>读者模式>浏览器模

2、权重 3、根据顺序进行优先级排列

四、CSS修饰文本相关的样式

1、font-size  默认文字大小是16px(设置偶数,且不低于12px,ps中文本的高)

pt 磅 一般用于 印刷邻域 9pt == 12px em相对大小,根据父元素决定

2、color 文本颜色 单词、值、rgba(255、255、255、0.8)

3、font-weight:bold 加粗,bolder更加粗 normal正常

4、font-style:italic 斜体字 oblique 倾斜的文字

5、font-family:"宋体","楷书" 放在""里面

6、line-height:单行文本垂直居中对齐  line-height:数值和height的数值一样就行

7、line-align:center 水平居中 justify 两端对齐 right left

8、text-indent: 2em;首行缩进,取负值表示悬挂缩进(输入框前空字符)

9、text-decoration:none 去下划线;underline下划线 line-through删除线 overline 上划线

10、letter-spacing: px 字符间距:

11、word-spacing: px 单词间距

12、控制文本大小写:text-transform:capitalize首字母大写 uppercase全大写 lowercase全小写

五、 列表属性

1、去掉列表符号 list-style:none(常用作去掉列表原有属性,用背景图替换列表符号)

2、list-style-image:url() 用图片做列表符号

3、list-style-position 控制列表符号位置

属性outside、inside(列表符号在盒子外边、里边)

4、控制列表符号 list-style-type:circle\ square(空心圆、正方形)disc 实心圆;

六、 边框属性

1、border:30px solid red;(复合写法) 边框默认在元素外边

border:none(去除边框) 0

拆分:border-width: 边框大小

border-color: 边框颜色

border-style: 边框类型(solid实线、dashed虚线、dottedd点状、double双线、none

2、单独给一个方向设置边框

border-left(right、top、bottom):30px solid red;

3、属性值对应的边框位置border-width/style/color:

1个值:四周; 2个值 上下 左右; 3个值 上 左右 下; 4个值 上 右 下 左

4、画三角形:元素宽高为0px,然后加上四周边框,最后把不要的边框颜色变透明transparent

5、圆角边框: border-radius: 20px 20px 20px 20px ;

七、背景图

1、复合写法background:skyblue url(../images/b.jpg) no-repeat fixed;

2、背景图片  background-image:url();

特点:

A、背景图默认是平铺的

B、背景图默认是不占位置的

C、背景图的显示范围由容器大小决定

background-size:cover;可以让背景图完全盖住容器,但是部分背景图看不全

3、背景颜色  background-color;

4、背景图相关的大小  background-size:横向的px  纵向s的px;

5、背景图的位置  background-position:水平的   垂直的;

水平的  left或者right或者center

垂直的  top或者bottom或者center 

位置的移动可以取负数(数值),默认是0px 0px

6、背景图的平铺设置  background-repeat:repeat/no-repeat;(不重复)

7、背景图的依附设置  background-attachment:fixed;  背景图的固定

1.背景图原点的改变(背景的起始点)

background-origin:

padding-box 背景图填充框的相对位置

border-box 背景图边界的相对位置

content-box 背景图内容的相对位置

2.背景的裁切:

background-clip:

padding-box

border-box

content-box

3.背景图的大小:

background-size:

属性值:

固定大小 100px 200px

百分比 100% 100%

cover 成比例放大,直到铺满整个容器

contain 成比例放大,当背景图的宽度或者高度到达最大边界就停止

八、脱离文档流(元素浮动)

使用场景:想要竖着的盒子横过去的时候,可以用

 float:left;给左浮动  向左飘

 float:right;给右浮动  向右飘

特点:

1、一旦一个元素浮动了之后,浮动了之后,就飘着了,不再占据浏览器的位置,如果后面的容 器没有浮动的话,会跑上去,占据位置,但是后面容器里面的内容,会环绕显示。

2、多个容器同时浮动,会飘着横向排列

3、浮动引起的高度塌陷:在一个包含结构里面,如果父元素没有设置高度,所有的子元素又浮动了,所有的子元素会悬空飘着不占据位置,对于父元素来说里面现在就是空的,那么这个现象叫做高度塌陷解决方法:

A、给父元素设置高度

B、给父元素添加overflow:hidden;(原因是因为触发了父元素为BFC)

\

九、页面中元素间距

 1、外间距margin

使用场景:这个间距对于该元素来说是外面的时候用,常用于同级元素产生边距

(1)、单一方向:

margin-top 外上

margin-bottom 外下

margin-left 外左

margin-right 外右

(2)、数值与位置(可以取负值)

margin:10px四周; margin:10px 20px 上下 左右; margin:10px 20px 30px 上 左右 下

margin:10px 20px 30px 40px 上右下左

(常见bug)

a、上方元素的margin-bottom与下方元素的margin-top会重合,浏览器取较大值

b、父子结构中给子元素加的margin-top会传递给父元素,造成两个元素的位置一起下移,

  解决方法:给父元素设置overflow:hidden;(溢出隐藏),此时父元素上边还会留在原来位

置,但是会被子元素拉长高度

2、内填充padding

使用场景:间距对于该元素来说是里面的时候用,常用于父子结构div,添加在父元素上

padding是添加在原有盒子大小之上的所以会把盒子给撑大

解决:a、父盒子宽高-padding=预期宽高

b、box-sizing:border-box;(盒子模型为边框盒子)

(1)、单一方向

同margin

(2)、数值与位置(padding不能取负值)

同margin

十、文本溢出属性

单行文本溢出设置

width: 200px;

white-space: nowrap;

overflow: hidden;

text-overflow: ellipsis;

多行文本显示省略号

display: -webkit-box;

-webkit-box-orient: vertical;

-webkit-line-clamp: 3;

text-overflow: ellipsis;

overflow: hidden;

white-space: 空白空间的处理

whiteSpace:'normal',  wordBreak: 'break-all', wordWrap: 'break-word'

normal 默认值,多余空白空间只会保留一个

pre 空白会被浏览器保留

pre-wrap 保留一部分的空白空间,可以正常换行

pre-line 合并空白字符,只会显示一个,正常换行

nowrap 文本不会换行,直到遇到
标签为止

overflow:内容溢出

visible 默认值,内容不会被修剪,超出的内容会在盒子外面

hidden 内容会被裁剪,并且不可见

scroll 内容会被裁剪,但是浏览器会显示滚动条,可以看其余的内容

auto 内容会被裁剪,但是浏览器会显示滚动条,可以看其余的内容

overflow-y:auto 纵向滚动条

inherit 从父元素继承的overflow属性

text-overflow:文本溢出

clip 不显示省略号,直接裁剪

ellipsis 显示省略号

十一、元素类型

元素划分 :

1、块状元素(display:inline;转换为内联元素)

特点:可添加宽高、独占一行、矩形显示常作为容器

如:div -最常用的块级元素

form - 交互表单

ol、ul 、dl -和 li-dt-dd 列表及其元素

table-tr-td 表格及行-单元格

h1 -h6 大标题

p - 段落

hr - 水平分隔线

fieldset - 表单字段集

colgroup-col - 表单列分组元素

2、内联元素(display:block;转换为块元素,同浮动)

特点:不可添加宽高、一行逐个显示、不支持(padding-top、margin-top/bottom)

如: a –超链接(锚点)

span - 常用内联容器,定义文本内区块

input - 输入框

label - 表单标签

img - 图片

b - 粗体(不推荐)

i - 斜体(不推荐)

br - 换行

em -斜体 强调

strong - 粗体强调

sub - 下标

sup - 上标

textarea - 多行文本输入框

u - 下划线

select - 项目选择

3、可变元素(display:inline-block转换成内联块状元素)

特点:根据布局流的规则显示成块或者内联

如:

元素转换display:block/inline/inline-block/none/list-item

其中:

display:block;转换为块元素,同浮动

display:inline;转换为内联元素

display:inline-block;转换成内联块状元素

display:none;隐藏元素 (nav中悬停显示)

display:list-item;li默认值,带有列表符号

display:inline-block;引起的空隙问题

父元素添加:font-size:0px(换行空格占一个字符)

a:hover{

/\* 鼠标悬停 背景色改变成和ul的底边框一样的颜色 \*/

background:orangered;

}

鼠标悬停在a标签上 它下面的em 隐藏

a:hover em {

    display:none;

}

鼠标悬停在a标签上 它下面的 span显示

a:hover span {

display:inline;

}

十二、置换元素

置换元素:浏览器根据标签和属性,来决定元素显示的内容

1.转存失败,建议直接上传图片文件

例如:浏览区根据img的src属性来显示内容,

2.

非置换元素:

在浏览器中,大多数的标签都是非置换元素,直接将内容展示在浏览器上

十三、嵌套规则

1、标签本身嵌套规则

ul li

ol li

dl dt dd

2、块状元素可以嵌套块状或内联元素(p段落标签除外)

3、内联元素不可以嵌套块状元素(a超链接标签除外)

4、元素一般不能自己嵌套自己(div除外)

十四、图片问题

浏览器在解析  转存失败,建议直接上传图片文件的时候,会向下多解析3像素。

 解决方法:给img设置img{vertical-align:top;}  垂直靠上对齐

display:block; //解决3px空隙的问题



object-fit:一般用于 imgvideo 标签,一般可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等。

fill 默认,不保证保持原有的比例,内容拉伸填充整个内容容器

contain 保持原有尺寸比例。内容被缩放

cover 保持原有尺寸比例。但部分内容可能被剪切

none 保留原有元素内容的长度和宽度,也就是说内容不会被重置

scale-down 保持原有尺寸比例。内容的尺寸与 nonecontain 中的一个相同,取决于它们 两个之间谁得到的对象尺寸会更小一些

initial 设置为默认值

inherit 从该元素的父元素继承属性

十五、元素定位

postition:定位属性

方法:1、给目标元素添加position属性;2、给参照物添加position属性;3、确定坐标值

position值:

1、absolute:绝对定位(用于包含结构父级元素,无父级则为浏览器窗口-移动端画版块)

2、relative:相对定位(用于包含结构子元素)

不会触发脱离文档流、参照物为元素本身用于微调

3、fixed:固定定位(用于侧边固定或者居中小广告)

脱离文档流、参照物为浏览器窗口

4、sticky:黏性定位(顶部导航nav黏着上边框)

等于relatice和fixed的结合。没有超出临界值就是relative,超出之后就是fixed

5、static:静态定位(默认值,不识别top、right、bottom、left)

包含块:父级元素用绝对定位position:absolute 子级元素用相对定位position:relation

层级控制:z-index:数值(数值越大层级越高)

浏览器窗口居中:(居中小广告、强制浏览页面)

方式一:

position:fixed;

top:50%;

left:50%;

transform: translate(0%, -50%);

width: fit-content;

box-sizing: content-box;

方式二:

position:fixed;

top:0;

bottom:0;

left:0;

right:0;

margin:auto;

b、子元素在父元素中居中:

父元素:position:relative;

子元素:

position:absolute;

top:0;

bottom:0;

left:0;

right:0;

margin:auto;

c、banner图:

img{

position:absolute;

left:50%;

margin-left:-图片宽度的一半;

}

父元素:position:relative;

十六、锚点

锚点:超链接的一种,在单一页面内,不同位置的跳转

语法:

<标签 id="锚点名称">\</标签>

<a href="#锚点名称"></a>

搭配 html { scroll-behavior: smooth;} 实现平滑滚动

目标伪类选择器:一般搭配锚点、超链接进行使用

选择符:target{ }

锚点盖楼:左边用position:fixed固定导航区域,然后用锚点进行跳转

<a href="#box1">1</a> <div id="box1">1</div>

十七、宽高自适应

宽度自适应:当元素是块状元素 不设置 或者 设置为100%,当前元素跟随父元素发生变化

高度自适应:不设置height,或者height:auto,高度由内容撑开

1、最小高度: min-height:内容高度≤min-height时显示min-height高度

内容高度≥min-height时显示内容高度

2、全屏页面

子元素的高度随父元素的发生变化

父元素必须有高度,子元素高度100%

需求:

让一个元素来覆盖整个浏览器窗口

html,body{

height:100%;

}

3、高度塌陷:

如果子元素都发生了脱离文档流,父元素没有设置高度,父元素会出现高度塌陷

解决高度塌陷的方法:添加

overflow:hidden;

缺点:overflow:hidden;溢出隐藏,会隐藏定位元素越边部分

C.在浮动元素的后面添加一个空的元素,并且设置样式为clear:both;

clear属性值:left right both(两者都)

隐藏元素:

display:none;

彻底隐藏,不占据页面空间

visibility:hidden;

隐藏元素,占据空间

十八、伪对象选择器

:after{ } 必须搭配content:""属性来使用 在元素后面追加内容,

一般搭配包含结构的定位来扯开距离

#footer .xiaoa::after{

    content: "";

    display: block;

    height: 12px;

    width: 1px;

    background: #7a7a7a;

    position: absolute;

    left: 55px;

    top: 8px;

}

:before{ }必须搭配content:""属性来使用 在元素后面追加内容

:first-letter{ } 定义第一个字符的样式

:first-line{ } 定义第一行的样式

目标伪类选择器:一般搭配锚点、超链接进行使用

选择符:target{}

十九、BFC-块级格式化上下文

触发条件:

html根标签、float不为none、overflow:hidden、position:absolute和fixed、

display:inline-block\flex\inline-flex...

双飞翼、两栏自适应布局:两边固定宽并浮动,中间宽不固定并触发BFC

BFC区域和浮动区域不会重叠!!!

二十、浏览器前缀

chrome:-webki-t firefox:-moz- ie:-ms- 欧朋:-o-

css3设置的模式:

兼容模式

标准模式

文本阴影:

text-shadow:属性值1 属性值2 属性值3 属性值4;

属性值1:阴影的水平方向

属性值2:阴影的垂直方向

属性值3:阴影的大小

属性值4:阴影的颜色

二十一、背景色渐变

线性渐变:从一个方向到另一个方向的渐变

语法:

background:linear-gradient(direction,color-stop1,color-stop2....);direction:默认值从上往下

1.单一方向的渐变

to top

to bottom

to left

to right

2.对角渐变

to right bottom

to left top

3.角度的渐变

30deg

径向渐变:从一个点向四周进行渐变

语法:

background: radial-gradient(center, shape, size, start-color, ..., last-color);

center:渐变点的位置 shape:ellipse和circle

size: closest-side:最近边; farthest-side:最远边;

closest-corner:最近角; farthest-corner:最远角。

重复性渐变:

1.重复性线性渐变

div { background: repeating-linear-gradient(red, yellow 10%, green 20%); }

2.重复性径向渐变

div { background: repeating-radial-gradient(red, yellow 10%, green 20%); }

二十二、过度 - 放在css元素本身中

transition:过度的属性 过渡时间 延时 过度类型(默认linear)

例:transition: width 2s 2s linear,height 2s 2s linear;(可设置多属性值)

二十三、2D

一般搭配hover、transition使用

移动:transform:translate(x,y) 在平面进行位置移动

    transform:translateX(参数)水平移动 
    transform:translateY(参数)垂直移动

旋转:transform:rotate(旋转角度) 取值:deg

缩放:transform:scale(x,y) 取值0-1-+

倾斜:transform:skew(水平,垂直) 取值:deg

变形原点:

transform-orign:x,y,z; 取值:left,0px, transform-origin:20% 40%;

蒙层效果:盒子覆盖背景+透明opacity:0.2;

background-color: rgba(0,0,0, 0.3);

二十四、3D

父元素形成3d空间:transform-style:preserve-3d;

父元素形成景深:perspective: 建议900px-1200px之间

位移transform:translate3d(x,y,z) translateX(),translateY(),translateZ()

旋转transform:rotate3d(edg) rotate3dX(),rotate3dY(),rotate3dZ()

缩放transform:scale3d(x,y,z) scale3dX(),scale3dY(),scale3dZ()

背面不可见:backface-visibility:hidden

二十五、动画

关键帧:@keyframes 取名 { 0%{} 100%{} }

动画:

复合写法:animation:帧名 时间 运动类型(linear) 延时 循环(infinite);

悬停看图:animation-play-state 属性值:paused 暂停 running 运动

animation-name 关键帧的名称

animation-duration 动画持续的时间

animation-timing-function 动画运动的类型 (匀速 加速 减速 贝塞尔曲线)step-start//直接跳到下一帧

animation-delay 动画的延迟

animation-iteration-count 动画运动的次数 (默认执行一次) infinite无限循环

animation-direction 运动方向

属性值:

reverse 反向运动

alternate 正反方向,往复运动

alternate-reverse 先反向再正向一个往复运动

animation-fill-mode 运动运动前或者运动后,其动画效果是否可见

属性值:

forwards 保留动画最终的状态

backwards 保留动画最初的状态

二十六、语义化标签

header 头部 footer 底部 nav 导航(一般放在headersc里面) main只能有一个(版心)

section 划分区域 article (语义化比section强)内容 aside 左右区域

figure 独立区域 figcation:figure的标题 time装时间(内联)

二十七、多媒体标签

配合source使用

<audio controls>

<source src="horse.ogg" type="audio/ogg">

<source src="horse.mp3" type="audio/mpeg">
    您的浏览器不支持 audio 元素。
</audio>

type属性:

视频:

video/ogg video/mp4 video/webm

音频:

audio/mpeg audio/ogg

视频

autoplay autoplay 如果出现该属性,则视频在就绪后马上播放。

controls controls 如果出现该属性,则向用户显示控件,比如播放按钮。

height pixels 设置视频播放器的高度。

width pixels 设置视频播放器的宽度。

loop loop 如果出现该属性,则当媒介文件完成播放后再次开始播放。

preload preload 如果出现该属性,则视频在页面加载时进行加载,并预备播放。

如果使用 "autoplay",则忽略该属性。

src url 要播放的视频的 URL。

video:

src: 资源路径

controls 控件展示

autoplay 自动播放

muted 静音属性

loop 重复播放视频

poster 视频下载时显示图像

preload="none"

音频 audio:同视频

二十八、css3属性

1、属性选择器

选择符\[属性名] 只要带有当前属性名的就会被选中

选择符\[属性名="属性值"] 不仅指定了属性名,还指定了属性值

选择符\[属性名\~="属性值"] 属性值是一个词列表,只要包含了指定的属性值就可以选中

选择符\[属性名^="属性值"] 属性值必须是指定的属性值开头

选择符\[属性名\$="属性值"] 属性值必须时指定的属性值结尾

选择符\[属性名\*="属性值"] 属性值中只要包含了指定的字符就会被选中

选择符\[属性名|="属性值"] 属性值一当前指定的开头 或者以属性值-

2、结构伪类选择器

如果子级标签都是同一类型(类名一致的情况):

选择符:first-child{}

选择符:last-child{}

选择符:nth-child(值 / 2n / 2n+1){}

选择符:nth-last-child(val){} 倒数第几个

设置第一个以外的元素样式:not(:first-child),设置最后一个除外的元素样式:not(:last-child)

.item-wrap:not(:last-child) {

    border-bottom: 1PX solid @border-color;

}}

选择符:first-of-type{},基本同上,child换成of-type

3、ui元素伪类选择器

E:enabled匹配所有用户界面(form表单)中处于可用状态的E元素

E:disabled匹配所有用户界面(form表单)中处于不可用状态的E元素

E:checked匹配所有用户界面(form表单)中处于选中状态的元素E

E::selection匹配E元素中被用户选中或处于高亮状态的部分

4、动态伪类选择器

E:link 选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过。常用于链接描点上

E:visite 选择匹配的E元素,而且匹配元素被定义了超链接并已被访问过。常用于链接描点上

E:active 选择匹配的E元素,且匹配元素被激活。常用于链接描点和按钮上

E:hover 选择匹配的E元素,且用户鼠标停留在元素E上。

E:focus 选择匹配的E元素,而且匹配元素获取焦

常用于输入框获取焦点时的状态(背景色)

5、层级选择符

父元素>子元素{}

兄弟元素 + 兄弟元素{}

兄弟元素 \~ 兄弟元素{}

二十九、文本阴影、盒子阴影

text-shadow:2px 2px 2px red;

属性值1 :横向 属性值2:纵向 属性值3 阴影的大小(模糊程度) 属性值4 阴影的颜色

box-shadow:2px 2px 2px 2px red;

推荐:box-shadow:0px 0px 70px rgba(157,179,208,0.4)

三十、文本换行

首先尝试把长单词换到下一行,如果再一行还是有超出,再换行

1.word-warp:break-word;

单词数字硬硬换行

2.word-break:break-all;

三十一、iconfont的使用

1.unicode方式引入:

a:引入iconfont.css文件到html页面中

b:<i class="iconfont"></i>

2.font class方式使用:

a:引入iconfont.css文件到html页面中

b:<i class="iconfont icon-xxx"></i>

注意:

每一个图标当成一个小字体,

习惯把每一个图标放到i标签

然后一定要添加 class="iconfont"

最后再添加对应的图标到i标签里面

3.symbol方式:

a:引入iconfont.js文件

b:引入iconfont.css文件

c: 
    <svg class="icon" aria-hidden="true">

        <use xlink:href="#icon-自己修改"></use>

    </svg>

三十二、图片边框

border-image:url(../images/a.png) 26 26 round;

路径 偏移 拉伸方式

取值:repeat平铺 round铺满 拉伸strech 默认值

三十三、圆角边框

border-radius10px 10px 左上 右下; 10px 10px 10px 左上 (右上,左下)右下

:四个值,左上开始顺时针旋转

画圆:border-radius:50px

三十四、宽高

calc:用于百分比与固定宽的计算,四则运算前后有空格

height:calc (100% - 30px);

pointer-eventsnone 用于穿透蒙层,触发被蒙层遮住的事件;或者禁止一些事件被触发

fill-available 自适应宽高 与100%区别是padding的影响,100%宽高会被撑大

三十五、怪异盒模型

box-sizing:border-box;border和padding是长在元素宽高里面的

三十六、flex布局

父元素属性

1、形成flex弹性盒模型

display:flex
默认沿着X轴排列、子元素都可以设置宽高、margin:auto可以让子元素水平垂直居中

2、改变主轴排列方式

flex-direction:

row x轴为主轴 row-reverse横向反向排列

column y轴为主轴 column-reverse纵向反向排列

3、子元素在弹性盒里面的主轴对齐方式

justify-content:

flex-start盒开始的地方 flex-end盒的末端

center居中 space-between两端对齐,中间自动分配

space-around完全自动分配空间

4、侧轴的对齐方式:

align-items:

flex-start盒开始的地方 flex-end盒的末端

center居中 baseline stretch默认值,拉伸(子元素不设置固定的宽或者高)

5、子元素是否换行

flex-wrap:

wrap换行 nowrap不换行 wrap-reverse反向换行

6、行与行之间的表现(对齐方式)多行元素

align-content:

flex-start盒开始的地方 flex-end盒的末端

center居中 space-between两端对齐,中间自动分配

space-around完全自动分配空间 strech

子元素属性

1align-self: 针对于某个子元素在侧轴的对齐方式,可重写align-items属性

    auto 默认值,元素继承父容器的align-items属性,如果没有父容器,则为stretch

    flex-start 元素位于容器的开始 flex-end 元素位于容器的结尾

    center居中 stretch拉伸适应容器

2、order 数字越大越往后排,默认为0,可以取负值

3、felx:1;把父元素(弹性盒)剩余空间自动分配(主轴上面的空间)

    flex-grow:1; “瓜分”父项的“剩余空间”。

    flex-shrink0;用来“吸收”超出的空间

    flex-basis 项目的长度。覆盖设置的width

    flex: flex-grow flex-shrink flex-basis|auto|initial|inherit;

三十七、grid布局

父元素属性:

触发grid布局 display:grid / inline-grid 设置几行几列

grid-template-columns:100px 200px 300px; 或者 百分比

grid-temsplate-rows:100px 200px 300px; 或者 百分比

grid-template-columns: repeat(3, 33.33%) 同 grid-template-columns: 33.33% 33.33% 33.33%;

功能函数repeat(参数1,参数2) 参数1:重复几次 参数2:列宽或者行高的值

关键字 auto-fill 如果单元格的大小是固定的,但是容器的大小不确定。如果希望每一行(或每一列)容纳尽可能多的单元格,这时可以使用auto-fill关键字表示自动填充。

.container { display: grid; grid-template-columns: repeat(auto-fill, 100px); }

fr片段标识 列宽或者行高的份数

minmax(最小值,最大值) 列宽不能低于某个值,也不能高于某个值

表示两个相同宽度的列。 grid-template-columns: 1fr 1fr; 
表示列宽不小于100px,不大于1fr。 grid-template-columns: 1fr 1fr minmax(100px, 1fr); 
auto关键字表示由浏览器自己决定长度 grid-template-columns: 100px auto 100px;

行/列间距

复合写法: grid-gap:10px 20px; grid-row-gap:20px; grid-column-gap:20px

规定元素的排列顺序:

grid-auto-flow: column / row

row dense -- 先行后列 后续元素顶上去占满行

column dense; -- 先列后行

规定元素所占有的网格

grid-template-areas:'a b c'

注意:每个子元素必须通过grid-area指定名字

设置所有单元格内容在网格里面的水平 | 垂直 对齐方式

justify-items:start | end | center | stretch -- 默认铺满; ;

align-items:start | end | center | stretch -- 默认铺满;

place-item(复合): start | end | center | space-around | space-between

设置整个内容区域在容器的水平和垂直的布局方式

justify-content: start | end | center | stretch | space-around | space-between | space-evenly;

align-content: start | end | center | stretch | space-around | space-between | space-evenly;

place-content(复合):space-around space-evenly

某个子元素位置

grid-column1 / 3; 表示该列起始于第一格,终于第三格

是grid-column-start: 1; grid-column-end: 3; 缩写,

grid-row:2 / 4; 表示该行起始于第一行,终于第三行

是grid-row-start: 1; grid-row-end: 3; 缩写,

justify-self属性设置某个单元格内容的水平位置(左中右),跟justify-items属性的用法完全一致,

align-self属性设置某个单元格内容的垂直位置(上中下),跟align-items属性的用法完全一致,

转存失败,建议直接上传图片文件

三十八、多列布局

column-count:3;分成3列显示 column-grp:每列间距

colum-fill:balance/auto 列高平均/自动分配 column-span:all/none;跨列/不夸列标题

column-rule:; 列边框 column-width:; 与列冲突

三十九、响应式布局

一套代码可适应不同设备分辨率,提升用户体验

缺点:开发成本大,效率低,代码累赘,有很多显示隐藏处理

滑动navdisplay: flex; overflow: auto;)(flex-shrink: 0;)

滑动布局 overflow-y: auto;使用一个宽高100%main盒子放内容

overscroll-behaviorcontain 阻止滚动传播给父元素

四十、媒体查询

@media all and (min-width:320px) and (max-width:374px){

{选择符:样式} }

注:and两边有空格,条件表达式无分号;常用于不同机型微调font-size、display-none、宽高

四十一、移动端开发的相关概念

1、物理像素指的是设备的实际存在的像素,例如iPhone6的物理像素750

2、Css像素是浏览器解析移动端的时候真正解析的数据,浏览器解析iPhone6的时候css像素是375px

3、dpr  iPhone6的dpr是2

(1) Dpr(device pixel ratio)设备像素比=物理像素/css像素  

(2) iPhone6例子   750px/375px=2 ipad1125px为3

4、单位换算;已知css像素375px,视口宽度100vw,需求:1rem=100px,求html=?vw

如IPone6; 375px/100px=100vw/x 解得x=26.6vw;(640px对应31.25vw)简易算法;10000/css像素即为所得

5、视口的设置,为什么要设置视口,这个是因为移动端在解析的时候,真正的数据宽度和用户看到的宽度是不对等的。所以得告诉浏览器,解析的视口宽度得和浏览器的一样,那么就得通过meta标签设置。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

width = device-width:宽度等于当前设备的宽度

initial-scale: 初始的缩放比例(默认设置为1.0)

minimum-scale:允许用户缩放到的最小比例(默认设置为1.0)

maximum-scale:允许用户缩放到的最大比例(默认设置为1.0)

user-scalable:用户是否可以手动缩放(默认设置为no,因为我们不希望用户放大缩小页面)

方式1、重写meta标签 2、更改html的font-size(单位比:1rem=100px\*设备像素比)

方式2、引入js文件 script 2、注释掉mate标签(单位比:1rem=100px)

字体渐变: .text-gradient { color: transparent; font-weight: bold; font-size: 30px; text-shadow: 5px 5px 3px rgba(192, 185, 185, 0.2); background: linear-gradient(to bottom, rgba(192, 185, 185, 0.863), transparent); -webkit-background-clip: text; background-clip:text; }

变量回退

如果变量没有定义,就会使用回退 (70px) .message\_\_bubble {     
    max-widthcalc(100% - var(--actions-width, 70px)); 
}