前端笔记 — CSS3

一. 选择器

1.属性选择器
E[attr]:存在该属性即可

E[attr=val]:属性值等于val

E[attr~=val]:属性值等于val,或者属性值用空格分隔,其中有val

E[attr|=val]:属性值等于val,或者属性值用'-'分隔,其中有val

E[attr*=val]:属性值包含val

E[attr^=val]:属性值以val开头

E[attr$=val]:属性值以val结尾
2.伪类选择器
E:nth-child(n):查找E的所有兄弟元素,包括它本身,下标从1开始,如果下标n对应的是同类元素则选中,否则不选中

E:nth-last-child(n):作用与nth-child类似,只是下标从后往前

E:nth-of-type(n):查找E的所有同类兄弟元素,包括它本身,下标从1开始,选中下标n对应的元素

E:nth-last-of-type(n):作用与nth-of-type类似,只是下标从后往前

E:first-child:查找E的第一个兄弟元素,可以是它本身,如果是同类元素则选中,否则不选中

E:last-child:作用与first-child类似,只是从后往前

E:first-of-type:选中E的第一个同类兄弟元素,可以是它本身

E:last-of-type:作用与first-of-type类似,只是从后往前

E:only-child:选中没有兄弟元素的E元素

E:only-of-type:选中没有同类兄弟元素的E元素

E:empty:选中没有任何子元素(包括文字、空格、换行)的E元素
3.伪元素选择器
E::selection:可改变选中文本的样式

E::placeholder:可改变placeholder的默认样式

E:before、E::before:在E元素内部最前面添加一个元素

E:after、E::after:在E元素内部最后面添加一个元素

二. 边框

1.边框圆角

border-radius:设置圆角的半径
border-radius: 40px 30px 30px 50px;设置顺序分别为1、2、3、4
border-radius: 50%;表示半径为正方形边长的50%

border-radius: 80px / 40px;表示椭圆的横轴为80px,纵轴为40px
border-radius: 40% / 20%;表示椭圆横轴为宽的40%,纵轴为高的20%,宽高包括边框

2.边框阴影

box-shadow:设置元素的边框阴影,没有边框也可以设置
box-shadow: 5px 5px 5px 5px red;
参数一:阴影的水平偏移量,正数为右,负数为左
参数二:阴影的垂直偏移量,正数为下,负数为上
参数三:阴影的模糊度,数值越大越模糊
参数四:阴影的尺寸,默认情况下,阴影的大小与元素大小一样,如果该值为正,则增大阴影面积,否则为缩小,5px表示阴影上下左右各增加5px,即宽高各增加10px
参数五:阴影的颜色

注意:图中第一个参数与第二个参数写反了
3.边框图片

border-image-source:设置图片路径
border-image-width:设置图片边框的宽度
border-image-slice:图片的切割方式
border-image-repeat:图片的重复方式

如图所示,图片的切割顺序为上右下左(1234)
border-image-slice: 27; //没有单位
border-image-slice 27 40 40 27;
A区域的图片不会被拉伸,只有B区域才可被拉伸
repeat的三种方式:round(平铺、拉伸)、repeat(平铺、裁剪)、stretch(默认,拉伸)

三. 背景

  1. background-origin,设置背景图片的位置
    border-box:从边框位置开始显示,即边框也有背景图片
    padding-box:从内边距位置开始显示,即内边距也有背景图片
    content-box:从内容区域开始显示,默认值

  2. background-clip,设置背景的裁剪方式,背景颜色也会被裁剪
    border-box:超过边框的裁剪掉,默认值
    padding-box:超过内边距的裁剪掉,即边框没有背景
    content-box:内容区域以外的裁剪掉

  3. background-size,设置背景图片尺寸
    contain:固定左上角,等比例缩放,直到某一边充满背景区域
    cover:固定左上角,等比例缩放,直到充满背景区域,超出的部分被裁剪
    也可以通过百分比、像素来设置背景区域的大小

  4. background-position,设置背景图片的偏移
    background-position: 50px 30px
    表示水平方向偏移50像素(正右负左),垂直方向偏移30像素(正下负上)

  5. background-repeat,设置背景图片的重复方式
    no-repeat:不重复
    repeat-x:水平重复
    repeat-y:垂直重复

五. 渐变

1.线性渐变

沿着某条直线朝一个方向产生渐变效果

//黄色到绿色渐变,默认为从上往下
background-image: linear-gradient(yellow, green);
//多种颜色渐变
background-image: linear-gradient(yellow, green, red);
//从左往右渐变
background-image: linear-gradient(to right, yellow, green);
//向45度方向渐变,向上为0度,向右为90度
background-image: linear-gradient(45deg, yellow, green);
//0-30%:黄色,30%-70%:渐变色,70%-100%:绿色
background-image: linear-gradient(to right, yellow 30%, green 70%);
//0-30%:黄色,30%-50%:黄绿渐变,50%-70%:绿蓝渐变,70%-100%:蓝色
background-image: linear-gradient(45deg, yellow 30%, green 50%, blue 70%);
//由于后面的百分比小于前面的,所以变为与前面相等,即yellow 60%, green 60%
background-image: linear-gradient(90deg, yellow 60%, green 40%);
2.径向渐变

以某点为中心,向四周渐变

//以元素中点为中心,向四周渐变
radial-gradient(yellow, green);
//0-40%:黄色,40%-80%:黄绿渐变,80%-100%:绿色
radial-gradient(yellow 40%, green 80%);
//渐变半径50px,50px以外为绿色
radial-gradient(50px, yellow, green);
//以左上角为中心向四周渐变,渐变半径150px,150px以外为绿色
radial-gradient(150px at left top, yellow, green);
//以(50, 50)为中心向四周渐变,渐变为横轴100px,纵轴50px的椭圆
radial-gradient(100px 50px at 50px 50px, yellow, green);
//渐变为椭圆,横轴为元素宽度一半,纵轴为元素高度一半,如果元素为正方形,则渐变为圆形
radial-gradient(ellipse, yellow, green);

3.重复渐变

repeating-linear-gradient:线性重复渐变
repeating-radial-gradient:径向重复渐变

六. 伸缩布局

  1. 设置元素的display属性为flex,则该盒子内部为伸缩布局
  1. flex-direction:设置主轴的方向
    row:水平从左往右,默认值
    row-reverse:水平从右往左
    column:垂直从上往下
    column-reverse:垂直从下往上
  1. justify-content:设置主轴方向上的对齐方式
    flex-start:向主轴开始的方向对齐,默认值(主轴从左往右,则左对齐)
    flex-end:向主轴结束的方向对齐
    center:居中对齐
    space-between:两端对齐
    space-around:平分
  1. align-items:设置侧轴对齐方式
    flex-start、flex-end、center
    baseline:以文字基线对齐
    stretch(默认值):不指定高度的情况下拉伸
  1. flex-wrap:是否换行
    wrap:换行
    nowrap:不换行,默认值
  1. align-content:换行情况下,设置行之间的对齐方式
    flex-start、flex-end、center、space-around、space-between、stretch(默认)
  1. flex-flow:flex-direction与flex-wrap的简写

以下属性设置在子元素上

  1. align-self:设置该元素在父盒子侧轴上的对齐方式,会覆盖父元素align-items的效果
  2. order:设置元素在主轴上的排列顺序,值为数字,从小到大排列
  3. flex-grow:如果父盒子存在剩余空间,则将项目放大,设置值为所占剩余空间的份数,0表示不放大!
  4. flex-shrink:如果父盒子空间不足,则将项目缩小,设置值为所占缩小空间的份数,0表示不缩小,默认值为1
  5. flex-basis:定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
  6. flex:flex-grow flex-shrink flex-basis 的缩写,默认为 0 1 auto
    该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

七. 多列布局

-webkit-column-count:设置列数
-webkit-column-width:设置列宽,当列宽*列数大于盒子总宽,则列数会减少
-webkit-column-gap:设置列之间的宽度
-webkit-column-rule:设置列之间的分界线,参数与border一样
-webkit-column-span:值为all,表示跨所有列

八. 过渡

一种状态过渡到另一种状态
transition-property:要过渡的属性
transition-duration:过渡的持续时间
transition-timing-function:过渡的方式,取值linear、ease、ease-in、ease-out、ease-in-out
transition-delay:延迟多久后开始过渡
transition:可一次性设置上面的属性
transition: width 1s, height 2s; //表示宽度1s过渡完,高度2s过渡完

div {
     width: 200px;
     height: 200px;
     background-color: green;
     transition-property: all; /*所有属性*/
     transition-duration: 1s; /*1s内过渡完成*/
     transition-delay: 0.5s; /*延迟0.5后开始过渡*/
     transition-timing-function: linear; /*线性过渡*/
     /*transition: all 1s linear 0.4s;*/
}

div:hover {
     width: 50px;
     height: 50px;
     background-color: red;
}

九. 动画

animation-name:动画的名称
animation-duration:动画执行时长
animation-delay:延迟一段时间后开始执行
animation-timing-function:动画速度曲线,linear线性
animation-fill-mode:动画执行完后的状态,forwards表示保持最后的状态
animation-iteration-count:动画执行次数,infinite表示无限次
animation-direction:动画播放完后是否逆向播放,默认值为normal,alternate表示逆向播放
animation-play-state:动画播放的状态,running表示播放,paused表示暂停

使用@keyframes定义一个动画

div {
     width: 100px;
     height: 100px;
     background-color: blue;
     animation-name: change;
     animation-duration: 4s;
     animation-delay: 0.3s;
     animation-iteration-count: infinite;
     animation-direction: alternate;
     animation-timing-function: linear;
}

@keyframes change {
     0% {width: 30px; height: 30px} /*初始状态,宽高100px,延迟0.3s后开始动画,此时宽高变为30px*/
     25% {width: 30px; height: 300px; background-color: green} /*0-1s,宽度不变,高度变为300px,颜色变为green*/
     50% {width: 300px; height: 300px; background-color: pink} /*1-2s,宽度变为300px,高度不变,颜色变为pink*/
     100% {background-color: red} /*2-4s,颜色变为red,由于没有设置宽高,则会变为初始状态100px*/
}

十. 转换

使用transform设置元素的转换

  1. 2d转换
    rotate():设置旋转角度,正值为顺时针,负值为逆时针。
    例:rotate(45deg),延锚点顺时针旋转45度
    scale():设置元素的缩放,绝对值小于1缩小,大于1放大,当值为负数时会发生翻转。
    例:scale(-1.5, 2),水平方向放大1.5倍并翻转,垂直方向放大2倍
    translate():设置元素的位移
    例:translate(50px, 80px),右移50px,下移80px

  2. 3d转换
    rotate3d(x, y, z):设置元素延三条轴的旋转角度
    rotateX()、rotateY()、rotateZ():设置元素在单个轴上的选择角度
    scale3d(x, y, z):设置元素在三个方向上的缩放比例
    scaleX()、scaleY()、scaleZ():设置单个方向上的缩放比例
    translate(x, y, z):设置元素在三个方向上的位移尺寸
    translateX()、translateY()、translateZ():设置单个方向上的位移

  3. 其他属性
    transform-origin:设置元素的锚点,默认为元素的中点
    perspective:设置视距,需要设置在父元素上,只影响3d转换效果,值越小越明显

perspective-origin:设置灭点的位置,默认为中点,设置在父元素上

transform-style:设置子元素是否在3d平面呈现,默认为flat
如图,子元素旋转60deg的情况,flat时,子元素始终在父元素的平面上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345