CSS在页面中的组成css
浏览器读取编译css选择器时是从右往左的顺序,由于能够有机会一次选中样式,就算不能一次选中也能够缩小范围。css3
css中的优先级不是选择器的优先级,是css声明的优先级。web
学习css属性时首先要记住该属性的默认值和是否能够继承。浏览器
属性名不须要引号,属性值须要引号。markdown
代码分析 #wrap li :nth-child(1)
:找到id
为wrap
底下的全部子元素,而且选中第一个子元素,而且这个子元素必须是<li>
。ide
溢出显示省略号函数
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
(隐含条件是元素不能是被内容撑开的元素)css全称:cascading style sheets
工具
resize
是css属性容许控制一个元素的可调整大小性。(必定要配合overflow:auto
使用)默认值:布局
none
不可继承,元素不能被用户缩放。both
,容许用户在水平和垂直方向上调整元素的大小。horizontal
,容许用户在水平方向上调整元素的大小。vertical
,容许用户在垂直方向上调整元素的大小。当按照top
和left
做为参考时,坐标系是向右向下为正,至关于说正值往里收,负值往外扩;当按照bottom
和right
做为参考时,坐标系是向左向上为正,至关因而正值往外扩,负值往里收。学习
a.浮动提高半层,只有在浮动的状况下,才须要考虑元素分两层。定位元素提高一层(相对定位会在文档流里有残留)b.z-index
为1怎么都会比a高;z-index
为-1时怎么都会比a低。
-webkit-box-reflect
不是css3里的是Google的,可设置图片的方向及与原图片的距离。box-sizing: border-box;
的元素再设置padding
之后,padding
不会增长元素的大小,而是会往里挤内容区的空间。box-shadow
,以逗号分割列表来描述一个或多个阴影效果,能够用到几乎任何元素上。默认值none
不可继承,值:inset
默认阴影在边框外。使用inset
后,阴影在边框内。offset-x,offset-y
这是头两个length
值,用来设置阴影偏移量。分别设置水平偏移量和垂直偏移量,能够设成负值。若是二者都是0,那么阴影位于元素后面。blur-radius
值越大,模糊面积越大,阴影就越大越淡。不能为负值,默认为0.此时阴影边缘锐利。spread-radius取正值时,阴影扩大;取负值时,阴影收缩,默认为0,此时阴影与元素一样打。color:阴影颜色,若是没有指定,则由浏览器决定。border-radius
,阴影也会有圆角效果,多个阴影时和多个text shadows
规则相同。(第一个阴影在最上面)。border-radius
用来设置边框圆角,默认值为0不可继承,值:
border-image-source
属性定义使用一张图片来代替边框样式,若是只为none
,则仍然使用border-style
定义的样式。默认值:none
不可继承。border-image-slice
属性会经过规范将border-image-source
的图片明确的分割为9个区域,四个角,四边以及中心区域。并可指定偏移量。border-image-repeat
定义图片如何填充边框。或为单个值,设置全部的边框;或为两个值,分别设置水平和垂直的边框。默认值:stretch
不可继承。值:stretch(拉伸),repeat,round(平铺)
border-image-width
:定义图像边框宽度。默认值:1不可继承。border-image-outset
:属性定义边框图像可超出边框盒的大小。默认值:0 不可继承。只能正值:可超出边框盒的大小。background-image
属性用于为一个元素设置一个或多个背景图像,图像在绘制时,以z轴方向堆叠的方式进行,先指定的图像会在以后指定的图像上面进行绘制。注意:background-image-color
会在image
之下进行绘制,边框和内容会在image
之上进行绘制。默认值:none
。不可继承。background-position
:制定背景位置的初始位置。默认值:0% 0% 不可继承。值:百分比:参照尺寸为背景图片定位区域的大小减去背景图片的大小。background-attachment
决定背景是在视口中固定的仍是随包含它的区块滚动的。默认值 scroll
不可继承。值:fixed
此关键字表示背景相对于视口固定。即便一个元素有滚动机制,背景也不会随着元素的内容滚动。scroll
此关键字表示背景相对于元素自己固定,而不是随着它的内容滚动。padding box
开始绘制,从border box
开始剪裁。background-origin
设置背景渲染的起始位置。值:content-box
,padding-box,border-box
background-clip
设置背景剪裁位置。值:content-box,padding-box,border-box
-webkit-background-clip:text;
能够只给文字设置背景。background-size
设置背景图片大小。默认值 auto auto
不可继承。值:
background-origin
设置,默认为和模型的内容区与内边距。auto
:以背景图片的比例缩放背景图片。注意:单值时,这个值指定图片的宽度,图片的高度隐式的为auto
。两个值:第一个值指定图片等宽度,第二个值指定图片的高度。(*)
(#)
(.)
(元素名)
(空格)
(,(结合符))
(+)
,只会匹配紧跟着的兄弟元素。(~)
,在使用~链接两个元素时,他会匹配第二个元素,条件是它必须跟(不必定紧跟)在第一个元素以后,且它们都有一个共同的元素。[attr]
:该选择器选择包含 attr
属性的全部元素,不论 attr
的值为什么。 [attr=val]
:该选择器仅选择 attr
属性被赋值为 val 的全部元素。[attr~=val]
:表示带有以 attr
命名的属性的元素,而且该属性是一个以空格做为分隔的值列表,其中至少一个值为val
。[attr|=val]
: 选择attr
属性的值是val
(包括val)或以val-开头的元素。[attr^=val]
: 选择attr
属性的值以val
开头(包括val)的元素。[attr$=val]
: 选择attr
属性的值以val
结尾(包括val)的元素。[attr*=val]
: 选择attr
属性的值中包含字符串val
的元素。link
和visited
要放在hover
和active
的前面,由于link
和visited
已经把<a>
标签的全部状态所有涵盖住了,为了避免让一些设置的状态失效,因此link
和visited
要放在hover
和active
的前面。link
和visited
只能在<a>
标签身上起做用。它们叫锚点伪类也叫连接伪类。:link
,:visited
,:target
是做用于连接元素的!:link
表示做为超连接,并指向一个未访问的地址的全部锚:visited
表示做为超连接,并指向一个已访问的地址的全部锚:target
表明一个特殊的元素,它的id
是URI
的片断标识符:target
能够实现选项卡,步骤:
<a>
标签中的href属性值设置为选项卡的<div>
的id
。<div>
标签的display:none
;,在:target
中设置display:block
;:hover
,:active
基本能够做用于全部的元素!:hover
表示悬浮到元素上:active
表示匹配被用户激活的元素(点击按住时)<a>
标签的:link
和:visited
能够覆盖了全部<a>
标签的状态,因此当:link
,:visited
,:hover
,:active
同时出如今<a>
标签身上时 :link
和:visited
不能放在最后!!!color
background-color
border-color
:enabled
匹配可编辑的表单:disable
匹配被禁用的表单:checked
匹配被选中的表单:focus
匹配获焦的表单index
的值从1开始计数!!!!
index
能够为变量n
(只能是n
)
index
能够为even
odd
#wrap ele:nth-child(index)
表示匹配#wrap
中第index
的子元素 这个子元素必须是ele
#wrap ele:nth-of-type(index)
表示匹配#wrap
中第index
的ele
子元素
除此以外:nth-child
和:nth-of-type
有一个很重要的区别: nth-of-type
以元素为中心!!!例如一个父标签中有不一样类型的子标签,可是子标签的class
值都为一个值,那么调用这个值的nth-of-type(1)
会给到不一样类型的子标签的第一个元素,而不是父标签的第一个子标签。因此说只要父元素中的子元素类型不一样,最好用nth-child
。
:nth-child(index)
系列
:first-child
:last-child
:nth-last-child(index)
:only-child
(相对于:first-child:last-child
或者 :nth-child(1):nth-last-child(1)
):nth-of-type(index)
系列
:first-of-type
:last-of-type
:nth-last-type(index)
:only-of-type
(相对于:first-of-type:last-of-type
或者 :nth-of-type(1):nth-last-of-type(1)
)index
能够是变量n
(只能是n,0到正无穷)odd
:奇数,even
:偶数;:empty
(内容必须是空的,有空格都不行,有attr
不要紧)给每一个元素设置一个右边框,最后一个元素不要,能够采用:not
伪类结合:last-of-type
伪类进行操做。
::after
位于一个元素以后,不可选中::before
位于一个元素以前,不可选中::firstLetter
选中第一个::firstLine
选中第一行::selection
选中时改变选中的元素样式<input>
标签,type=“radio”
,name
值相同。<input>
标签包含一个<label>
标签,给<input>
标签一个兄弟元素<span>
元素(在页面中点击<span>
元素时<input>
标签也会被选中)<label>
设置样式,首先<label>
设置浮动float:left;
,由于<label>
标签是内联元素,不能指定高宽,设置浮动之后变成块级元素,能够指定高宽。<label>
标签设置相对定位position:relative;
,给<label>
标签的子标签<input>
标签设置绝对定位position:absolute;
此时<input>
标签的包含块是<label>
标签。将<input>
标签的left
和top
设置为负值,将<label>
标签设置overflow:hidden;
(这样就将<input>
标签的单选按钮移出可见区域)。<label>
标签的子标签<span>
设置绝对定位position:absolute;``left,top,right,bottom
都设为0;此时<span>
标签和<label>
标签同样大小。<input>
的伪类:checked
再选中兄弟元素<span>
(input:checked +span
),在样式里设置相应的样式。 div[id="test"]
(0,0,1,1) 和 #test
(0,1,0,0)有时某个声明比较重要,超过了全部其余声明,css2.1就称之为重要声明,并容许在这些声明的结束分号以前插入 !important
来标志必需要准确的放置 !important
不然声明无效。
!important
老是要放在声明的最后,即分号的前面
标志为 !important
的声明并无特殊的特殊性值,不过要与非重要声明分开考虑。
实际上全部的重要声明会被浏览器分为一组,重要声明的冲突会在其内部解决
非重要声明也会被分为一组,非重要声明的冲突也会在其内部解决
若是一个重要声明与非重要声明冲突,胜出的老是重要声明
@font-face
容许网页开发者为其网页指定在线字体,经过这种做者自备字体的方式,@font-face
能够消除对用户电脑字体的依赖。font-family
所指定的字体名字将会被用于font
或font-family
属性,src
:字体资源。注意:不能在一个css选择器中定义@font-face
,要在style中定义。class
中再起一个名字,而后去写这个名字的样式,而不要直接修改已定义好的名字的样式。opacity
不是一个继承属性,可是也会影响到子元素的透明度。rgba
的格式。text-shadow
用来为文字添加阴影,并且能够添加多层,阴影值之间用逗号隔开。(多个阴影时,第一个阴影在最上边)值:color``(选择阴影的颜色)
,offset-x
,offset-y(横向,纵向偏移量),blur-radius(阴影模糊)
text-shadow:black 1px 1px 1px
;transition:1s
;:hover
伪类,color:rgba(0,0,0,0)
;text-shadow:black 0 0 100px
;-webkit-text-stroke: 颜色,边的大小
。direction
:控制文字的方向,必定要配合unicode-bidi:bidi-override;
linear-gradient(颜色,颜色,...)
linear-gradient(to 结束的方向,颜色,颜色)
linear-gradient(角度,颜色,颜色)
linear-gradient(颜色 长度或者百分比,颜色 长度或者百分比);
repeating-linear-gradient
radial-gradient()
函数建立一个<image>
,用来展现由原点(渐变中心)辐射开的颜色渐变。
radial-gradient(颜色,颜色)
。radial-gradient(颜色 百分比,颜色 百分比,...)
。radial-gradient(形状,颜色,颜色)
(默认是椭圆ellipse,可选值circle)。radial-gradient(要改变的大小 形状,颜色,颜色)``closest-side
最近边,farthest-side
最远边,closest-comer
最近角,farthest-comer
最远角。radial-gradient(要改变的大小 形状 at px px,颜色,颜色)
默认值最远角。css transition
提供了一种在更改css
属性时控制动画速度的方法。其可让属性变化成为一个持续一段时间的过程,而不是当即生效的。transition-property
默认值为all
,表示全部可被动画的属性都表现出过渡动画。能够指定多个property
。
none
没有过分动画。all
全部可被动画的属性都表现出过渡动画。IDENT
属性名称(能够指定多个)transition-duration
属性以秒或毫秒为单位指定过渡动画所需的时间。默认值为0s,表示不出现过渡动画。能够指定多个时长,每一个时长都会被应用到由transition-prorerty
指定的对应属性上。若是指定的时长个数小于属性个数,那么时长列表会重复,若是时长列表更长,那么该列表会被裁减,两种状况下,属性列表都保持不变。属性值 ,以毫秒或秒为单位的数值。不接受负值,必定要加单位!transition
的影响,会产生不断变化的中间值,而css transition-timing-function
属性用来描述这个中间值是怎样计算的,实质上,经过这个函数会创建一条加速度曲线,所以在整个transition
变化过程当中,变化速度能够不断改变。默认值:ease
timing function
,经过使用transition-property
属性,能够根据主列表的列表给每一个css属性应用相应的timing function
timing function
的个数比主列中数量少,缺乏的值被设置为初始值。timing function
比主列更多,timing function
函数列表会被截断至适合的大小,这两种状况下声明的css属性都是有效的。transition-delay
属性规定了在过渡效果开始做用以前须要等待的时间。默认值0s。
transition-timing-function
的时候使用的是默认值ease。transitionend
,在webkit
下是webkitTransitionEnd
。(每个拥有过渡的属性在其完成过渡时都会触发一次transitionend
事件)在transition
完成前设置display:none
,事件一样不会被触发。transition
在元素首次渲染尚未结束的状况下是不会被触发的。transition
简写属性,css过渡由简写属性transition
定义是最好的方式,能够避免属性值列表长度不一,节省调试时间。注意:在transition
属性中,各个值的书写顺序是很重要的:
transition-duration
,transition-delay
。transform
属性容许修改css视觉格式模型的坐标空间。transform
属性只对block
级元素生效。
rotate(旋转角度)
translate(平移)
transform:translateX(距离)
;transform:translateY(距离)
;transform:translate(距离,距离)
若是距离没有指定,它的默认值为0.可设单值,也可设双值。正数表示xy轴正向位移,负数为反向位移,设单值表示只x轴位移,y轴坐标不变。transform:skew
,与translate
差很少。
transform:scale()
transform-origin
, css属性能够更改一个元素变形的基点。对平移不会产生影响。matrix(cos θ,sinθ,-sinθ,cosθ,0,0);
matrix(1,0,0,1,x,y);
matrix(1,tanα,tanβ,1,0,0);
perspective
用于激活一个3D空间,属性值就是景深大小。(默认none
无景深)perspective
属性,效果会叠加而不是覆盖)transform:perspective(depth)
depth
的默认值是none
,能够设置为一个长度值,这个长度是沿着z轴距离坐标原点的距离。perspective()
函数,那么它必须被放置在transform
属性的首位,若是放在其余函数以后,则会被忽略。rotate3d(x,y,z,angle)
x,y,z分别接受一个数值,用来计算矢量方向,矢量方向是三维空间中的一条线,从坐标系原点到x,y,z肯定的那个点,元素围绕这条线旋转angle指定的值。transform:translateZ(length)
是3D Transform
特有的,它不能使百分比 值;那样的移动是没有意义的。transform:translate3d(translateX,translateY,translateZ)
;transform:scaleZ()
,transform:scale3d(scaleX,scaleY,scaleZ)
;若是只设置scaleZ()
,元素并无被扩大或者压缩,scaleZ()
须要和translateZ()
配合使用,number
乘以length
获得的值,使元素沿z轴移动的距离,从而使得感受被扩大或压缩。perspective-origin
默认值50%,50%参照于盒模型。transform-style
营造层级的3d舞台。是一个不可继承属性,它做用于子元素。backface-visibility
属性用来设置是否显示元素的背面,默认是显示的。有两个值hidden
和visible
,默认值是visible
。animation-name
属性指定应用的一系列动画,每一个名称表明一个动画序列。值:none
(特殊关键字,表示无关键帧)。keyframename
标识动画的字符串。animation-duration
指定一个动画周期的时长。默认值为0s,表示无动画,值无单位无效,注意,负值无效。animation-timing-function
动画的默认效果,由慢变快再变慢。animation-direction
定义了动画执行的方向。(一共有四个方向)值:reverse(反转)
反转的也是关键帧和animation-timing-function
animation-delay
定义动画开始前等待的时间,以秒或毫秒为单位。animation-iteration-count
定义了动画执行的次数(属于动画内的范畴)重复的是关键帧animation-fill-mode
,值backwards
:from以前的状态与form的状态保持一致。forwards
,通以后的状态与to的状态保持一致。both:backwards+forwards
animation-timing-function
:做用于一个关键帧周期而非整个动画周期animation-play-state
定义了动画执行的运行和暂停。@keyframes animiationName{ keyframes-selector{ css-style } }
animiationName
必写项,定义动画的名称。keyframes-selector
:必写项,动画持续时间的百分比。from:0% to :100%
css-style:css声明animation-timing-function
控制的是关键帧的每一个周期。css3中的弹性盒子分老版本(box
)和新版本(flex
),
flex
不等同于浮动,同时老版本的flex和新版本的flex是有区别的
分清flex
的容器和项目,项目永远在主轴的正方向上排列
容器的布局方向
-webkit-box-orient
属性本质上肯定了主轴是哪个,值:horizontal(x轴),vertical(y轴)
flex-direction
属性本质上肯定了主轴和侧轴分别是哪个,值row(x轴),column(y轴)
容器的排列方向
-webkit-box-direction
控制主轴方向,值normal(正方向,默认),reverse(取反)
flex-direction
,值row-reverse(x轴取反),column-reverse(y轴取反)
富裕空间管理(主轴)
start(富裕空间在右边(x轴),下边(y轴))
end(富裕空间在左边(x轴),上边(y轴))
center(富裕空间在两边)
justify(富裕空间在项目之间)
四个值-webkit-box-pack
不会给项目区分配空间,只是肯定富裕空间的位置。justify-content:flex-start
(富裕空间在主轴的正方向),flex-end(富裕空间在主轴的反方向),center(富裕空间在两边),space-between(富裕空间在项目之间),space-around(box没有的,富裕空间在项目两边)富裕空间管理(侧轴)
start
(富裕空间在上边) end
(富裕空间在下边) center
(富裕空间在两边),-webkit-box-align不会给项目区分配空间,只是肯定富裕空间的位置align-items
,值stretch
(box没有的,等高布局,不能有高度),flex-start
(富裕空间在侧轴的正方向),flex-end
(富裕空间在侧轴的反方向),center
(富裕空间在侧轴的两边),baseline
(box没有的,按基线对齐),弹性空间的管理:将主轴上的富裕空间按比例分配到各个项目的width/height
上。-webkit-box-flex:1
; 默认值:0不可继承。
控制侧轴的方向:flex-wrap
属性控制了容器为单行/列仍是多行/列,而且定义了侧轴的方向,新行/列将沿侧轴方向堆砌。值:nowrap(不换行)
,wrap-reverse(换行)
控制多行多列时,富裕空间的管理,会把全部行,列当作一个总体。align-content
属性定义弹性容器的侧轴方向上有额外空间时,如何排布局每一行/列,当弹性容器只有一行/列时无做用。默认值stretch
不可继承。
flex-basis
:伸缩规则计算的基准值(默认拿width
或height
的值)
order
属性规定了弹性容器中的可伸缩项目在布局时的顺序,元素按照order
属性的值的增序进行布局。拥有相同order
属性值的元素按照他们在源代码中出现的顺序进行布局。
align-self
会对其当前flex
行中的flex
元素,并覆盖align-items
的值,若是任何flex元素的侧轴方向margin
值设置为auto
,则会忽略align-self
。默认值auto
,不可继承。
老版本-webkit-box-flex
:弹性因子(默认值为0)
新版本flex-grow
属性定义弹性盒子项(flex item
)的拉伸因子。
可用空间=(容器大小-全部相邻项目flex-basis
的总和)
可扩展空间=(可用空间/全部相邻项目flex-grow
的总和)
每项伸缩大小=(伸缩基准值+(可扩展空间*flex-grow
值))
flex-shrink
起做用的前提是flex-wrap:nowrap;``flex-shrink
的默认值是1.(收缩因子)
flex-shrink
:每项flex收缩大小=伸展基准值-(收缩比例/收缩比例总和*溢出的空间) -->并非
var a= 每一项flex-shrink*flex-basis之和
var b =(flex-shrink*flex-basis)/a
var c = b*溢出的空间
侧轴富裕空间的管理
align-items,align-self
(优先级高)align-content
flex简写属性是一个语法糖,flex:1
;表示flex-grow:1;flex-shrink:1;flex-basis:0%;
CSS3媒体查询选择器,语法: @media 媒体类型 and(关键字) 带条件的媒体属性 and 带条件的媒体属性 { //规则 }
媒体类型
all
全部媒体(默认值)screen
彩色屏幕print
打印预览projection
手持设备tv
电视braille
盲文触觉设备embossed
盲文打印机speech
“听觉”相似的媒体设备tty
不适用像素的设备媒体属性
width
:浏览器的窗口尺寸device-width
:设备尺寸device-pixel-ratio
(必须加-webkit-前缀):像素比---以上三个媒体属性可加 min
和 max
前缀
min
:最小值为谁max
:最大值为谁横竖屏切换
orientation
:landscape
(横屏)orientation
:portrait
(竖屏)关键字
only
:处理浏览器兼容问题,防止老旧的浏览器,不支持带媒体属性的查询而应用到给定的样式。(让老版本的浏览器失效)@media only screen and (min-width:800px ){ 规则; 规则 }
@media screen and (min-width:800px ){ 规则; 规则 }
@media only
---> 由于没有only这种设备 规则被忽略@media screen
---> 由于有screen这种设备并且老浏览器会忽略带媒体属性的查询建议在每次抒写media query
的时候带上only
and
:链接一条查询规则,链接媒体属性 、链接媒体类型
,
:链接多条查询规则,和and
类似
not
:取反column-width
指定每一栏的宽度(这是多列布局的第一种分法)column-count
指定要多少栏(这是多列布局的第二种分法)column-gap
column-rule