CSS样式语言编程
我的CSS API
CSS字体api
@font-face{}
:包括font-family: name
src: url(path) format(),url(path) format()...;
1
2
3
4
5@font-face {
font-family: 'MyWebFont';
src: url('myfont.woff') format('woff'), /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
url('myfont.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5, Opera 10+, Safari 3—5 */
}
CSS选择器
基本选择器
通配符选择器
元素选择器
类选择器
id选择器
后代选择器
子元素选择器:
father > children
,只能选择某元素的子元素。相邻兄弟元素选择器:
element + sibling
,选择紧接在另一元素后的元素,他们具有相同的父元素。选中的只有一个元素
通用兄弟选择器:
element ~ sibling
,选择某元素后面的所有兄弟元素
,他们具有相同的父元素。
属性选择器
三种情况:
以什么开头^=,包含什么*,以什么结尾$
- 对带有指定属性的HTML元素设置样式
为带有attribute属性的element元素设置样式:
Element[attribute]
为attribute=value属性的element元素设置样式:
Elment[attribute="value"]
选择attribute属性中包含“value”的元素设置样式:
Element[attribute ~= "value"]
,是*=的子集。选择attribute属性以“value”开头的元素设置样式:
Elment[attribute ^= "value"]
选择attribute属性以“value”结尾的元素设置样式:
Element[atttribute $="value"]
选择属性值包含“value”的元素设置样式:
Element[attribute *= "value"]
,跟~去在于,可以是在一个字符串中包含。等于“value”或“value-”开头的元素:
Element[attribute |= "value"]
,,是^=的子集。
###伪类选择器
- CSS伪类\伪元素用于向某些选择器添加特殊的效果。
动态伪类:
:link :visited :hover :active :focus
[遵守love hate 原则]UI元素状态伪类:
:enabled :disabled :checked
结构类:
first-child last-child :nth-child() :nth-last-child() :only-child :only-of-type :empty【可以选择那些内容是空的元素,空格不能算是空】 :nth-of-type() :nth-last-of-type() :first-of-type :last-of-type :only-of-type :only-child
first/last-child, nth-child, nth-last-child
first/last-of-type, nth-of-type, nth-last-of-type
找的是当前元素的兄弟元素。nth-of-type和nth-child的区别:**nth-child选择的是同级DOM中的子元素,与元素类型无关。而nth-of-type则要继续区分元素类型。
N是一个简单表达式,取值从0开始。但是CSS元素排列是从1开始,N一定要在表达式的前面
:empty匹配没有子元素(包括文本节点)的每个元素。
否定选择器:
:not
,选择器匹配非指定元素的每个元素。伪元素:
::first-line ::first-letter ::before ::after ::selection
,伪元素有两个冒号,伪类只有一个,before、after配合content使用,selection在FF中添加-moz,IE9+.CSS权重,权重决定哪种规定生效。简单理解权重计算:行内=1000 > ID=100 > 类,属性选择器,伪类选择器=10 > 元素和伪元素=1 > 0。
css图像api
背景图像:
background-image:url(src)
[src:文件路径,可以是绝对URL,比如一个图片的url;也可以是相对文档,相对根目录]背景平铺:
background-repeat: repeat no-repeat repeat-x repeat-y;
背景位置:
background-position: horizontal vertical
[水平位置:left center right;垂直位置:top center bottom;另外可以使用px,em,百分比作为单位,如果没有指定方向则默认值从左上偏移]背景固定:
background-attatchment: scroll fixed
[scroll随着其他内容一起滚动,fixed固定在某个位置不受其他内容影响]背景的起点:
background-origin: border-box padding-box: content-box
[这个属性在background-attachment:fixed
的时候无效]限制背景出现的位置:
background-clip: border-box padding-box content-box
[这个属性跟background-origin
有点类似,不同的是这个属性会对背景进行剪裁,而前者不会,这两个属性可以配合使用。]设置图片大小:
background-size: width height contain cover
[宽高可以是px,也可以百分比,contain和cover的区别只在于:contain会显示完整的图片,而cover则会让图片宽度先铺满容器再保留纵横比]背景混合模式:
background-blend-mode:
,还没理解。多背景:
background: url(),url(),url()...;
[用逗号分隔,每一个都可以作为一个简写的background,顺序很重要,先出现的显示优先级最高,依次递减]。线性渐变:
background-image: linear-gradient(to direction, color1 pistion[, color2 postion[,...)
[direction:方向,可以是关键字top,bottom,left,right,也可以是角度0-360deg;postion是颜色从哪个位置开始显示]。平铺线性渐变:
background-image: reapeating-linear-gradient(to direction, color1 position[, color2 position[,...)
[平铺线性渐变,会以一段渐变为单位去平铺,position一般会用px,一般使用平铺径向渐变都会让起始颜色和结束颜色相同,达到比较衔接的效果]。径向渐变:
background-image: radial-gradient(size[ circle[ at[ postion], color1 position[, color2 position[)
[ 默认显示一个圆形,渐变中心在元素的中心点上。circle创建一个圆形的渐变【也可以是ellipse椭圆形】,at关键字可以设置渐变中心的中心,size则是渐变的尺寸,有四个关键字:closest-side,closest-corner,farthest-side,farthest-corner 可以是用单位决定渐变的尺寸,比如px]。平铺径向渐变:
background-image: repeating-gradient(size circle[ at[ position],color1 postion, color2 position)
[position用px,一般使用平铺径向渐变都会让起始颜色和结束颜色相同,达到比较衔接的效果]
链接API
- 链接状态伪类:
:link :visited :hover :active :focus
[未访问 已访问 鼠标悬浮 单击链接 Tab键进入表单字段或链接,排列顺序为爱恨原则LoVe/HAte]
CSS变形、过渡、动画
变形
旋转:
transform: rotate(deg)
[deg为提供的角度]缩放:
transform: scale(x,y)
,transform: scaleX(n)
,transform: scaleY(n)
[x,y分别为纵横放大的倍数,如果只提供一个值则宽高放大同样的倍数,元素和里面的全部内容会一起缩放。scaleX和scaleY分别为宽高各自放大的倍数。scale(x,y) 可以理解为x是元素左右边线到元素中心点的距离,y是元素上下边线到元素中心点的距离。x值越大元素的左边线越靠左,右边线越靠右x值为0时,左边线和右边线会重合。x值为负数时,元素的左边线会移到元素中心点的右侧,右边线会移到元素中心点的左侧。这样就水平反转了。]平移:
transfrom: translate(x, y)
,transform: translateX(x)
,transform: translateY(y)
倾斜:
transform: skew(xdeg, ydeg)
,transform:skewX
,transform:skewY
[倾斜中的X,Y跟我们以往的坐标系刚好相反,就好理解了]多重变形:
transform: rotate scale translate skew
[各个变形函数的书写顺序就是浏览器应用效果的顺序]变形原点:
transform-origin: x y
[单位可以是像素,关键字,em,百分比]3D变形,有待学习,非常重要。
过渡
过渡属性:
transition-property: key-word
[all或者其他css属性,多个属性用逗号相隔]持续时间:
transition-duration: time
时序函数:
transition-timing-function: key-word
[ease, ease-in, ease-out,ease-in-out,linear,cubic-bezier]延迟:
transition-delay: time
按照顺序简写:
transition:
动画
名字:
animation-name: name
持续时间:
animation-duration: time
时序函数:
animation-timing-function: key-word
次数:
animation-iteration-count: number
方向:
animation-direction: alternate
延迟:
animation-delay: time
填充模式:
animation-fill-mode: forwards
关键帧:
@keyframe name {from{...} percentage{} to{...}}
按照顺序简写:
animation:
表格API
添加内边距
padding
纵向对齐:
vertical-align:top baseline middle bottom
[不可继承]横向对齐:
text-algin: left right center justify
[可继承]单元格间隙:
border-spacing:
[问题:造成边框宽度重叠两倍]去双重边框:
border-collapse: collapse
[设置了border-collapse,则border-spacing无效]圆角:
border-radius: number
[同上]隐藏空单元格:
empty-cells: hide;
[同上]隔行条纹:
tr:nth-of-type(odd) tr:nth-of-type(even)
表单伪类:
:focus :checked :disabled :enabled
布局api
固定宽度布局:不管浏览器窗口有多宽,页面的宽度始终一致。常见的是居中显示,最常用的宽度是960px。因为移动设备的普及,这种方式已经不流行了。
流式布局:流式布局能自动调节,匹配浏览器的宽度,其宽度使用百分比设定的。优点是可以利用浏览器窗口的可用空间,但不能保证在所有的窗口中都好看,比如,屏幕太大的时候,文本行太长。
响应式web设计:支持不同宽度的浏览器,响应式web设计不为所有设备提供一样的布局,而是提供不同的布局。
浮动:
float: left right none
定位:
position: absolute relative fixed static
绝对定位:相对于最近的祖辈定位元素(fixed,relative,absolute)的边界而定,否则相对于浏览器窗口而定。【脱离文档流】
隐藏页面部分内容:visibility:visible hidden。hidden和display:none的作用一样,但none会让元素彻底消失,而hidden只会不显示元素,但是元素原来的位置还是会留空。
通过定位的right,left属性可以自动设置元素长度。
相对定位:相对于元素在HTML流中的当前位置而定。它的主要用途不是移动元素,而是为其中需要绝对定位的元素设置参考点。
固定定位:固定的元素钉在屏幕的某个位置。
responsive web design 响应式设计
@import url(src) (key: value)
命令必须放在样式表的开头,不能放在任何样式的后面,否则无效。@media (key: value){style}
媒体查询,相当于一个容器,把满足查询条件的样式围住。弹性栅格
与流式布局
类似,网页的整体宽度都会随着屏幕的宽度而变化调节。width=auto
的作用与设置100%差不多,作用是让元素和容器一样宽。PPI(pixel per inch)
每英寸所包含像素点数目,标准屏幕PPI是160,苹果6是326属于超高密度ppi。DPR
= 设备像素 / 设备独立像素,设备像素比,代表设备独立像素到设备像素的转换关系。可以通过window.devicePixelRatio获取。设备像素
:指的是设备像素,设备能控制显示的最小单位CSS像素
:指我们在代码中设置的逻辑像素值,是一个抽象概念,实际不存在。DPI
每英寸包含点的数量DPPX
每像素包含点的数量 96dpi = 1dppx设备独立像素
:与设备无关的逻辑像素,指通过程序控制的虚拟像素,包含了CSS像素。
图片缩放大小
= 图片CSS大小 * DPR行内元素会忽略宽高以及上下内外边距
设置断点,通常的做法是设置三个,小于480,480~768,大于768.判断的标准其实是:从某一点开始,网站的外观可能会变差。
设置
width: auto
与设置为100%作用是相同的。
CSS栅格系统
栅格:一种把内容组织到行和列中的方式,而且各列的宽度是一致的。
容器:容器用于设置整个栅格系统的宽度,通常使用max-width属性。
行:放在容器中,一行可以由多个div标签,标记各列。
列:一列就是一行里的div标签,一行可以由一列或多列。
定义容器,行,列,只需要为div设置相应的类名,不同的栅格系统有不一样的命名。
弹性盒
弹性容器:
display: flex;
弹性项目:直接嵌套在弹性容器里的标签叫弹性项目。
项目宽度相等并且填满整个容器:
flex: 1;
。
弹性容器的属性
弹性项目的排列方向以及是否换行:
flex-flow: direction[row row-reverse column column-reverse] newline[nowrap wrap wrap-reverse]
设置弹性项目显示在一行的位置【需要符合flex属性】:
justify-content: flex-start【靠左对齐】 flex-end【靠右对齐】 center space-between【均匀分布各个弹性项目,最左边的靠左边,最右边的靠右边,左右边不留空白】 space-around【把容器剩余的空间平均分给各个项目,包括最左边和最右边,左右边会留空白】
设置弹性项目在弹性容器里的纵向对齐方式:
align-items:flex-start flex-end center baseline stretch[默认]
如何放置显示为多行的弹性项目,设置的是所有的多行弹性项目。【1.必须允许换行;2.弹性容器的高度必须大于多行显示的弹性项目】
align-content: flex-start flex-end center space-between space-around stretch【默认】
弹性项目的属性
控制项目的显示顺序:
order:num
,指定每一个项目的数字后,页面会从小到大排序。控制单个项目的纵向对齐方式:
align-self [align-items属性值]
,可以覆盖掉align-items弹性项目的外边距不折叠,可以把外边距的值设为auto,让浏览器根据可用空间调整外边距的值
控制弹性项目的宽度:
flex:
flex-grow:num[相对宽度,表示弹性项目如何变宽,只要大于0整个宽度就会被占满。等于0则由自身的宽度决定。]
flex-shrink:[当项目的宽度之和大于容器的宽度,弹性项目收窄多少,跟flex-grow一样是相对宽度。flex-flow为nowrap才起作用,可以始终1。为0就是不收缩]
flex-basis:px、em、%[设置弹性项目的基准宽度,当flex-grow为0时,宽度等于设置的值,否则有可能大于设置的值也有可能小于。允许换行时才真正起作用。为了跟flex-grow一致。应该按照grow的比例设置值。用于确定何时换行。根据这个基准来计算宽度。]
网站图标
//
阴影
文本阴影:text-shadow: x y blur-radius(模糊程度) color
盒子阴影:box-shadow: inset x y blur-radius(模糊程度) spread-radius【阴影延伸长度】 color
多栏文本
- column-count
- column-width
清除浮动5个方法
- 在浮动元素后面使用一个带clear属性的空元素
- 给浮动元素的容器添加css,overflow:hidden+zoom:1
- 给浮动元素的容器也添加浮动,但整体都会浮动,影响布局。
- 使用邻接元素处理,给浮动元素后面的元素添加clear属性
- 使用CSS的::after伪元素