加载中...

CSS3

css的选择器:

p:after{ content:"台词:";}        //css选择器,在p标签之后添加内容

p:before{ content:”内容”}  //css选择器,在p标签之前添加内容

 

css常用属性:

z-index:1;      //定位叠放次序(z轴),数值越大,盒子越靠上,默认auto,可以负数

display:none;   //不显示元素,不占用空间,block:显示为块级元素

visibility:hidden;  //隐藏元素,占用控件,visibe显示元素

overflow:hidden;    //隐藏溢出内容,scroll:显示一条滚动条;auto:自动,超出时出现一条滚动条。

 

鼠标样式:

<li style="cursor: default;">默认样式,箭头</li>

<li style="cursor: pointer;">小手</li>

<li style="cursor: move;">移动</li>

<li style="cursor: text;">文本编辑</li>

<li style="cursor: no-drop;">禁止</li>

 

outline: none;  //取消表单的蓝色轮廓,参数为1也可以

resize:none;    //取消文本域的拖拽更改大小

vertical-align:middle;  //垂直对齐,仅用于行内块元素与行内元素有效,常用于图片或者表单和文字垂直对齐。

    baseline:默认,元素放在父元素的基线上。

    top:把元素的顶端与行中最高元素的顶端对齐

    middle:把元素放在父元素的中部。

    bottom:把元素的顶端与行中最低元素的顶端对齐。

注意:用以上三个属性可以解决图片在父元素内对齐方式的空白缝隙(提倡使用)

 

//单行文字省略号

white-space: nowrap;    //强制文字不换行,默认normal

overflow: hidden;       //隐藏超出元素部分

text-overflow: ellipsis;    //文字用省略号代替超出部分

 

/* 多行文本溢出显示省略号 */

overflow: hidden;

text-overflow: ellipsis;

/* 弹性伸缩盒子模型显示 */

display: -webkit-box;

/* 限制在一个块元素显示的文本的行数 */

-webkit-line-clamp: 2;

/* 设置或检索伸缩盒对象的子元素的排列方式 */

-webkit-box-orient: vertical;

//注意,这种写法有兼容性问题,只支持webkit内核的浏览器

 

 

CSS属性书写顺序

建议遵循以下顺序:

1.布局定位属性:display/position/float/clear/visibility/overflow(建议display第一个写,毕竟关系到模式)

2.自身属性:width/height/margin/padding/border/background

3.文本属性:color/font/text-decoration/text-align/ vertical-align/white-space/break-word

4.其他属性(CSS3):content/cursor/border-radius/box-shadow/text-shadow/background:linear-gradient..

 

css3新特性:

css3新增选择器:

  1. 1.  属性选择器:

E[att]  选择具有att属性的E元素

E[att="val"]    选择具有att属性且属性值等于val的E元素

E[att^="val"]   匹配att属性且值以val开头的E元素

E[att$="val"]   匹配att属性且值以val结尾的E元素

E[att*="val"]   匹配att属性且值以val含有的E元素

 

  1. 2.  结构选择器

E:first-child   //匹配父元素中第一个子元素E

E:last-child    //匹配父元素中最后一个子元素E

E:nth-child(n)      //匹配父元素中第n个子元素E,n可以是数字,关键字和公式,关键字:even偶数,odd奇数

    公式:字母n(只能写n),

        n:从0开始,每次加1,表示每个属性;

        2n:偶数;2n+1:奇数;

        5n:5 10 15...;n+5:

        从第五个开始(包括五)到最后;

        -n+5 前五个...

E:first-fo-type     //指定类型E的第一个

E:last-fo-type      //指定类型E的最后一个

E:nth-of-type(n)    //指定类型的第n个,n的用法类似E:nth-child(n)

 

伪类选择器总结:

结构伪类选择器一般用于选择父级里面的第几个孩子

nth-child 对父元素里面所有孩子排序选择(序号是固定的)先找到第n个孩子,然后看看是否和E匹配

nth-of-type 对父元素里面指定子元素进行排序选择.先去匹配E,然后再根据E找第n个孩子

关于nth-child(n)我们要知道n是从0开始计算的,要记住常用的公式

如果是无序列表,我们肯定用nth-child更多

类选择器、属性选择器、伪类选择器,权重为10。

 

 

css3属性:

border-radius: 50px;        //设置一个半径为50px圆形与矩形四角对比的圆角,可以添加四个值

box-shadow 10px,10px.10px.10px,rgba(0,0,0,.3);      //设置阴影,前面两个必须,水平与垂直阴影位置,模糊距离,阴影尺寸,阴影颜色,inset将外部阴影改为内部阴影

box-shadow 10px,10px,10,rgba(0,0,0,.3);        //设置文字阴影,前面两个必须,水平与垂直阴影位置,模糊距离,阴影颜色,这个用的不是很多,了解即可。

Position:sticky     //粘性定位,类似于固定定位,但是占有原先的位置,当页面滑动到下面才开始固定。IE不支持

box-sizing:content-box;  //标准模型,默认

box-sizing:border-box;  //怪异盒模型,将边框的位置算在内容里面

filter: blur(5px);          //filter 函数;用于模糊或颜色偏移效果,bluer():模糊函数,数值越大,越模糊

width: calc(100% - 30px);   //设置属性宽度永远比父元素小30px,calc();函数,可以计算+ - * /

background-size: contain;   //单位:长度 |百分比Icover Icontain;

  cover把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。

  contain把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域

 

服务器字体的调用:

@font-face{ 
font-family:webFont;
src:url(src/webFont.ttf);
}
h1{ font-family:webFont;}


矢量图的调用:

1.去阿里巴巴矢量图标库下载图标 https://iconfont.cn

2.通过<link rel="stylesheet" type="text/css" href="解压的的路径/iconfont.css"/>导入矢量图

3.使用字体编码(如:&#xe646;)使用

4.可以添加iconfont的class名,然后复写.iconfont可以对矢量图进行更改。


过渡属性(Transition)

transition-timing-function:linear 匀速变换

transition 简写属性,用于在一个属性中设置四个过渡属性。
transition-property 规定应用过渡的 CSS 属性的名称。宽高,背景颜色都可以,全部属性用all
transition-duration 定义过渡效果花费的时间。单位秒/s
transition-timing-function 规定过渡效果的运动曲线。ease:默认,逐渐慢下来,可以省略;linear:匀速;ease-in:加速;ease-out:减速;ease-in-out:先加速后减速。

transition-delay 规定过渡效果何时开始。默认为0s,可以省略


2D效果

transform字面上就是变形,改变的意思。
在CSS3中transform主要的包括以下几种:旋转rotate、扭曲skew、缩放scale、和移动translate以及巨型变形matrix;none:表示不进行变换。

 

transform:rotate(30deg); 旋转30度


transform:translate(100px,20px); X移动100px,Y移动20px.
transform:translateX(100px); X移动100px
transform:translateY(20px); Y移动20px.


transform:scaleX(2); 水平方向(X轴)缩放2
transform:scaleY(2); 垂直方向(Y轴)缩放2
transform:scale(2,1.5); 水平和垂直方向同时缩放(X轴和Y轴同时缩放)
注意:都以中心位置为中心点,缩放基数为1,大于1放大,小于1缩小。


transform:skewX(30deg); 水平扭曲变形30度。
transform:skewY(10deg); 垂直扭曲变形10度。
transform:skewXY(30deg,10deg); 水平和垂直同时扭曲30度,10度。

 

transform-origin: 50% 50%;  //设置旋转的中心点,默认元素的中心点(50% 50%),可以加方向名词(如:top,bottom,left,right,center)

例:transform-origin: right bottom;     //设置中心点在右下角

 

2D综合写法

注意:

1.同时使用多个转换,格式为:transform:translate() rotate() scale()...等

2.其顺序会影响转换的效果。(先旋转会改变坐标轴方向)

3.当我们同时有位移的其他属性的时候,记得要将位移放到最前

 

 

 

3D效果

transform 向元素应用 2D 或 3D 转换。

transform:translateX(100px);    //仅仅在x轴移动

transform:translateY(100px);    //仅仅在y轴移动

transform:translateZ(100px);    //仅仅在z轴移动(注意:tanslateZ一般用px单位)

transform:translate3d(x,y,z);   //其中x、y、z分别指要移动的轴的方向距离

 

perspective 规定 3D 元素的透视效果。透视就是视距,眼睛到屏幕的距离,视距越小,图像越大,透视写在被观察元素的父盒子上面的 translateZ;是往z轴上移动。
perspective:none; 取值为none或者不设置没有3D空间
perspective:800px ~ 2000px; 一般的取值范围,越小效果就越大

 

rotate3d 3d旋转指可以让元素在三维平面内沿着x轴,y轴,z轴或者自定义轴进行旋转。

语法:

    transform:rotateX(45deg):沿着x轴正方向旋转45度

    transform:rotateY(45deg):沿着y轴正方向旋转45度

    transform:rotateZ(45deg):沿着z轴正方向旋转45度

    transform:rotate3d(x,y,z,deg):沿着自定义轴旋转deg为角度(了解) xyz代表旋转轴的矢量,是标示你是否希望沿着该轴旋转,最后一个标示旋转的角度。

例如:transform:rotate3d(1,0,0,45deg)就是沿着x轴旋转45deg

    transform:rotate3d(1,1,0,45deg)就是沿着x与y的对角线旋转45deg

 

 

说明:1.对于元素旋转的方向的判断为一个左手准则

    手的手拇指指向x轴的正方向。

    其余手指的弯曲方向就是该元素沿着x轴的方向

    拇指向下,手的手拇指指向y轴的正方向。

    其余手指的弯曲方向就是该元素沿着y轴的方向

2.由于z轴是眼睛到屏幕距离的轴,所以旋转效果与2d的旋转相似

 

 

transform-style 规定被嵌套元素如何在 3D 空间中显示。

transform-style:flat 子元素将不会保留其3D位置
transform-style:preserve-3d; 子元素将保留其3D位置

 

transform-origin:x-axis y-axis;

更改中心点,值可以是百分值,em,px,X可以是:left,center,right,length, %;Y可以是:top,center,bottom.

 

backface-visibility 定义元素在不面对屏幕时是否可见。

backface-visibility:visible 默认值,表示反面可见
backface-visibility:hidden 表示反面不可见

 

perspective-origin 规定 3D 元素的底部位置。定义了观察者的视角相对于显示元素的位置,理解为自己以什么视角去观察元素,给父元素定义,影响子元素

参数取值:

x-axis:left、center、right、length、%

y-axis:top、center、bottom、length、%

例如:perspective-origin:left top;  //元素效果为从左上角观察,显示出右下角

 了解即可,不常用。

 

 

动画

div{ainmation:aa;}

@keyframes aa{
  from{}
  50%{}
  to{}
}

@keyframes 规定动画。
animation 所有动画属性的简写属性,除了 animation-play-state 属性。

格式:animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;

例如:animation: move 5s linear infinite;   //名称/完成时间/运动曲线/无限重复播放


animation-name 规定 @keyframes 动画的名称。(必须的)
animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。(必须的)
animation-timing-function 规定动画的速度曲线。默认是 "ease"。

liner:匀速;ease:默认,低速开始,加快,在结束前变慢;ease-in:动画低速开始;ease-out动画低速结束;ease-in-out:动画低速开始和结束;steps() 指定了时间函数中的间隔数量(步长)
animation-delay 规定动画何时开始。默认是 0。
animation-iteration-count 规定动画被播放的次数。默认是 1,还有infinte
animation-direction 规定动画是否在下一周期逆向地播放。默认是 "normal",alternate逆播放。
animation-play-state 规定动画是否正在运行或暂停。默认是 "running",还有paused。
animation-fill-mode 规定动画结束后的状态,保持forwards;回到起始backwards(默认)。



浏览器私有前缀

浏览器私有前缀是为了兼容老版本的写法,比较新的浏览器无须添加。

-moz-:代表firefox浏览器私有属性

-ms-:代表ie浏览器私有前缀

-webkit-:代表safari、chrome私有前缀

-o-:代表opera私有属性

 

推荐写法:

-moz-border-radius: 10px;

-webkit-border-radius: 10px;

-o-border-radius: 10px;

border-radius: 10px;

 

 


弹性盒
主轴(main axis):伸缩容器的主轴,主要沿着这条轴进行排列布局,不一定是水平的,主要取决于”justify-content“属性

主轴起点(main-start)和终点(main-end) 主轴尺寸(main size)

侧轴(cross axis):垂直于主轴称为侧轴 方向取决于主轴方向

侧轴起点(cross-start)和终点(cross-end) 侧轴尺寸(cross size)


display:flex 将对象作为弹性伸缩盒显示。

display:inline-flex 将对象作为内联(行内)块级弹性伸缩盒显示。


设置主轴起点和终点:

flex-direction:row 默认位置,主轴横向,从左往右。

flex-direction:row-reverse;主轴方向走,起点在右侧,终点在左侧。

flex-direction:column;主轴纵向,从上往下。

flex-direction:column-reverse;主轴反向,从下往上。

设置和检索伸缩盒子元素超出父容器是否换行:

flex-wrap:nowrap 子元素超出父容器不换行。

flex-wrap:wrap 超出自动换行。

flex-wrap:wrap-reverse 反转wrap排列。


设置或检索弹性盒子元素在主轴方向的对齐方式。

justify-content:flex-start 行起始位置对齐。

justify-content:flex-end 行结束位置对齐。

justify-content:center 行中间位置对齐。

justify-content:space-between 盒子元素平均分布在行内。

justify-content:space-around 弹性盒子元素平均分布在行里,两端保留子元素于子元素之间间距大小的一半。


设置或检索弹性盒子元素在侧轴方向的对齐方式。

align-items:flex-start 弹性盒子元素的侧轴起始位置的边界紧靠住该行的侧轴起始边界。

align-items:flex-end 弹性盒子元素的侧轴起始位置的边界紧靠住该行的侧轴结束边界。

align-items:center 弹性盒子元素在该行的侧轴上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。

align-items:baseline 将文字对齐;

align-items:stretch 如果未设置宽高,那么将元素默认拉伸为父元素高度(默认值)。

设置各行的对齐(类似于justify-content)

align-content:flex-start 各行向弹性盒容器的起始位置堆叠。

align-content:flex-end 各行向弹性盒容器的结束位置堆叠。

align-content:center 各行向弹性盒容器的中间位置堆叠。

align-content:space-between 各行在弹性盒容器中平均分布。

align-content:space-around 各行在弹性盒容器中平均分布,两端保留子元素与间间距大小的一半。

align-content:stretch 各行将会伸展以占用剩余的空间(默认值)。

flex-grow:<number>(default 0); 根据弹性盒子元素设置作为比率分配空间,<number>用数值定义,不允许负值,默认值是0,没有拥有分配空间权力。


flex-shrink:<number>(default 1); 分配超出的空间,默认值为1,如果没有定义该属性,将会自动按照默认值1在所有因子加起来计算比率来进行空间收缩。为0不收缩


设置或检索弹性盒伸缩基准值
flex-basis:<length>; 用长度来定义宽度,负值 
flex-basis:auto; 无特定宽度值,取决于其他属性值
flex-basis:50%; 百分比来定义宽度,不允许负值。

 

 

复合属性:

flex:1; 用于合并指定flex-grow和flex-shrink和flex-basis属性,默认值为0 1 auto。缩写为1:1 1 0;auto:1 1 auto;nome:0 0 auto。

【flex-grow】:定义弹性盒子元素的扩展比率。
【flex-shrink】:定义弹性盒子元素的收缩比率。
【flex-basis】:定义弹性盒子元素的默认基准值。


order:1 更改盒模型对象的子元素出现的顺序,数值最小在前面,可以为负数。


align-self

说明:用于设置弹性元素自身在侧轴方向上的对齐方式。(注意,他和上面的语句区别在于,用于单个定义某元素)
auto:如果align-self的值为’auto',则其计算值为元素的父元素的‘align-items'值,如果其没有父元素,则计算值为stretch'。
flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与flex-start'等效。其它情况下,该值将参与基线对齐。
stretch:如果指定侧轴大小的属性值为’auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照min/ max-width/height'属性的限制。

 


媒体查询

@media screen and(min-width:1024px){} 当屏幕小于1024px,发生的事

语法一:
@media mediatype and|not|only(media feature){
CSS-Code;
}

语法二:
针对不同的媒体使用不同stylesheets

<link rel="stylesheet" media="mediatype and|not|only(media feature)" href="mystylesheet.css">

media query语法格式中支持设备如下:

all 适用于所有的设备
aural适用于语音和音频合成器
braille 适用于触觉反馈设备
embossed 适用于凸点文字(盲文)和刷设备
handheld 适用于小型或者手提设备
print适用于打印机
projection 适用于投影图像,如幻灯片
sceen 适用于计算机显示器(最常用的一个)
tty适用于使用固定间距字符格的设备如电传打字机和终端
tv适用于电视类设备

 


适配移动端布局使用rem单位,使用时只需要给HTML根标签设一个值,然后给其他元素设rem值,在进行调整时,rem单位会参考HTML的值。

posted @ 2019-01-21 21:13  royal6  阅读(322)  评论(0编辑  收藏  举报