前端入门第二步:核心样式、H5 + C3 新特性

245 阅读30分钟

[TOC]

CSS核心样式

文字属性font

文本粗细

作用:设置文字粗细程度

属性名:font-weight => font属性中的单一属性

属性值:特定单词或者数字

特定单词对应数值注明
normal400默认值
bold700加粗字符
bolder>700加更加粗
lighter<400变细字符

注意:取数字为属性值时,数字范围为 100~900 之间整百数字

字体风格

作用:设置文字是否为斜体

属性名:font-style =>font属性中的单一属性

属性值:特定单词

属性值说明
normal默认设置,正规字体
italic将所有英文字体倾斜显示
oblique将所有字体倾斜显示

垂直居中

作用:设置XXX高垂直居中文字

属性名:line-height => font属性中的单一属性

属性值: 数字+特定单位 =>设置元素高度

属性值说明
数字+px设置XX像素高
数字+%设置相对于本身字号像素比高度

备注实际使用时,建议使用 Photoshop、Fireworks 软件测量

综合属性

上述几个属性都是独立于font属性

若用font属性综合,请注意写法顺序

一般顺序为:风格(加粗+斜体)> 字号 > 行高 > 字体

写法1:

只有字号字体

font: 14px "consolas","arial","SimSun","Microsoft Yahei";

写法2:

字号、行高、字体时:

字号和行高两种属性属性值一样,所以说就要字号先,行高后用/分割书写

font: 14px/28px "consolas","arial","SimSun","Microsoft Yahei";

写法3:

风格(加粗和斜体)、字号、行高、字体时

font: bold italic 14px/28px "consolas","arial","SimSun","Microsoft Yahei";

文本属性

水平对齐

作用:设置文本水平方向对齐

属性名:text-align

属性值:特定英文单词

属性值作用
left默认值,居左对齐
right居右对齐
center居中对齐

文本修饰

作用:设置文本整体是否有线条修饰效果

属性名:text-decoration

属性值:特定英文单词

属性值说明
none默认值,不设置装饰
overline设置上划线
line-through设置中划线(删除线)
underline设置下划线

备注:a标签默认值为underline

首行缩进

作用:设置段首缩进

属性名:text-indent

属性值:数字+特定单位

属性值说明
数字+px首行缩进XX像素
数字+em首行坐进XX个中文字符
数字+%缩进父辈标签width属性值百分比

备注:最常用的特定单位为em

​ 属性值有正负 = > 正代表右缩进,负代表左缩进

盒模型常用五大属性

盒模型有五大属性width、height、padding、border、margin

​ => 宽度 、高度 、内边距 、边框 、外边距(外间距)

概念图

开发者工具中盒模型图

书写元素内容:width+height

盒子实体化区域:width+height+padding+border

盒子实际占为:width+height+padding+border+margin

宽度

作用:设置元素区域内宽度

属性名:width

属性值:数字+特定单位

属性名说明
auto(不填数字)默认值,浏览器实际决定
数字+px像素定义宽度
数字+%相对于父元素宽度百分比

备注:不同的元素浏览器会根据其 特点自动计算出实际宽度,例如div元素等独占一行的,其 width属性的值会自动撑满父元素宽度,如 果是span元素等不需要独占一行的,其 width 属性的值是内部元素内容自动撑开的宽度

高度

作用:设置元素区域内高度

属性名:height

属性值:数字+特定单位

属性名说明
auto(不填数字)默认值,浏览器实际决定
数字+px像素定义高度
数字+%相对于父元素高度百分比

备注:默认设置时,浏览器会自动计算出实际高度,也就是是内部元素内容自动撑开的高度。元素的高度自适应内部内容的高度。

内边距

作用:设置元素边框到内容之间间距(包括上下左右四个方向)

属性名:padding

属性值:数字+px

特点:可以去加载背景,不能书写嵌套内容

使用注意事项:

/*  单写时,表示 上下左右 间距都是这样  */
div {
	padding: 1px;
}
/*  两个时,分别表示 上下、左右 两部分间距  */
div {
    padding: 5px 10px;
}
/*  三个时,分别表示 上、左右、下 三部分  */
div{
    padding: 5px 12px 9px;
}
/*  四个时,分别表示 上、右、下、左  四部分间距  */
div {
    padding: 5px 6px 8px 10px;
}

特殊使用 ==> 单一属性使用

padding四个方向可以拆分成四个单一属性

div {
	padding-top: 5px;
    padding-right: 7px;
    padding-bottom: 11px;
    padding-left: 13px;
}

边框

作用:设置元素边界区域

属性名:border

属性值:由三个方面组成 => 线条宽度、形状、颜色(三个属性值不同,所以说没有书写顺序)

div {
	border: 1px solid #f00;
    /*  宽度 形状 颜色  */
}

特殊使用 ==> 将属性值拆分成三个单一属性

​ 分别为:border-width、border-style、border-color

border-width

​ 作用:设置边框线条宽度

​ 属性值:数字+px

​ 写法:可以参考padding特殊写法

border-style

​ 作用:设置边框线条形状

​ 属性值:特定单词

属性值说明
none无边框
solid实线边框
dashed虚线边框,虚线间距与border-width有关
dotted点状边框,两点间距与border-width有关
double双线边框,双线距离与border-width有关
groove3D凹槽边框,显示效果与border-color有关
ridge3D垄状边框,显示效果与border-color有关
inset3D内容凹陷效果
outset3D内容凸出效果

border-color

​ 作用:设置边框颜色

​ 属性值:颜色型号或者颜色名,参考颜色写法

div {
	/*  线条宽度  */
    border-width: 1px;
    border-width: 1px 2px;
    border-width: 1px 5px 2px;
	border-width: 1px 2px 3px 4px;
    /*  线条形状  */
	border-style: solid;
    /*  线条颜色  */
	border-color: #f00;
}

外边距

作用:设置盒子与其他容器间距

属性名:margin

属性值:数字+px

特点:不能背景渲染

特殊使用 ==> 单一属性使用

​ 与内边框像是,根据四个方向设定四个不同单一属性

div {
	margin-top: 20px;
	margin-right: 30px;
	margin-bottom: 40px;
	margin-left: 50px;
}

写法类似padding

盒模型综合使用

清除默认样式

  • 大部分标签都有默认样式,会对布局造成影响,一般建议清除默认样式

  • 盒模型都有默认外边距、内边距,同样大部分容器标签都有外边框、内边框

  • ulol两种列表都有前缀:清除list-style属性。

  • a标签会有 下划线、点击前后颜色 默认样式,清除color、text-decoration

  • font-weight清除默认加粗样式

    body,div,p,h1,h2,h3,h4,h5,h6,ul,ol,li,dl,dt,dd,td,th {
    	margin:0;
    	padding:0;
    }
    /*  建议使用通配符  */
    * {
    	margin: 0;
    	padding: 0;
    }
    
    a {
    	color: #666;
    	text-decoration: none;
    }
    
    h1,h2,h3,h4,h5,h6,b,strong {
    	font-weight: normal;
    }
    
    /*  也可以给 body 设置样式,让后代标签继承  */
    body {
        color: #666;
        font-size: 14px;
        font-faminy: "Arial","consolas","Microsoft Yahei";
    }
    

高度应用

  • 在不设置高度时,高度会随着内容自动扩展

  • 在设置高度后,盒子就只有那么高,不会随着内容变化

    • 设置高度后,后续元素都会紧挨着上个盒子高度加载

    • 若盒内内容高度高过盒本身高度,显示情况由overflow决定

    overflow属性

    作用:在设置高度的盒子内元素内容高出元素时,对多出部分进行处理

    属性值:

    属性值说明
    visible默认值,显示溢出部分
    hidden隐藏溢出部分
    scroll出现滚动条,但不改变盒子宽度高度(无论有无溢出都会出现滚动条)
    auto自动模式,没有溢出用visible,溢出时用scroll

居中

文本垂直居中

文本行高line-height等于盒子高度

文本水平居中

文本属性text-align: center

元素水平居中

设置左右方向外边距auto

元素垂直居中

父元素高度自适应,子元素设置上下外边距

父子盒模型

一个父元素可以包含若干个子元素,若若干(>1)个子元素同排展示,必须满足以下条件,不然会换行展示甚至会溢出父元素

父元素width≥所有子元素[width+左右(padding+border+margin)]

错误示范

正确示范

特殊

  • 父元素设置宽度子元素会自动继承父元素宽度
  • 若子元素水平方向设置了margin、padding、border时,子元素的宽度会自动收缩

外边框(margin)塌陷

现象一:在垂直方向两元素相遇,两元素垂直方向距离为两元素中最大的外边距

​ 另一个则会塌陷在最大外边距 => 对应外边距为零

大 外边距

小 外边距塌陷

现象二:当子元素设置上边距margin-top,父元素没设置时,父元素会跟子元素一起掉落

父元素没设置外边距

虽然只有子元素设定上边距,但子元素影响父元素

解决方案:

​ 1、在同一竖直方向两元素,只用给一个元素设置边距即可

​ 2、父子元素中,建议父元素用padding-top方法来隔开与子元素的上下距离

注意!水平方向不存在塌陷现象

标准文档流

原理:元素排版布局过程中,元素会默认自动从左往右,从上往下的流式排列方式

​ ==> html就是一种标准文档流文件

​ ==> html标准文档流有两特点:微观现象和元素等级

微观现象

1、空白折叠

2、文字类元素在同一行会出现高低不齐但底边对齐效果

3、元素写满时一行时会自动换行

元素等级

html元素有等级区分,习惯以加载级别将元素划分成:块级元素、行内元素、行内块元素

块级元素

​ 特点: 1、块级元素可以设置宽高,在浏览器中正常加载。

​ 2、块级元素必须独占一行,不能与其他标签并行

​ 3、不设置宽度时,会自动填满父级width区域;高度不设置时,内容会自动调整高度

行内元素

​ 特点: 1、行内元素不能正常加载宽高

​ 2、行内元素可以与其他的行内或者行内块元素并行显示

​ 3、行内元素宽高只能被内容自动撑开

行内块元素

​ 特点: 1、可以设定宽高

​ 2、行内块元素可以与其他行内或行内块元素并排一行显示。

​ 3、在不设置宽高时,元素宽高随内容多少自动调整

​ 4、具有微观现象,如空白折叠

总结

​ 块状元素 ==> 大部分都是容器标签(包括p标签),如:div、h1

​ 行内元素 ==> 大部分为文本标签,如span、a、b

​ 行内块元素 ==> img、input

显示模式

作用:改变元素加载顺序

属性名:display

属性值:

属性值作用
block以块状元素模式加载(块状元素默认)
inline以行内元素模式加载(行内元素默认)
inline-block以行内块元素模式加载(行内块元素默认)
none隐藏标签以及其内容

脱离标准流

为了实现部分布局效果,还要脱离标准流布局,如:浮动、绝对定位、固定定位。

浮动属性

​ 属性名:float

​ 属性值:

属性值说明
left向左浮动
right向右浮动

​ 作用:让元素脱离标准流,改变同行元素排列显示顺序

​ 浮动的元素脱离了标准流的限制,具备行块属性,浮动元素可以设置宽高可以并排,而且不会有空白折叠现象

​ 如果元素不设置宽高,可以被元素内容自动撑开

​ 如果父元素宽度不够子元素会换行

​ 注意:子元素2低于1、3时,不会出现转空现象

​ 浮动元素不会出现margin塌陷

​ 应用:

​ 一、上述平均分布表格效果

​ 二、导航栏效果

​ 三、③常见的电商或企业网站布局。

​ 特殊用法:

​ 同级元素时,前者设定左浮动后者不设置,就会出现特殊样式

​ 在该样式内,若在蓝色盒子内写文字,文字会自动避开粉色盒子,形成字围现象

浮动产生问题

​ 1、浮动元素不会自动撑高父元素高度

​ 2、父元素没有高度,会影响后面元素的标准流位置

清除浮动问题

​ 1、给存有浮动元素的父元素设置高度

​ 2、给父元素添加clear属性=>clear: both;

​ 3、外墙法:在两个父元素之间,添加一个空的 div 标签,标签上带有 clear

​ 4、内墙法:在父元素内部,所有的浮动子元素后面添加一个空的 div 元素,标签高度为 0,添加 clear 属性

​ 5、伪类:通过选中标签添加伪类:after=>标签内部最后位置

.clearfix:after {
	content: "1";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

​ 6、给内部有浮动子元素的父元素添加溢出隐藏 overflow: hidden; ,解决浮动问题

CSS伪类选择器

伪类
必须给标签设定对应的class属性才能被选中,被选中后立即加载到浏览器上不需要给标签添加属性,但必须搭配其他选择器使用
权重与伪类相同权重与类相同

写法: 普通选择器+伪类名 .clll:after{…………}

a标签伪类处理

a:link {
	color: gray;	/* 点击前的颜色 */
}
a:visited {
    color: cyan;	/* 点击后的颜色 */
}
a:hover {
    color: red;		/* 鼠标移到标签后变化颜色 */
}
a:active {
    color: yellow;	/* 鼠标点击时变化的颜色 */
}

背景属性

背景颜色

作用:在盒子区域内添加背景颜色

属性名:background-color

作用范围:border及其内部

属性值:颜色值、特定颜色单词

背景图片

作用:在盒子区域内添加背景图片

属性名:background-image

作用范围:默认的加载到边框及以内部分,默认从开始左上角加载

属性值:url("图片路径")

注意:绝对路径只能是网页地址路径,本地文件只能是相对路径

背景重复

作用:设置图片背景是否重复加载(只作用与图片)

属性名:background-repeat

属性值:

属性值作用
repeat默认值,重复,重复加载图片直至填满盒子背景
no-repeat不重复,只加载一次图片
repeat--x水平重复但垂直方向不重复
repeat--y垂直重复但水平方向不重复

背景定位

作用:主要设置不重复图片背景加载开始位置

属性名:background-position

属性值:特殊单词、数字+像素或百分比 =>一般都是两个值,分别表示水平、垂直方向位置

特殊单词:表示对齐方向

​ 水平方向:left、center、right

​ 垂直方向:top、center、bottom

像素

​ 第一个属性值:像素是几,表示背景图片左上角针对 border 以内的左上顶点水平方向位移的距离

​ 第二个属性值:像素是几,表示背景图片左上角针对 border 以内的左上顶点垂直方向位移的距离。

数值为正时,向右、下移动;为负时,向上、左移动

百分比

​ 水平方向,等价于盒子的border以内背景区域宽度减去图片宽度

​ 垂直方向,等价于盒子的border以内背景区域高度减去图片高度

背景附着

作用:设置背景图片是否跟随页面盒子/页面滚动而滚动

属性名:background-attachment

属性值:

属性值说明
scroll滚动,表示背景图片与盒子保持相对位置,会随着页面移动而移动
fixed固定,当盒子在显示器窗口时,不会随着页面翻动而翻动

综合写法

由于上述背景单一属性属性值独一没重叠,所以说可以不分顺序写(但是背景定位两个值不能分开!!)

div {
	background: url("图片路径") no-repeat center top fixed #fff;
}

注意:

  • 若属性值没有写全,未写部分按默认值加载
  • 若层叠综合属性中某单一属性,建议使用单一属性去写

背景应用

  • 替换插入图片,防止用户点击图片加载的时图片地址
  • padding区域加载背景图片
  • 精灵图技术
    • css精灵是一种处理网页背景图片的方式
    • 原理:将所有背景图集中在一张大图,然后大图作用于网页
    • 工作原理:将网页中小尺寸背景图制作成一张背景透明的 png 图片,再利用背景定位技术将小图片加载到对应标签上
    • 注意:
      • 精灵图都是小的装饰性质背景图片,插入图片不能往上放
      • 宽度取决于最宽背景图片的标签宽度
      • 可以横向\纵向摆放,但每个图片之间必须留够足够的空白, 保证背景图片加载到一个标签内部时,不能出现多余内容

背景半透明(css3)

颜色值增加了rgba模式

rgba分别为:红,绿,蓝,不透明度

其中不透明度范围在0~1之间

背景缩放(css3)

作用:设置背景图片尺寸

属性名:background-size

属性值:数字+px/% 特定单词

属性值说明
数字+px单值表示按照垂直方向等比例缩放;双值表示分别按比例在垂直、水平方向缩放比例
数字+%同上
cover自动调整缩放比例,让背景图完全覆盖背景区域,若有溢出则隐藏溢出部分
contain自动调整缩放比例,把图像缩放到最大尺寸,保证图片始终完整显示

多背景(css3)

规定一个盒子内可以添加多个背景图片

书写时要以逗号,隔开url路径

注意:背景加载时,先写的背景压盖,后写的背景图片

定位属性

作用:设置元素在页面位置

属性名:position

属性值:特定英文单词

属性值说明
relative相对定位
absolute绝对定位
fixed固定定位

偏移量

定位的元素要想发生位置的移动,必须搭配偏移量属性进行设置

  • 水平方向:left、right
  • 垂直方向:top、bottom

属性值:数字+px/%

相对定位

作用:相对于标签加载原始位置移动

属性值:relative

.div1 {
    position: relative;
	left: 100px;
	top: 100px;
    /* 数值正负与属性方向正反对应 */
}

性质:相对定位的元素不脱离标签的原始状态(标准流、浮动),不会让出原来占有位置

绝对定位

作用:参考距离最近的有定位的祖先元素(若都没有就参考body)进行定位

属性值:absolute

.div1 {
    position: absolute;
	left: 100px;
	top: 100px;
    /* 数值正负与属性方向正反对应 */
}

性质:绝对定位的元素脱离标准流,会让出标准流位置可以设置宽高可以随时定义位置不设置宽高时会被内容撑开

注意:绝对定位参考元素不固定,有可能导致偏移方向和偏移量不同

固定定位

作用:参考浏览器四个点位进行偏移定位

属性值:fixed

.backtop {
    /* 定位 */
	position: fixed;
	width: 100px;
	height: 50px;
	right: 50px;
	bottom: 50px;
    /***********/
backgroundcolor: #ccc;
font: bold 20px/50px "Arial";
text‐align: center;
color: #333;
text‐decoration: none;
}

压盖效果

所有定位类可以实现压盖

黑色区域压盖其他背景

压盖顺序:

设置属性z-index改变压盖顺序=> 数字大的压盖小的,同级后者压盖前者

z-index属性必须在有定位的元素生效,否则不会生效

HTML 5

H5是万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML) 的第五次重大修改,取代HTML4与XHTML的新一代标准版本

新变化

  • XHTML
    • XHTML是一种增强了的HTML,它的可扩展 性和灵活性将适应未来网络应用更多的需求
  • H5新特性
    • 方便移动设备使用(尤其是多媒体)
    • 语义特性、本地存储特性、设备兼容特性、连接特性、网页多媒体特性、三维图形及特效特性,性能与集成特性,CSS3 特性
    • 废除一些元素及属性:font、center等。

优劣

优势:

  • 提高可用性和改进用户的友好体验
  • 更好的语义化标签
  • 可以给站点带来更多的多媒体元素(视频和音 频)
  • 可以很好的替代FLASH和Silverlight
  • 当涉及到网站的抓取和索引的时候,对于 SEO很友好
  • 将被大量应用于移动应用程序和游戏
  • 可移植性好

劣势:

  • IE9以下浏览器不兼容
  • 不能让所有浏览器全面支持

新增语义化标签

标签名说明
header头部标签
nav导航标签
main主题标签
article独立的内容标签
section区段标签
aside侧边栏标签
footer尾部标签

作用:便于搜索引擎能快速搜索到网页

注意:这些语义化标签可以重复使用

​ IE9中,要把元素转换为块级元素

​ 移动端更偏好语义化标签

新增多媒体标签

音频

<!--常规写法-->
<audio src="音频路径" controls="controls"></audio>

<!--兼容写法-->
<audio controls="controls">
	<source src="happy.mp3" type="audio/mpeg">
    <source src="happy.ogg" type="audio/ogg">
    您的浏览器暂不支持audio标签
</audio>
格式MIME-typeIE9Firefox3.5Opera10.5Chrome3.0Safari3.0
mp3audio/mpeg
oggaudio/ogg
Wavaudio/wav

常见属性:

属性名属性值描述
autoplayautoplay出现该属性,则在音频就绪后直接播放
controlscontrols出现时,向用户显示控件
looploop出现时,音频循环播放
preloadpreload音频就绪后不自动播放,若出现autoplay则忽略自身
srcurl目标音频路径

注意src属性内绝对路径只能是网站路径,本地文件只能写相对路径

视频

<!--常规写法-->
<video src="音频路径" controls="controls"></video>

<!--兼容写法-->
<video controls="controls">
	<source src="move.mp4" type="video/mp4">
    <source src="move.ogg" type="video/ogg">
    您的浏览器暂不支持audio标签
</video>
格式MIME-typeIEFirefoxOperaChromeSafari
oggvideo/oggX3.5+10.5+5.0+X
mp4video/mp49.0+XX5.0+3.0+
webmvideo/webmX4.0+10.6+6.0+X

常见属性

属性名属性值描述
autoplayautoplay加载后自动播放
controlscontrols显示播放控件
looploop循环播放
preloadauto(自动播放)
none(不会自动播放)
加载后是否自动播放,若出现autoplay则忽略自身
srcurl目标视频路径
width数字+px设置播放器宽度
height数字+px设置播放器高度
posterimgurl加载等待的画面图片
mutedmuted静音播放

注意:视频/等待时出现的图片的绝对路径为网站路径,本地文件为相对路径

新增表单标签

input新增属性值

type的属性值描述
email输入内容必须是 email类型
url输入内容必须是 路径类型
date输入类型必须是 日期类型
time输入类型必须是 时间类型
month输入类型必须是 月份类型
week输入类型必须是 周 类型
number输入类型必须是 数字类型
range滑动条
tel手机号码
search搜索框
color颜色选择表

input辅助标签=>datalist

作用:为input提供列表式可选项

使用方法:input中必须用list属性绑定datalist的id属性

写法:

<input type="text" list="t1">
  <datalist id="t1">
      <option value="1"></option>
      <option value="2"></option>
      <option value="3"></option>
      <option value="4">
      <option value="5">
      <option value="6">
  </datalist>

新增表单属性

属性名属性值描述
requiredrequired表单拥有该属性表示其内容不能为空,必填
placeholder提示文本表单的提示信息,存在默认值将不显示
autofocusautofocus自动聚焦属性,页面加载完成自动聚焦到指定表单,一般页 面中放1个
autocompleteon/off当用户在字段开始键入时,浏览器基于之前键入过的值,应 该显示出在字段中填写的选项
默认已经打开,如 autocomplete=”on “
关闭 autocomplete =”off”
-需要放在表单内同时加上name属性
-同时成功提交
multiplemultple多选文件提交

CSS 3

新增选择器

子集选择器

作用:选定特定父元素中的子元素集

书写:父元素在前,中间为>,子元素居尾

/*  父元素 > 子元素  */
div > h1 {
	color:red;
}

兄弟选择器

作用:选定同级中部分标签

书写:

选择器说明
E1+E2匹配同级中E1后面第一个E2元素
E1~E2匹配同级中E1后面所有的E2元素

相邻兄弟选择器(E1 + E2)

h1 + h2 {
	text-align: center;
    background-color: slateblue;
}

其他兄弟选择器(E1 ~ E2)

h1 ~ h2 {
	text-align: center;
    background-color: slateblue;
}

结构伪类选择器

结构伪类选择

选择对象说明
E1 E2:first-child匹配父元素中的第一个子元素E2
E1 E2:last-child匹配父元素中最后一个子元素E2
E1 E2:nth-child(n)匹配父元素中第n个子元素E2
E1 E2:first-of-type指定元素E的第一个
E1 E2:last-of-type指定元素E的最后一个
E1 E2:nth-of-type(n)指定元素E的第n个

n的用途

1、单纯用作数字

2、特殊单词,如:even(偶数)、odd(奇数)

3、用公式表示某种顺序关系

公式作用范围
2n偶数
2n+1奇数
5n5的倍数 => 5,10,15……
n+5从第五个开始依次往后排:5,6,7……
-n+5从第五个开始依次向前排:5,4,3,2,1,0……

nth-child(n)和nth-of-type(n)区别

E:nth-child(n) 必须同时满足 父元素内顺数第n个元素、这个元素必须为E元素

E:nth-of-type(n)满足父元素内第n个E元素

<style>
    div p:nth-child(3){
        color: brown;
    }
    div p:nth-child(5){
      background-color: blue;
    }
    div h2:nth-of-type(1){
      border: chocolate 1px solid;
    }
    
  </style>
  <div>
    <p>123</p>
    <p>456</p>
    <p>789</p>
    <h2>abc</h2>
    <pre>def</pre>
    <h2>ghi</h2>
  </div>

伪元素选择器

新增伪元素

选择器说明
E::before在E元素内最前面插入一个元素
E::after在E元素内最后面插入一个元素
E::first-letter选择到E容器内的第一个字母
E::first-line选择到E容器内的第一行
E::sekection被鼠标选中的字段
<style>
     
    div::before{
      content: "before";
      color: red;
    }
    div::after{
      content: "after";
      color: goldenrod;
    }
    p::first-letter{
      font-weight:bold ;
      font-size: 3em;
    }
    p::selection{
      background-color: maroon;
    }
  </style>
  <div>
    <p>123</p>
    <p>456</p>
    <p>789</p>
    <p>abc</p>
    <p>def</p>
    <p>ghi</p>
  </div>

注意:单冒号双冒号的伪元素都能浏览器被识别,但建议用h5双冒号标准写

冒号与元素之间不能有空格

伪元素内部必须写属性content:""

​ 创建的伪元素属于行内元素

​ 开发者工具内看不见创建的伪元素

属性选择器

属性选择器可以用于选择指定属性的标签

选择器说明
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元素

CSS3盒模型

box-sizing属性

属性值说明
content-box默认值,标准盒子模型,盒模型是外扩的
width 与 height 只包括内容的宽和高
在 width 和 height 之外绘制元素的内边距、边框、外边距
border-box怪异模式,盒模型是内减的
width 和 height 属性包括内容,内边距和边框,但不包括外边距
为元素指定的任何内边距和边框都将在已设定的 width 和 height 内进行绘制
/* content-box  => 标准模式 */
div{
     width: 100px;
     height: 100px;
     border: 10px solid red;
     padding: 10px;
     margin: 10px;
     box-sizing: content-box;
     white-space: nowrap;
   }

高度/宽度 = 内容

/* border-box  => 怪异模式 */
div{
     width: 100px;
     height: 100px;
     border: 10px solid red;
     padding: 10px;
     margin: 10px;
     box-sizing: border-box;
     white-space: nowrap;
   }

宽度/高度 = 内容+内边距+边框

CSS3新增属性

边框圆角

作用:设置边框的圆角

属性名:border-radius

属性值:数字+px/%

写法:

写法说明
x+px/%说明水平垂直方向半径相同
X px/% / Y px/%/为分割线,前者为水平弧度,后者为垂直弧度,得到椭圆
div{
	border-radius:10px; 				/* 四个角半径一样 */
    border-radius:10px 20px; 			/* 左上和右下 右上和左下 */
    border-radius:10px 20px 30px;		/* 左上 右上和左下 右下 */
    border-radius:10px 20px 30px 40px;	/* 左上 右上 左下 右上 */
}

/ 属性值写法

border-radius: 20% 30% 15%/ 30% 40%;

注意:Internet Explorer 8 及以下版本浏览器不支持border-radius属性,其他浏览器都支持

文字阴影

作用:设置文本阴影

属性名:text-shadow

属性值:数字+px 颜色值/颜色词

属性值简介
h-shadow第一个值,必填,设置水平阴影,可为负
v-shadow第二个值,必填,设置垂直阴影,可为负
blur第三个值,设置模糊距离,可不填
color设置阴影颜色,可不填

​ 备注:h-shadow正时方向向右负时向左

v-shadow正时方向向下负时向上

/*  单层阴影效果  */
h1 {
	text-shadow: 3px 4px 4px red;
}

/*  多层阴影效果  */
h1 {
    text-shadow: 3px 4px 4px red,
                 6px 6px 3px green,
                 9px 9px 3px blue;
}

盒子阴影

作用:对盒子边框添加阴影效果

属性名:box-shadow

属性值:数字+px 颜色值/颜色名

属性值说明
h-shadow第一个值,必填,设置水平阴影位置,可为负
v-shadow第二个值,必填,设置垂直阴影位置,可为负
blur第三个值,设置模糊距离,可不填
spread第四个值,第三个值存在时可设置,设置阴影尺寸,可不填
color设置阴影颜色,可不填
inset将外阴影改为内阴影,可不填

备注: h-shadow正时方向向右负时向左

v-shadow正时方向向下负时向上

/*  单层阴影效果  */
img {
    border: 10px solid skyblue;
    box-shadow: 3px 4px 4px black;
}

/*  多层阴影效果  */
img {
    border: 10px solid skyblue;
    box-shadow: 3px 4px 4px blue,
                -3px -4px 4px rgb(28, 114, 143),
                6px 8px 10px black;
   }

过度属性

作用:在不借助Flash动画或JS情况下,通过样式实现补间动画(过渡效果)展现下一个元素

属性名:transition

书写格式:

transition: 过度属性 过渡时间 运动曲线 延时时间;

单属性写法:

属性名描述
transition综合属性,用于综合下列四个属性
transition-property规定应用过的的css属性名
transition-duration规定过渡效果花费时长,默认为0
transition-timing-function规定过渡效果时间曲线,默认为“ease”
transition-delay规定延时执行,默认为0

transition-property属性值

属性值说明
none无属性过度
all表示所有变化的属性过度
属性名,如width,height具体变化属性名,多个属性名用逗号隔开

transition-durationtransition-delay属性值

都是以 s(秒) 做单位,包括零秒

transition-timing-function属性值

属性值说明
linear匀速过度到结束
ease初始慢,后变快,再慢速结束
ease-in规定慢速开始过渡效果
ease-out规定慢速结束过渡效果
ease-in-out规定慢速开始和结束过度效果
cubic-bezier(x1,y1,x2,y2)在cubic-bezier函数中定义自己的值
x1、x2、y1、y2取值0~1

​ cubic-bezier曲线解释

上述P1点为(x1,y1),P2点为(x2,y2),两个点分别控制了开始,结束时间段速度

​ cubic-bezier对应属性

单词对应值
easecubic-bezier(0.25,0.1,0.25,0.1)
linearcubic-bezier(0,0,1,1)
ease-incubic-bezier(0.42,0,1,1)
ease-outcubic-bezier(0,0,0.58,1)
ease-in-outcubic-bezier(0.42,0,0.58,1)

浏览器兼容

浏览器适配
IE10transition
Firefox-moz-transition 、 transition
Chrome-webkit-transition 、 transition
Opera-o-transition 、 transition
Safari-webkit-transition 、 transition

2D转换

作用:实现元素移动、缩放,旋转、拉伸等效果

属性名:transform(3D也适用)

属性值:如下

位移

作用:对元素进行移动、缩放、旋转、拉长或拉伸

属性名:translate

属性值:

属性值说明
translate(x,y)xy分别时向水平垂直方向移动,可以用 px 或 % 单位,有正负区分
translate(x)表示水平方向移动,单位同上

缩放

作用:实现元素缩放

属性名:scale()

属性值:

属性值说明
scale(x,y)xy分别改变元素宽度高度
scale(n)宽度高度同时缩放
scaleX(n)改变元素宽度
scaleY(n)改变元素高度

旋转

作用:对元素进行旋转

属性名:rotate()

属性值:rotate(数字+deg)

备注:正数时顺时针选择,负数时逆时针旋转

倾斜

作用:设置元素倾斜度

属性名:skew()

属性值:skew(x,y)

备注:单位都是**deg**,xy分别表示水平垂直,正负分别表示右/下和左/上

原点迁移

作用:改变元素原点位置

属性名:transform-origin

属性值:数字+px/% 或者 特定单词

属性值说明
第一个值定位x轴的原点,取值:left、center、right、数字+px/%
第二个值定位y轴的原点,取值:top、center、right、数字+px/%

3D转换

作用:实现3D立体转换效果

属性名:transform(也适用于2D)

透视属性

作用:设置在z轴视线焦点

属性名:perspective

属性值:数字+px

注意:这个属性要设置在父元素上

3D旋转

作用:对2D旋转进行3D化补充

属性值说明
rotateX(n deg)沿X轴转动
rotateY(n deg)沿Y轴转动
rotateZ(n deg)沿Z轴转动

注意:X轴Y轴旋转时必须同透视属性使用,不然会变成缩小样式

​ 可以为负,方向相反

3D位移

作用:对2D位移进行3D化补充

属性值说明
translateX(x px)设置X轴位移量
translateY(y px)设置Y轴位移量
translateZ(z px)设置Z轴位移量

注意:可以为负,方向相反

transform-style

作用:设置被嵌套的子元素在父元素的 3D 空间中显示

属性名:transform-style

属性值:

属性值说明
flat所有子元素在2D平面呈现
preserve-3D保留在3D空间

浏览器兼容

浏览器适配
IE9-ms-transition
IE10transition
Firefox-moz-transition 、 transition
Chrome-webkit-transition 、 transition
Opera-o-transition 、 transition
Safari-webkit-transition 、 transition

动画效果

@keyframes规则

作用:设定动画样式并对自定义的动画命名

写法:

/*  写法一:from + to
	from  =>  开始
	to    =>  结束
*/
@keyframes action1 {
    from {
        transform: translateX(0);
    }
    to {
      transform: translateX(100px);
    }
}

/*  写法二:  数字+%
	表示进程到 n% 时执行XXX
*/
@keyframes action2 {
      0% {
        transform: translateX(0);
      }
      25% {
        transform: translateX(100px);
      }
      50% {
        transform: translateX(0);
      }
      75% {
        transform: translateX(-100px);
      }
      100% {
        transform: translateX(0);
      }

注意浏览器兼容!!

浏览器适配
IE9完全不兼容,但IE10以上都支持
Firefox@-moz-keyframes 、 @keyframes
Chrome@-webkit-keyframes、@keyframes
Safari@-webkit-keyframes
Opera@-0-keyframes

animation属性

作用:绑定动画并且实现动画效果

写法:

div {
    animation: action1 5s linear infinite 0s;
    /*		动画名	运行时间 速度曲线 动画次数 延时时间
    */
}

单一属性列表:

属性名描述
animation-name绑定动画名称
animation-duration规定完成周期时间,默认0s,单位 s 或者 ms
animation-timing-function规定动画的速度曲线,默认“ease”
animation-delay规定延时时间,默认0s,单位 s或者ms
animation-iteration-count动画播放次数,默认1,infinite表示无限循环

同样注意浏览器兼容!!

浏览器适配
IE9完全不兼容,但IE10以上都支持
Firefox-moz-animation、 animation
Chrome-webkit-animation、animation
Safari-webkit-animation
Opera-0-animation

笔记整理者: 拉钩教育大前端就业1期