css知识总结深海收破烂

---#学习目标:>1.学会使用CSS选择器>2.熟记CSS样式和外观属性>3.熟练掌握CSS各种选择器>4.熟练掌握CSS各种选择器>5.熟练掌握CSS三种显示模式>6.熟练掌握CSS背景属性>7.熟练掌握CSS三大特性>8.熟练掌握CSS盒子模型>9.熟练掌握CSS浮动>10.熟练掌握CSS定位>11.熟练掌握CSS高级技巧强化CSStypora-copy-images-to:media---

#CSS的发展历程

从HTML被发明开始,样式就以各种形式存在。不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制。最初的HTML只包含很少的显示属性。随着HTML的成长,为了满足页面设计者的要求,HTML添加了很多显示功能。但是随着这些功能的增加,HTML变的越来越杂乱,而且HTML页面也越来越臃肿。于是CSS便诞生了。

#CSS网页的美容师

CSS的出现,拯救了混乱的HTML,当让更加拯救了我们web开发者。让我们的网页更加丰富多彩。

CSS的最大贡献就是:让HTML从样式中解脱苦海,实现了HTML专注去做结构呈现。而样式交给CSS后,你完全可以放心的早点洗洗睡了!

而且。。。。。CSS做的很出色,如果JavaScript是网页的魔法师,那么CSS它是我们网页的美容师,不信,你看:

ps:你跟Angelababy只差了一个妆容的距离

有人说,没有不漂亮的女人,只有不会打扮的女人。

我想说,没有不好看的网页,只有不会CSS的前端。

#CSS初识

CSS(CascadingStyleSheets)美化样式

CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。

CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。

#引入CSS样式表(书写位置)

CSS可以写到那个位置?是不是一定写到html文件里面呢?

##内部样式表

内嵌式是将CSS代码集中写在HTML文档的head头部标签中,并且用style标签定义,其基本语法格式如下:

```html选择器{属性1:属性值1;属性2:属性值2;属性3:属性值3;}```

语法中,style标签一般位于head标签中title标签之后,也可以把他放在HTML文档的任何地方。

type="text/CSS"在html5中可以省略,写上也比较符合规范,所以这个地方可以写也可以省略。

##行内式(内联样式)

内联样式,又有人称行内样式、行间样式、内嵌样式。是通过标签的style属性来设置元素的样式,其基本语法格式如下:

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

语法中style是标签的属性,实际上任何HTML标签都拥有style属性,用来设置行内式。其中属性和值的书写规范与CSS样式规则相同,行内式只对其所在的标签及嵌套在其中的子标签起作用。

##外部样式表(外链式)

链入式是将所有的样式放在一个或多个以.CSS为扩展名的外部样式表文件中,通过link标签将外部样式表文件链接到HTML文档中,其基本语法格式如下:

注意:link是个单标签哦!!!

该语法中,link标签需要放在head头部标签中,并且必须指定link标签的三个属性,具体如下:

##三种样式表总结(位置)

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

#CSS样式规则

使用HTML时,需要遵从一定的规范。CSS亦如此,要想熟练地使用CSS对网页进行修饰,首先需要了解CSS样式规则,具体格式如下:

~~~在上面的样式规则中:

1.选择器用于指定CSS样式作用的HTML对象,花括号内是对该对象设置的具体样式。2.属性和属性值以“键值对”的形式出现。3.属性是对指定的对象设置的样式属性,例如字体大小、文本颜色等。4.属性和属性值之间用英文“:”连接。5.多个“键值对”之间用英文“;”进行区分。可以用段落和表格的对齐的演示。~~~

#选择器(重点)

要想将CSS样式应用于特定的HTML元素,首先需要找到该目标元素。在CSS中,执行这一任务的样式规则部分被称为选择器(选择符)。

如上图所以,要把里面的小黄人分为2组,最快的方法怎办?

很多,比如一只眼睛的一组,剩下的一组

选择器干啥的?选择标签用的

这就用到基础选择器组:

#CSS基础选择器

##标签选择器(元素选择器)

标签选择器是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的CSS样式。其基本语法格式如下:

```标签名{属性1:属性值1;属性2:属性值2;属性3:属性值3;}或者元素名{属性1:属性值1;属性2:属性值2;属性3:属性值3;}```

标签选择器最大的优点是能快速为页面中同类型的标签统一样式,同时这也是他的缺点,不能设计差异化样式。

标签选择器可以把某一类标签全部选择出来divspan

课堂案例:

传智简介

##类选择器

类选择器使用“.”(英文点号)进行标识,后面紧跟类名,其基本语法格式如下:

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

```标签调用的时候用class=“类名”即可。```

类选择器最大的优势是可以为元素对象定义单独或相同的样式。可以选择一个或者多个标签

小技巧:

~~~1.长名称或词组可以使用中横线来为选择器命名。2.不建议使用“_”下划线来命名CSS选择器。~~~

输入的时候少按一个shift键;浏览器兼容问题(比如使用_tips的选择器命名,在IE6是无效的)能良好区分JavaScript变量命名(JS变量命名是用“_”)

~~~3.不要纯数字、中文等命名,尽量使用英文字母来表示。~~~

猜谜底游戏:

你猜?

命名规范:见附件(Web前端开发规范手册.doc)

命名是我们通俗约定的,但是没有规定必须用这些常用的命名。

~~~html

Google~~~

##多类名选择器

我们可以给标签指定多个类名,从而达到更多的选择目的。

注意:

~~~1.样式显示效果跟HTML元素中的类名先后顺序没有关系,受CSS样式书写的上下顺序有关。2.各个类名中间用空格隔开。~~~

多类名选择器在后期布局比较复杂的情况下,还是较多使用的。

~~~html亚瑟

刘备
安其拉
貂蝉
~~~

类名选择器:这个div的名字就是navnav就是div这个div也是nav

<人class=刘德华>我们想要吧div找到div{}.nav{}

##id选择器

id选择器使用“#”进行标识,后面紧跟id名,其基本语法格式如下:

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

该语法中,id名即为HTML元素的id属性值,大多数HTML元素都可以定义id属性,元素的id值是唯一的,只能对应于文档中某一个具体的元素。

用法基本和类选择器相同。

##id选择器和类选择器区别

W3C标准规定,在同一个页面内,不允许有相同名字的id对象出现,但是允许相同名字的class。

类选择器(class)好比人的名字,是可以多次重复使用的,比如张伟王伟李伟李娜

id选择器好比人的身份证号码,全中国是唯一的,不得重复。只能使用一次。

***id选择器和类选择器最大的不同在于使用次数上。***

##通配符选择器

通配符选择器用“*”号表示,他是所有选择器中作用范围最广的,能匹配页面中所有的元素。其基本语法格式如下:

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

例如下面的代码,使用通配符选择器定义CSS样式,清除所有HTML标记的默认边距。

~~~css*{margin:0;/*定义外边距*/padding:0;/*定义内边距*/}~~~

这个通配符选择器,就像我们的电影明星中的梦中情人,想想它就好了,但是它不会和你过日子。

#CSS字体样式属性

##font-size:字号大小

font-size属性用于设置字号,该属性的值可以使用相对长度单位,也可以使用绝对长度单位。其中,相对长度单位比较常用,推荐使用像素单位px,绝对长度单位使用较少。具体如下:

##font-family:字体

font-family属性用于设置字体。网页中常用的字体有宋体、微软雅黑、黑体等,例如将网页中所有段落文本的字体设置为微软雅黑,可以使用如下CSS样式代码:

p{font-family:"微软雅黑";}

可以同时指定多个字体,中间以逗号隔开,表示如果浏览器不支持第一个字体,则会尝试下一个,直到找到合适的字体。

>常用技巧:

```1.现在网页中普遍使用14px+。2.尽量使用偶数的数字字号。ie6等老式浏览器支持奇数会有bug。3.各种字体之间必须使用英文状态下的逗号隔开。4.中文字体需要加英文状态下的引号,英文字体一般不需要加引号。当需要设置英文字体时,英文字体名必须位于中文字体名之前。5.如果字体名中包含空格、#、$等符号,则该字体必须加英文状态下的单引号或双引号,例如font-family:"TimesNewRoman";。6.尽量使用系统默认字体,保证在任何用户的浏览器中都能正确显示。```

##CSSUnicode字体

在CSS中设置字体名称,直接写中文是可以的。但是在文件编码(GB2312、UTF-8等)不匹配时会产生乱码的错误。xp系统不支持类似微软雅黑的中文。

方案一:你可以使用英文来替代。比如font-family:"MicrosoftYahei"。

方案二:在CSS直接使用Unicode编码来写字体名称可以避免这些错误。使用Unicode写中文字体名称,浏览器是可以正确的解析的。font-family:"\5FAE\8F6F\96C5\9ED1",表示设置字体为“微软雅黑”。

可以通过escape()来测试属于什么字体。

|字体名称|英文名称|Unicode编码||---------|---------------|--------------------||宋体|SimSun|\5B8B\4F53||新宋体|NSimSun|\65B0\5B8B\4F53||黑体|SimHei|\9ED1\4F53||微软雅黑|MicrosoftYaHei|\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|

为了照顾不同电脑的字体安装问题,我们尽量只使用宋体和微软雅黑中文字体

##font-weight:字体粗细

字体加粗除了用b和strong标签之外,可以使用CSS来实现,但是CSS是没有语义的。

```htmlfont-weight属性用于定义字体的粗细,其可用属性值:normal、bold、bolder、lighter、100~900(100的整数倍)。```

```css数字400等价于normal,而700等价于bold。但是我们更喜欢用数字来表示。```

##font-style:字体风格

字体倾斜除了用i和em标签之外,可以使用CSS来实现,但是CSS是没有语义的。

font-style属性用于定义字体风格,如设置斜体、倾斜或正常字体,其可用属性值如下:

normal:默认值,浏览器会显示标准的字体样式。

italic:浏览器会显示斜体的字体样式。

oblique:浏览器会显示倾斜的字体样式。

```平时我们很少给文字加斜体,反而喜欢给斜体标签(em,i)改为普通模式。```

##font:综合设置字体样式(重点)

font属性用于对字体样式进行综合设置,其基本语法格式如下:

```css选择器{font:font-stylefont-weightfont-size/line-heightfont-family;}```

```使用font属性时,必须按上面语法格式中的顺序书写,不能更换顺序,各个属性以空格隔开。

注意:其中不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用。```

#CSS外观属性

##color:文本颜色

color属性用于定义文本的颜色,其取值方式有如下3种:

1.预定义的颜色值,如red,green,blue等。

2.十六进制,如#FF0000,#FF6600,#29D794等。实际工作中,十六进制是最常用的定义颜色的方式。

3.RGB代码,如红色可以表示为rgb(255,0,0)或rgb(100%,0%,0%)。

需要注意的是,如果使用RGB代码的百分比颜色值,取值为0时也不能省略百分号,必须写为0%。

##line-height:行间距

ine-height属性用于设置行间距,就是行与行之间的距离,即字符的垂直间距,一般称为行高。line-height常用的属性值单位有三种,分别为像素px,相对值em和百分比%,实际工作中使用最多的是像素px

一般情况下,行距比字号大7.8像素左右就可以了。

##text-align:水平对齐方式

```text-align属性用于设置文本内容的水平对齐,相当于html中的align对齐属性。其可用属性值如下:```

left:左对齐(默认值)

right:右对齐

center:居中对齐

是让盒子里面的内容水平居中,而不是让盒子居中对齐

##text-indent:首行缩进

text-indent属性用于设置首行文本的缩进,其属性值可为不同单位的数值、em字符宽度的倍数、或相对于浏览器窗口宽度的百分比%,允许使用负值,建议使用em作为设置单位。

1em就是一个字的宽度如果是汉字的段落,1em就是一个汉字的宽度

##text-decoration文本的装饰

text-decoration通常我们用于给链接修改装饰效果

|值|描述||------------|-----------------------||none|默认。定义标准的文本。||underline|定义文本下的一条线。下划线也是我们链接自带的||overline|定义文本上的一条线。||line-through|定义穿过文本下的一条线。|||||||

#开发者工具(chrome)

此工具是我们的必备工具,以后代码出了问题,我们首先第一反应就是:

“按F12”或者是“shift+ctrl+i”打开开发者工具。

菜单:右击网页空白出---查看

1.ctrl+滚轮可以放大开发者工具代码大小。2.左边是HTML元素结构右边是CSS样式。3.右边CSS样式可以改动数值和颜色查看更改后效果。

#CSS复合选择器

复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,目的是为了可以选择更准确更精细的目标元素标签。

##交集选择器

交集选择器由两个选择器构成,其中第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格,如h3.special。

**记忆技巧:**

交集选择器是并且的意思。即...又...的意思

```比如:p.one选择的是:类名为.one的段落标签。```

用的相对来说比较少,不太建议使用。

##并集选择器

并集选择器(CSS选择器分组)是各个选择器通过逗号连接而成的,任何形式的选择器(包括标签选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。如果某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为它们定义相同的CSS样式。

记忆技巧:

并集选择器和的意思,就是说,只要逗号隔开的,所有选择器都会执行后面样式。

他和他,在一起,在一起一起的意思

##后代选择器

后代选择器又称为包含选择器,用来选择元素或元素组的后代,其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。

子孙后代都可以这么选择。或者说,它能选择任何包含在内的标签。

##子元素选择器

子元素选择器只能选择作为某元素子元素的元素。其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个>进行连接,注意,符号左右两侧各保留一个空格。

白话:这里的子指的是亲儿子不包含孙子重孙子之类。

```比如:.demo>h3{color:red;}说明h3一定是demo亲儿子。demo元素包含着h3。```

##测试题

在不修改以上代码的前提下,完成以下任务:

##伪类选择器

伪类选择器用于向某些选择器添加特殊的效果。比如给链接添加特殊效果,比如可以选择第1个,第n个元素。

伪娘

类.one

伪类:link

~~~css为了和我们刚才学的类选择器相区别,类选择器是一个点比如.demo{}而我们的伪类用2个点就是冒号比如:link{}~~~

###链接伪类选择器

-:link/*未访问的链接*/-:visited/*已访问的链接*/-:hover/*鼠标移动到链接上*/-:active/*选定的链接*/

注意写的时候,他们的顺序尽量不要颠倒按照lvha的顺序。lovehate爱上了讨厌记忆法或者lv包包非常hao

~~~cssa{/*a是标签选择器所有的链接*/font-weight:700;font-size:16px;color:gray;}a:hover{/*:hover是链接伪类选择器鼠标经过*/color:red;/*鼠标经过的时候,由原来的灰色变成了红色*/}~~~

#CSS注释

```CSS规则是使用/*需要注释的内容*/进行注释的,即在需要注释的内容前使用“/*”标记开始注释,在内容的结尾使用“*/”结束。```

例如:

~~~cssp{font-size:14px;/*所有的字体是14像素大小*/}~~~

#sublime快捷方式

sublime可以快速提高我们代码的书写方式

1.生成标签直接输入标签名按tab键即可比如div然后tab键,就可以生成

2.如果想要生成多个相同标签加上*就可以了比如div*3就可以快速生成3个div

3.如果有父子级关系的标签,可以用>比如ul>li就可以了

4.如果有兄弟关系的标签,用+就可以了比如div+p

5.如果生成带有类名或者id名字的,直接写.demo或者#twotab键就可以了

#标签显示模式(display)

非洲黑人:皮肤内黑色素含量高,以吸收阳光中的紫外线,保护皮肤内部结构免遭损害,头发象羊毛一样卷曲,使每根卷发周围都有许多空隙,空隙充满空气,卷发有隔热作用。

传智黄人:我中间的。。。

最重要的总结:是为了更好的适应环境而完成的自然选择。

同理,我们网页的标签非常多,再不同地方会用到不同类型的标签,以便更好的完成我们的网页。

标签的类型(显示模式)

HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素。具体如下:

##块级元素(block-level)

每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度、高度、对齐等属性,常用于网页布局和网页结构的搭建。霸道

```常见的块元素有

~

属性选择器属性选择器属性选择器属性选择器属性选择器123属性选择器footer属性选择器footer属性选择器属性选择器属性选择器```

##伪元素选择器(CSS3)

1.E::first-letter文本的第一个单词或字(如中文、日文、韩文等)2.E::first-line文本第一行;3.E::selection可改变选中文本的样式;

```cssp::first-letter{font-size:20px;color:hotpink;}

/*首行特殊样式*/p::first-line{color:skyblue;}

p::selection{/*font-size:50px;*/color:orange;}```

4、E::before和E::after

在E元素内部的开始位置和结束位创建一个元素,该元素为行内元素,且必须要结合content属性使用。

```cssdiv::befor{content:"开始";}div::after{content:"结束";}```

E:after、E:before在旧版本里是伪元素,CSS3的规范里“:”用来表示伪类,“::”用来表示伪元素,但是在高版本浏览器下E:after、E:before会被自动识别为E::after、E::before,这样做的目的是用来做兼容处理。

":"与"::"区别在于区分伪类和伪元素

之所以被称为伪元素,是因为他们不是真正的页面元素,html没有对应的元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用诸如页面元素一样的css样式,表面上看上去貌似是页面的某些元素来展现,实际上是css样式展现的行为,因此被称为伪元素。是伪元素在html代码机构中的展现,可以看出无法伪元素的结构无法审查

**注意**

伪元素:before和:after添加的内容默认是inline元素**;这个两个伪元素的`content`属性,表示伪元素的内容,设置:before和:after时必须设置其`content`属性,否则伪元素就不起作用。

##背景缩放(CSS3)

通过background-size设置背景图片的尺寸,就像我们设置img的尺寸一样,在移动Web开发中做屏幕适配应用非常广泛。

其参数设置如下:

a)可以设置长度单位(px)或百分比(设置百分比时,参照盒子的宽高)

b)设置为cover时,会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分则会被隐藏。我们平时用的cover最多

c)设置为contain会自动调整缩放比例,保证图片始终完整显示在背景区域。

```cssbackground-image:url('images/gyt.jpg');background-size:300px100px;/*background-size:contain;*//*background-size:cover;*/```

##多背景(CSS3)

以逗号分隔可以设置多背景,可用于自适应布局做法就是用逗号隔开就好了。

-一个元素可以设置多重背景图像。-每组属性间使用逗号分隔。-如果设置的多重背景图之间存在着交集(即存在着重叠关系),前面的背景图会覆盖在后面的背景图之上。-为了避免背景色将图像盖住,背景色通常都定义在最后一组上,

```cssbackground:url(test1.jpg)no-repeatscroll10px20px/50px60px,url(test1.jpg)no-repeatscroll10px20px/70px90px,url(test1.jpg)no-repeatscroll10px20px/110px130pxc#aaa;```

-

##凹凸文字

```css

我是凸起的文字
我是凹下的文字
```

![1498467533412](media/1498467533412.png)

##CSS3盒模型

CSS3中可以通过box-sizing来指定盒模型,即可指定为content-box、border-box,这样我们计算盒子大小的方式就发生了改变。

可以分成两种情况:

1、box-sizing:content-box盒子大小为width+padding+bordercontent-box:此值为其默认值,其让元素维持W3C的标准BoxMode

2、box-sizing:border-box盒子大小为width就是说padding和border是包含到width里面的

注:上面的标注的width指的是CSS属性里设置的width:length,content的值是会自动调整的。

```cssdiv:first-child{width:200px;height:200px;background-color:pink;box-sizing:content-box;/*就是以前的标准盒模型w3c*/padding:10px;border:15pxsolidred;/*盒子大小为width+padding+bordercontent-box:此值为其默认值,其让元素维持W3C的标准BoxMode*/}div:last-child{width:200px;height:200px;background-color:purple;padding:10px;box-sizing:border-box;/*paddingborder不撑开盒子*/border:15pxsolidred;/*margin:10px;*//*盒子大小为width就是说padding和border是包含到width里面的*/}```

##学成在线综合案例

##过渡(CSS3)

过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用Flash动画或JavaScript的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。

帧动画:通过一帧一帧的画面按照固定顺序和速度播放。如电影胶片

![1498445034712](media/1498445034712.png)

在CSS3里使用transition可以实现补间动画(过渡效果),并且当前元素只要有“属性”发生变化时即存在两种状态(我们用A和B代指),就可以实现平滑的过渡,为了方便演示采用hover切换两种状态,但是并不仅仅局限于hover状态来实现过渡。

语法格式:

如果想要所有的属性都变化过渡,写一个all就可以

运动曲线默认是ease

何时开始默认是0s立马开始

运动曲线示意图:

![1498445454760](media/1498445454760.png)

width:600px;height:300px}

transition:all0.6s;/*所有属性都变化用all就可以了后面俩个属性可以省略*/~~~

##2D变形(CSS3)transform

transform是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、倾斜、缩放,甚至支持矩阵方式,配合过渡和即将学习的动画知识,可以取代大量之前只能靠Flash才可以实现的效果。

变形转换transformtransform变换变形的意思《transformers变形金刚》

###移动translate(x,y)

translate移动平移的意思

![1498443715586](media/1498443715586.png)

```csstranslate(50px,50px);```

使用translate方法来将文字或图像在水平方向和垂直方向上分别垂直移动50像素。

可以改变元素的位置,x、y可为负值;

~~~translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动)translateX(x)仅水平方向移动(X轴移动)translateY(Y)仅垂直方向移动(Y轴移动)~~~

~~~css.box{width:499.9999px;height:400px;background:pink;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);/*走的自己的一半*/}~~~

让定位的盒子水平居中

###缩放scale(x,y)

![1498444645795](media/1498444645795.png)

```csstransform:scale(0.8,1);```

可以对元素进行水平和垂直方向的缩放。该语句使用scale方法使该元素在水平方向上缩小了20%,垂直方向上不缩放。

~~~scale(X,Y)使元素水平方向和垂直方向同时缩放(也就是X轴和Y轴同时缩放)scaleX(x)元素仅水平方向缩放(X轴缩放)scaleY(y)元素仅垂直方向缩放(Y轴缩放)~~~

scale()的取值默认的值为1,当值设置为0.01到0.99之间的任何值,作用使一个元素缩小;而任何大于或等于1.01的值,作用是让元素放大

###旋转rotate(deg)

可以对元素进行旋转,正值为顺时针,负值为逆时针;

![1498443651293](media/1498443651293.png)

~~~csstransform:rotate(45deg);~~~

注意单位是deg度数

###transform-origin可以调整元素转换变形的原点

![1498443912530](media/1498443912530.png)

```cssdiv{transform-origin:lefttop;transform:rotate(45deg);}/*改变元素原点到左上角,然后进行顺时旋转45度*/```

如果是4个角,可以用lefttop这些,如果想要精确的位置,可以用px像素。

~~~cssdiv{transform-origin:10px10px;transform:rotate(45deg);}/*改变元素原点到x为10y为10,然后进行顺时旋转45度*/~~~

案例旋转楚乔传

~~~cssdiv{width:250px;height:170px;border:1pxsolidpink;margin:200pxauto;position:relative;

}divimg{width:100%;height:100%;position:absolute;top:0;left:0;transition:all0.6s;transform-origin:topright;}div:hoverimg:nth-child(1){/*鼠标经过div第一张图片旋转*/transform:rotate(60deg);}div:hoverimg:nth-child(2){transform:rotate(120deg);}div:hoverimg:nth-child(3){transform:rotate(180deg);}div:hoverimg:nth-child(4){transform:rotate(240deg);}div:hoverimg:nth-child(5){transform:rotate(300deg);}div:hoverimg:nth-child(6){transform:rotate(360deg);}~~~

###倾斜skew(deg,deg)

![1498443827389](media/1498443827389.png)

```csstransform:skew(30deg,0deg);```

该实例通过skew方法把元素水平方向上倾斜30度,处置方向保持不变。

可以使元素按一定的角度进行倾斜,可为负值,第二个参数不写默认为0。

##3D变形(CSS3)transform

2dxy

3dxyz

左手坐标系

伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上,中指指向前方。这样我们就建立了一个左手坐标系,拇指、食指和中指分别代表X、Y、Z轴的正方向。如下图

![1498445587576](media/1498445587576.png)

CSS3中的3D坐标系与上述的3D坐标系是有一定区别的,相当于其绕着X轴旋转了180度,如下图

![1498459001951](media/1498459001951.png)

简单记住他们的坐标:

x左边是负的,右边是正的

y上面是负的,下面是正的

z里面是负的,外面是正的

###rotateX()

就是沿着x立体旋转.

![1498445756802](media/1498445756802.png)

~~~cssimg{transition:all0.5sease0s;}img:hove{

transform:rotateX(180deg);}~~~

###rotateY()

沿着y轴进行旋转

![1498446043198](media/1498446043198.png)

###rotateZ()

沿着z轴进行旋转

~~~cssimg{transition:all.25sease-in0s;}img:hover{/*transform:rotateX(180deg);*//*transform:rotateY(180deg);*//*transform:rotateZ(180deg);*//*transform:rotateX(45deg)rotateY(180deg)rotateZ(90deg)skew(0,10deg);*/}~~~

###透视(perspective)

电脑显示屏是一个2D平面,图像之所以具有立体感(3D效果),其实只是一种视觉呈现,通过透视可以实现此目的。

透视可以将一个2D平面,在转换的过程当中,呈现3D效果。

-透视原理:近大远小。-浏览器透视:把近大远小的所有图像,透视在屏幕上。-perspective:视距,表示视点距离屏幕的长短。视点,用于模拟透视效果时人眼的位置

注:并非任何情况下需要透视效果,根据开发需要进行设置。

perspective一般作为一个属性,设置给父元素,作用于所有3D转换的子元素

理解透视距离原理:

![1498446715314](media/1498446715314.png)

###translateX(x)

仅水平方向移动**(X轴移动)

![1498459697576](media/1498459697576.png)

主要目的实现移动效果

###translateY(y)

仅垂直方向移动(Y轴移动)

![1498459770252](media/1498459770252.png)

###translateZ(z)

transformZ的直观表现形式就是大小变化,实质是XY平面相对于视点的远近变化(说远近就一定会说到离什么参照物远或近,在这里参照物就是perspective属性)。比如设置了perspective为200px;那么transformZ的值越接近200,就是离的越近,看上去也就越大,超过200就看不到了,因为相当于跑到后脑勺去了,我相信你正常情况下,是看不到自己的后脑勺的。

###translate3d(x,y,z)

[注意]其中,x和y可以是长度值,也可以是百分比,百分比是相对于其本身元素水平方向的宽度和垂直方向的高度和;z只能设置长度值

###开门案例

~~~cssbody{}.door{width:300px;height:300px;margin:100pxauto;border:1pxsolidgray;perspective:1000px;background:url('images/dog.gif')no-repeatcover;position:relative;}.door>div{box-sizing:border-box;border:1pxsolidblack;}.left{float:left;width:50%;height:100%;background-color:brown;transform-origin:leftcenter;transition:1s;position:relative;}.left::before{content:'';position:absolute;width:20px;height:20px;border-radius:50%;top:50%;right:0px;transform:translateY(-10px);border:1pxsolidwhitesmoke;}.right{width:50%;height:100%;float:left;background-color:brown;transform-origin:rightcenter;transition:1s;position:relative;}.right::before{content:'';position:absolute;width:20px;height:20px;border-radius:50%;top:50%;left:0px;transform:translateY(-10px);border:1pxsolidwhitesmoke;}.door:hover.left{transform:rotateY(-130deg);}.door:hover.right{transform:rotateY(130deg);}~~~

###backface-visibility

backface-visibility属性定义当元素不面向屏幕时是否可见。

###翻转盒子案例

~~~cssdiv{width:224px;height:224px;margin:100pxauto;position:relative;}divimg{position:absolute;top:0;left:0;transition:all1s;}divimg:first-child{z-index:1;backface-visibility:hidden;/*不是正面对象屏幕,就隐藏*/}div:hoverimg{transform:rotateY(180deg);}~~~

##动画(CSS3)animation

动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。

![1498461096243](media/1498461096243.png)

~~~css@keyframes动画名称{from{开始位置}0%to{结束}100%}~~~

~~~animation-iteration-count:infinite;无限循环播放animation-play-state:paused;暂停动画"~~~

###小汽车案例

~~~cssbody{background:white;}img{width:200px;}.animation{animation-name:goback;animation-duration:5s;animation-timing-function:ease;animation-iteration-count:infinite;}@keyframesgoback{0%{}49%{transform:translateX(1000px);}55%{transform:translateX(1000px)rotateY(180deg);}95%{transform:translateX(0)rotateY(180deg);}100%{transform:translateX(0)rotateY(0deg);}}~~~

##伸缩布局(CSS3)

CSS3在布局方面做了非常大的改进,使得我们对块级元素的布局排列变得十分灵活,适应性非常强,其强大的伸缩性,在响应式开中可以发挥极大的作用。

主轴:Flex容器的主轴主要用来配置Flex项目,默认是水平方向

侧轴:与主轴垂直的轴称作侧轴,默认是垂直方向的

方向:默认主轴从左向右,侧轴默认从上到下

主轴和侧轴并不是固定不变的,通过flex-direction可以互换。

![1498441839910](media/1498441839910.png)

Flex布局的语法规范经过几年发生了很大的变化,也给Flexbox的使用带来一定的局限性,因为语法规范版本众多,浏览器支持不一致,致使Flexbox布局使用不多

**2、各属性详解******

1.flex子项目在主轴的缩放比例,不指定flex属性,则不参与伸缩分配

min-width最小值min-width:280px最小宽度不能小于280

max-width:1280px最大宽度不能大于1280

2.flex-direction调整主轴方向(默认为水平方向)

flex-direction:column垂直排列

flex-direction:row水平排列

3、justify-content调整主轴对齐(水平对齐)

子盒子如何在父盒子里面水平对齐

|值|描述|白话文||-------------|------------------------|-----------------------||flex-start|默认值。项目位于容器的开头。|让子元素从父容器的开头开始排序但是盒子顺序不变||flex-end|项目位于容器的结尾。|让子元素从父容器的后面开始排序但是盒子顺序不变||center|项目位于容器的中心。|让子元素在父容器中间显示||space-between|项目位于各行之间留有空白的容器内。|左右的盒子贴近父盒子,中间的平均分布空白间距||space-around|项目位于各行之前、之间、之后都留有空白的容器内。|相当于给每个盒子添加了左右margin外边距|

4、align-items调整侧轴对齐(垂直对齐)

子盒子如何在父盒子里面垂直对齐(单行)

|值|描述|白话文||----------|---------------|---------------------------||stretch|默认值。项目被拉伸以适应容器。|让子元素的高度拉伸适用父容器(子元素不给高度的前提下)||center|项目位于容器的中心。|垂直居中||flex-start|项目位于容器的开头。|垂直对齐开始位置上对齐||flex-end|项目位于容器的结尾。|垂直对齐结束位置底对齐|||||

5、flex-wrap控制是否换行

当我们子盒子内容宽度多于父盒子的时候如何处理

|值|描述||------------|----------------------------------------||nowrap|默认值。规定灵活的项目不拆行或不拆列。不换行,则收缩(压缩)显示强制一行内显示||wrap|规定灵活的项目在必要的时候拆行或拆列。||wrap-reverse|规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序。|||||||

6、flex-flow是flex-direction、flex-wrap的简写形式

~~~cssflex-flow:flex-directionflex-wrap;~~~

白话记:flex-flow:排列方向换不换行;

两个中间用空格

~~~cssdisplay:flex;/*flex-direction:row;flex-wrap:wrap;这两句话等价于下面的这句话*/flex-flow:columnwrap;/*两者的综合*/~~~

7、align-content堆栈(由flex-wrap产生的独立行)多行垂直对齐方式齐

align-content是针对flex容器里面多轴(多行)的情况,align-items是针对一行的情况进行排列。

必须对父元素设置自由盒属性display:flex;,并且设置排列方式为横向排列flex-direction:row;并且设置换行,flex-wrap:wrap;这样这个属性的设置才会起作用。

|值|描述|测试||-------------|------------------------|----||stretch|默认值。项目被拉伸以适应容器。|||center|项目位于容器的中心。|||flex-start|项目位于容器的开头。|||flex-end|项目位于容器的结尾。|||space-between|项目位于各行之间留有空白的容器内。|||space-around|项目位于各行之前、之间、之后都留有空白的容器内。||

8、order控制子项目的排列顺序,正序方式排序,从小到大

用css来控制盒子的前后顺序。用order就可以

用整数值来定义排列顺序,数值小的排在前面。可以为负值。默认值是0

~~~cssorder:1;~~~

此知识点重在理解,要明确找出主轴、侧轴、方向,各属性对应的属性值

##文字阴影(CSS3)

以后我们可以给我们的文字添加阴影效果了Shadow影子

```csstext-shadow:水平位置垂直位置模糊距离阴影颜色;```

THE END
1.微信小程序创作之路在微信小程序的开发中,窗口整体配置是非常重要的一部分。它决定了用户在使用你的小程序时看到什么样的界面。今天,我们就来讲解一下如何配置小程序的窗口整体。 ### 导航栏导航栏是小程序窗口最上方的区域,它通常包含一些基本的功能按钮,如返回、分享等。在微信小程序中,导航栏可以通过 `navigationBar` 属性来配置http://www.shili8.cn/article/detail_20002680490.html
2.App页面元素分层式导航1.4 抽屉式导航 一般采用将导航主题隐藏在App侧边的方式,以一个按钮来呼出导航,在使用完成之后再使用相同的按钮隐藏起来。一般用于底部没有导航栏,而且使用比较少的功能都收纳起来,如我的。 1.5 沉浸式导航 又叫 内容驱动式导航 或 体验驱动式导航,是沉浸式设计的一种表现,在内容中自由的转换,或是内容本身定义导https://blog.csdn.net/vbirdbest/article/details/142083906
3.APP界面元素各种栏?标签栏一般位于页面的底部,他的作用是让用户快速在不同的视图和模式间进行切换。一般有四五个左右 ? 搜索栏 这个感觉不用多说了,就是搜索框。一般情况下也是展示在页面的顶部,大概率在导航栏下方或者就放在导航栏上。 ? 范围栏 和搜索栏搭配使用,一般用于快速定位用户搜索内容 https://zhuanlan.zhihu.com/p/612747787
4.seo网站关键词优化方法(seo网站关键词优化方法有哪些)1、交换友情链接,看对方网站友链和收录情况,对方友链一般不超过30个,且最近收录一定要有,一般同等权重的友链双方才愿意交换的除非购买单向链接。 2、寻找网站目录或者网站导航之类的网站提交,一般为付费。(最大的特点是一次收录永久在线而且外链质量非常好,价格不算贵) http://yj64.com/youhua/14a090899077.html
5.26篇博文含有标签「版本甄知科技ITSM猪齿鱼Choerodon数智化效能平台,提供体系化方法论和协作、测试、DevOps及容器工具,帮助企业拉通需求、设计、开发、部署、测试和运营流程,一站式提高管理效率和质量。从团队协同到DevOps工具链、从平台工具到体系化方法论,猪齿鱼全面满足协同管理与工程效率需求,贯穿端到端全流程,助力团队效能更快更强更稳定,帮助企业推动http://www.zknow.com/choerodon/blog/tags/%E7%89%88%E6%9C%AC/
6.HR传感器数据中,有值为0或255的数据手表/手环(WearEngine)如何解决sidebar侧边栏出现时,遮挡住下方的导航栏的问题?希望能自行控制侧边栏的上下层级 有哪些实现图文混排的方式,每种方式的优劣点是什么,推荐场景是什么 如何处理父子组件间的事件传递,例如,如何解决滑动冲突 使用ForEach&LazyForEach循环渲染时,会出现更改数据源时,界面不刷新的情况。如何解决 如何主动控制https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/wearengine_faq-5-V5
7.使用Bootstrap4构建带有导航栏和侧边栏的页面的基本问题使用Bootstrap 4构建带有导航栏和侧边栏的页面有几个基本问题需要注意: 1. 安装Bootstrap 4:首先,需要在项目中引入Bootstrap 4的相关文件。你可以选择通过CDN引入,也https://cloud.tencent.com/developer/information/%E4%BD%BF%E7%94%A8Bootstrap%204%E6%9E%84%E5%BB%BA%E5%B8%A6%E6%9C%89%E5%AF%BC%E8%88%AA%E6%A0%8F%E5%92%8C%E4%BE%A7%E8%BE%B9%E6%A0%8F%E7%9A%84%E9%A1%B5%E9%9D%A2%E7%9A%84%E5%9F%BA%E6%9C%AC%E9%97%AE%E9%A2%98
8.AltiumDesigner20电路设计与仿真从入门到精通图书目录: 详情 全书以Altium Designer 20为平台,讲解了电路设计的方法和技巧,主要包括Altium Designer 20概述、原理图简介、原理图的环境设置、原理图的基础操作、原理图的高级应用、层次原理图设计、电路仿真系统、PCB 设计入门、PCB 的高级编辑、电路板的后期制作、信号完整性分析、创建元器件库及元器件封装等内容。https://www.epubit.com/bookDetails?id=UBbf365ac27387
9.以Web为基础10篇(全文)学生登录系统不但可以在线点播课程课件及多媒体视频、浏览教学信息资源, 还可参加实时的教学互动视频课堂、课程讨论及测验考试;教师不但可使用学生的所有功能, 还可查看统计学生的学习档案, 组织管理内部的学习资源, 为教师对学生素质进行公正评价及正确分析提供有力平台支持。[3]https://www.99xueshu.com/w/ikeyqzszmwjy.html
10.如果你不熟悉iPhone设计规范,请一口吃下这篇干货!△ 导航栏图标尺寸规范 5. 标签栏 (Tab Bars) Tab 就是点击的意思,Tab栏(也叫标签栏)指的是 APP 底部的区域,如微信底部常驻有聊天、通讯录、发现、我的四个图标。iOS 规范中 Tab栏一般有五个、四个、三个图标的形式。也就是把宽度平分为五、四、三份。iPhone6/7/8设计中,标签栏的高度为49pt(98px)https://www.51cto.com/article/584965.html
11.移动端控件整理——导航&搜索导航栏可以情境化显示,即根据用户的操作、页面状态的变化来显示不同的内容。 ios的导航栏出现在APP界面的顶部,在状态栏的下方,能够在一些不同层级的页面中提供导航。当加载一个新页面的时候,导航栏的左侧一般会出现一个返回按钮,与前一个页面的标题放在一起。有时候,导航栏的右边会包含一个编辑或者完成按钮的控件https://www.jianshu.com/p/b886d6e591d8
12.小程序设计指南:规范与误区全解析,让新手设计师有规可依※常见问题:自定义导航栏与默认导航栏存在差异,默认导航栏下拉刷新时,导航栏是固定的;自定义导航栏下拉刷新时,只有小程序胶囊位置是固定的,其他元素会随着页面一起下拉刷新。出现该问题的原因是层级发生了变化,默认样式的小程序胶囊与导航栏是同一层级的,但是自定义之后,层级发生了变化。 http://www.bjhwtx.com/h-nd-159057.html
13.浙教版信息科技三年级上册全册教学课件20230927202342.pptx多途径查找资源 1、资源平台一般有导航栏或者层级分类目录,方便人们浏览资源。在平台上浏览与查找资源,就像在图书馆中找书,可以按照类别查找。浏览资源 1.进入“国家少儿数字图书馆”网站,选择相应的类别,进入学习网页。浏览资源—试一试 1.平台上有很多好的学习资源,可以将其下载到计算机。保存图片时,一般可以在图片https://max.book118.com/html/2023/0927/8063040111005135.shtm
14.体验设计拆解24个优秀体验细节经验/观点日常中常见的 B端产品的导航栏一般都是要么展开,要么收起两种固定的交互模式,而 Notion 左侧导航非常灵活,尤其是导航栏收起状态时候,鼠标只要悬停到左侧区域,都可以将导航栏呼出,这时候通过导航栏切换到目标页面后,将鼠标移到页面内编辑内容时,悬浮的导航栏又回自动消失。在导航切换效率和页面内容浏览的沉浸感上有了非https://www.ui.cn/project.php?id=643696
15.厦门网站建设小程序设计系统软件制作APP源码开发厦门掘金信息科技有限公司是一家专业从事:网站建设、小程序设计、系统软件制作、APP源码开发、网站开发等相关服务,为多家企业提供了创新易用的互联网解决方案,有效提升了用户体验和客户品牌价值,引领市场不断树立新的标杆.https://www.xmjuejin.com/
16.电子商务运营技能导航条 * 308.在网店装修中,收藏按钮和关注按钮一般出现的位置是()。 搜索框 店招 店标 导航栏 * 309.在网店装修中,商品上新预告和商品推荐模块是店铺中最常见的()。 促销模块 排行模块 分类模块 页尾模块 * 310.网店店铺首页设计中,店铺客服区域一-般位于网店首页的位置是()。 中上部 中部或底部 B顶部 https://www.wjx.cn/vm/mOXooIH.aspx
17.“电视”的搜索结果–Mac玩儿法iWiFi 测速侠是一款很有创意的网络测速工具,除了基础的 WIFI 速度上下行速度、PING 值测速功能外,支持了以 AR 虚拟显示为基础的测速功能。 当你打开界面底部导航栏中间的按钮后进入 AR 模式,此时可以看到测速的 widget,暂且叫它 widget 吧,显示在你的面前,可以显示延迟、PING 值延时,上下行速度,非常有意思,你可https://www.waerfa.com/search/%E7%94%B5%E8%A7%86/feed/rss2/
18.莆田学院附属医院智慧服务应用建设(一)期项目附件(3)财政部、司法部联合印发《关于政府采购支持监狱企业发展有关问题的通知》(财库【2014】68号)文件规定(适用于本项目)。(4)财政部、民政部、中国残疾人联合会印发的《三部门联合发布关于促进残疾人就业政府采购政策的通知》财库〔2017〕141号文件规定(适用于本项目)。(5)信用记录(适用于本项目),按照下列规定http://www.ptzfcg.gov.cn/upload/document/20220419/42cbf932c05048548c1b2893e6dd2fc3.html
19.网站设计与网页制作超星尔雅学习通网课答案C、导航栏 D、Banner 2、【多选题】关于导航的描述哪些是正确的 A、可用链接文字实现 B、一个网站可以没有导航 C、可跳转到网站的各个页面 D、可用链接图片实现 3、【判断题】网页对应着的源文件包含一些代码,而浏览器可以解析这些代码,呈现出来。 http://changchun.ehqc.cn/show/36_27.html
20.旅游网站如何设计优秀的网站导航一、网站导航栏是什么? 网站导航栏是指通过一定的技术手段,为网页的访问者提供途径,引导他们访问网站的各个栏目、菜单、在线帮助等,使用户可以方便快速的访问自己所需的内容。 二、网站导航栏的作用是什么? 导航栏是网站非常重要的组成部分,一款良好的网站导航栏对于用户体验度和搜索引擎优化都非常有利。 https://www.stourweb.com/peixun/fangfa-765
21.小黑盒导航栏的形式多样,可以是简单的文字链接,也可以是设计精美的图片或是丰富多彩的按钮,还可以是下砬菜单导航。 一般来说,网站中的导航位置在各个页面中出现的位置是比较固定的,而且风格也较为一致。导航的位置一般有4种:在页面的左侧、右侧、顶部和底部。有时候在同一个页面中运用了多种导航。当然并不是导航在页面https://xiaoheihe.cn/community/7214/list/98998379
22.神马广告与其他平台的差距新闻中心对于已经做了百度搜索推广的企业而言,神马搜索和百度搜索的客户来源不同,因此 神马搜索能够给客户带来与现有百度推广平台不同的客户群。神马搜索目前的客户群体更多是从浏览器与导航直接进入的用户,这些用户的搜索习惯,以及对于推广的敏感度与现有百度的客户会存在不少差异,这些差异正是能给广告主带来更多生意机会的地方https://www.tui86.com/889.html