2020---css面试题

834 阅读26分钟

1.盒模型

    标准盒与怪异盒的区别在于他们的总宽度的计算公式不一样。

标准模式下总宽度=width+margin(左右)+padding(左右)border(左右);

怪异模式下总宽度=width+margin(左右)(就是说width已经包含了padding和border值)。

标准模式下如果定义的DOCTYPE缺失,则在ie6、ie7、ie8下汇触发怪异模式。

当设置为box-sizing:content-box时,将采用标准模式解析计算,也是默认模式;

当设置为box-sizing:border-box时,将采用怪异模式解析计算;


标准盒模型:总宽度=内容(content)+border+padding+margin

IE盒模型(怪异盒模型): 宽度 = 内容宽度(content+2border+2padding)+margin

2.弹性盒模型(移动端布局)

  ①display: flex;

  ②给父元素 flex-direction 设置主轴方向

flex-direction:row   //(默认)主轴为水平方向,起点在左端。---水平逆序     在容器的最右面
flex-direction:row-reverse   //主轴为水平方向,起点在右端
flex-direction:column   //使用后会使主轴变为y轴
flex-firection:column-reverse   //主轴为垂直方向,起点在下沿。---纵向逆序  在容器底部

  ③flex-wrap:warp;     换行

flex-wrap:nowrap //(默认)不换行
<flex-wrap:wrap   //换行,第一行在上方>
flex-wrap:wrap-reverse    //换行,第一行在下方

  ④flex-flow    复合属性

flex-flow:该属性是flex-direction属性和flex-wrap属性的简写形式。
flex-flow:值1(主轴方向) 值2(是否换行)
flex-flow:row nowrap   //(默认)

flex-flow:row-reverse warp; 让弹性盒子以相反的顺序显示,且在必要是换行

  ⑤justify-content 主轴方向富裕空间管理

 justify-content:flex-start   //(默认)左对齐
justify-content:flex-end   //右对齐
justify-content:center   //居中(子元素紧凑居中)
justify-content:space-between;   //两端对齐,项目之间的间隔都相等
justify-content:space-around;   //每个项目两侧的间隔相等

  ⑥ align-items   富裕空间管理

align-items:flex-start    //与交叉轴的起点对其
align-items:flex-end    //与交叉轴的终点即末尾对其
align-items:center    //与交叉轴的中点对其<位于容器中心>
align-items:baseline    //项⽬的第⼀⾏⽂字的基线对齐
align-items:stretch    //如果项⽬未设置⾼度或设为auto,将占满整个容器的⾼度

  ⑦ align-content  富裕空间管理

align-content属性,紧跟于flex-wrap属性后,该属性用于修饰flex-wrap属性
align-content:flex-start    //与交叉轴的起点对齐
align-content:flex-end    //与交叉轴的终点对其
align-content:center    //与交叉轴的中点对齐
align-content:space-between    //与交叉轴两端对齐,轴线之间的间隔平均分布
align-content:space-around    //每根轴线两侧的间隔都相等

  ⑧ flex-grow:1;  自动扩充

.middle{
    height:20px;
    flex-glow:1;background:blue
}
/表示的是当容器有多余的空间时,这些空间在不同条目之间的分配比例
//比如,一个容器中有 3 个条目,其"flex-grow"属性的值分别为 1,2 和 3
//那么当容器中有空白空间时,这 3 个条目所获得的额外空白空间分别占
//全部空间的 1/6、1/3 和 1/2

  ⑨flex-shrink属性:(定义弹性盒子元素的收缩比率)

flex-shrink属性:(定义弹性盒子元素的收缩比率)
//该属性的值也是无单位的,表示的是当容器的空间不足各个条目的尺寸缩小的比例。
//例如,在容器中有 3 个条目,其"flex-shrink"属性的值分别为 1,2 和 3。
//每个条目的主轴尺寸均为 200px。当容器的主轴尺寸不足 600px 时,
//比如变成了 540px 之后则需要缩小的尺寸 60px 由 3 个条目按照比例来分配。
//3 个条目分别要缩小 10px、20px 和 30px,
//主轴尺寸分别变为 190px、180px 和 170px

3、CSS单位

⑴px:绝对单位。页面按精确像素展示。

⑵em:相对单位,基准点为父节点字体的大小,如果自定义了font-size按自身的来算,整个页面内1em不是一个固定的值。

⑶rem:相对单位,相对于根节点html的font-size的大小来计算。

⑷vw:视窗宽度,1vw等于视窗宽度的1%。

⑸vh:视窗高度:1vh等于视窗高度的1%。

⑹vmin:以宽和高之间最短的一端为基准,如果宽>高,那么1vmin相当于宽的1%;

⑺vmax:以宽和高之间最长的一端为基准,如果宽>高,那么1vmax相当于宽的1%;

⑻%:百分比。

⑼pt:point,大约1/72寸,一寸=3.3333···厘米。

⑽pc:pica,大约6pt,1/6寸。

⑾ex:取当前作用效果的字体的x的高度,在无法确定x高度的情况下以0.5em计算,IE11以下不支持。

⑿ch:以节点所使用字体中的“0”字符为基准,找不到时为0.5em。IE10以上支持。


4、CSS选择器

!important > 内联样式 > id选择器 > class选择器 > 属性选择器 > 伪类选择器(: hover) > 标签选择器 > 伪元素(: before) > 通配符选择器
可继承的属性:
font-size、font-family、color
不可继承的属性:
border、padding、margin、width、height
权重值:
!important权重值:10000,
内联样式:1000,
id选择器:100
class、伪类、属性、伪元素选择器:10
标签选择器:1
后代选择器的权重为包含的选择符权重值之和。
CSS3新增的伪类:
p:first-of-type:选择属于其父元素的首个元素;
p:last-of-type:选择属于其父元素的最后元素;
p:only-of-type:选择属于其父元素的唯一元素;
p:only-child:选择属于其父元素的唯一子元素;
p:nth-child(1):选择属于其父元素的第一个子元素;
:enabled:disabled:表单控件d的禁用状态;
:checked:单选框h或复选框被选中;

4.1   css兼容性问题

1、双倍浮动BUG

描述:块状元素设置了float属性后,又设置了横向的margin值,在IE6下显示的margin值要比设置的值大;

解决方案:给float的元素添加 display:inline;将其转换为内联元素

2、表单元素行高不一致

解决方案:

  ①、给表单元素添加vertical-align:middle;

  ②、给表单元素添加float:left;

3、IE6(默认16px为最小)不识别较小高度的标签(一般为10px):

解决方案:

  ①、给标签添加overflow:hidden;

  ②、给标签添加font-size:0;

4、图片添加超链接时,在IE浏览器中会有蓝色的边框:

解决方案:

  给图片添加border:0或者border:none;

5、最小高度min-height不兼容IE6;

解决方案:

  ①、min-height:100px;_height:100px;

  ②、min-height:100px;height:auto!important;height:100px;

6、图片默认有间隙:

解决方案:

  ①、给img添加float属性;

  ②、给img添加display:block;

7、按钮默认大小不一:

解决方案:

  ①、如果按钮是一张图片,直接用背景图作为按钮图片;

  ②、用a标记模拟按钮,使用JS实现其他功能;

8、百分比BUG:

描述:父元素设置100%,子元素各50%,在IE6下,50%+50%大于100%;

解决方案:

  给右边的浮动元素添加clear:right;

9、鼠标指针BUG:

  cursor:hand 只有IE浏览器识别;

  cursor:pointer;IE及以上浏览器和其他浏览器都识别(手型);

10、透明度设置,IE不识别opacity属性:

解决方案:

  标准写法:opacity:value;(取值范围0-1);

  兼容IE浏览器 filter:alpha(opacity=value);(取值范围1-100);

11、上下margin重叠问题:

描述:给上面的元素设置margin-bottom,给下面的元素设置margin-top,只能识别其中较大的那个值;

解决方案:  

  ①、margin-top和margin-bottom 只设置其中一个值;

  ②、给其中一个元素再包裹一个盒子,并设置over-flow:hidden;

12、给子元素设置margin-top.应用在了父元素上:

解决方案:

  ①、把给子元素设置的margin-top改为给父元素设置padding-top;

  ②、给父元素设置1px的border,即border-top:1px solid transparent;

  ③、给父元素设置over-flow:hidden;

  ④、给父元素设置float:left;


5、BFC

BFC是块级格式化上下文。BFC它是一个独立的渲染区域,只有Block-level box(块元素)参与,它规定了内部的Block-level box如何布局,并且与这个区域外部毫不相关
可以理解成:创建了 BFC的元素就是一个独立的盒子,里面的子元素不会在布局上影响外面的元素(里面怎么布局都不会影响外部),BFC仍属于文档中的普通流
特性:
① 内部的块级元素会在垂直方向上一个接一个的放置;
② 位于同一BFC下的相邻块级子元素在垂直方向上会发生margin重叠;
③ 位于不同BFC下的相邻元素之间不会发生margin重叠;
④ BFC可以包含浮动元素;
⑤ BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素;
创建:
① <html>根元素;
② float的值不为none
③ overflow的值为auto、scroll或hidden
④ display的值为:
table-cell:它会作为一个表格单元格显示(类似td和th)。
table-caption:此元素会作为一个表格标题显示。
inline-block:行内块元素。
⑤ position的值为fixed或absolute
用途:
① 闭合浮动;
② 阻止margin重叠
③ 自适应流体布局

6、清除浮动的方法

①给设置了浮动的元素的父级加高。

②给设置了浮动的元素的父级设置overflow:hidden。如果需要兼容IE,在添加一个zoom:1

③给需要清除浮动的元素设置clear:both;

④在最后一个子元素的后面加一个空的div,给它样式属性 clear:both(不推荐)

⑤伪类清除:.clearfix:after{content:"";clear:both;display:block;}

.clearfix{zoom:1}

<div class="container clearfix">
	<div class="box"></div>
</div>	
<div class="main "></div>

.box{
	width:100px;
	height:100px;
	background:yellow;
	float: left;
}
.main{
	width:150px;
	height: 150px;
	background:red;
}
.clearfix:after{
	content: "";
	clear: both;
	display: block;
}
.clearfix{
	zoom:1;
}
复制代码

7、层叠上下文

层叠上下文(stacking context),是HTML中一个三维的概念。在CSS2.1规范中,每个盒模型的位置是三维的,分别是平面画布上的X轴Y轴以及表示层叠的Z轴。一般情况下,元素在页面上沿X轴Y轴平铺,我们察觉不到它们在Z轴上的层叠关系。而一旦元素发生堆叠,这时就能发现某个元素可能覆盖了另一个元素或者被另一个元素覆盖。

通元素设置position属性为static值并设置z-index属性为具体数值,产生层叠上下文。


8、常见页面布局

⑴静态布局:最传统、原始的Web布局设计。网页最外层容器(outer)有固定的大小,所有的内容以该容器为标准,超出宽高的部分用滚动条(overflow:scroll)来实现滚动查阅。

优点:采用的是css2之前的写法,不存在浏览器兼容性。布局简单。

缺点:但是移动端不可以使用pc端的页面,两个页面的布局不一致,移动端需要自己另外设计一个布局并使用不同域名呈现。

⑵流式布局:流式布局也叫百分比布局。随着屏幕的改变,页面的布局没有发生大的变化,可以进行适配调整,这个正好与自适应布局相补。

优点:元素的宽高用百分比做单位,元素宽高按屏幕分辨率调整,布局不发生变化。

缺点:屏幕尺度跨度过大的情况下,页面不能正常显示。

⑶弹性布局:弹性布局是CSS3引入的强大的布局方式,弹性盒模型:display:flex;

优点:简单、方便、快速

缺点:CSS3新特性,浏览器兼容性非常头疼。而且手机浏览器对flex的支持也不是很理想。

⑷响应式布局:采用自适应布局和流式布局的综合方式,为不同屏幕分辨率范围创建流式布局。利用媒体查询可以检测到屏幕的尺寸(主要检测宽度),并设置不同的CSS样式,就可以实现响应式的布局。

9、CSS预处理,后处理

CSS预处理器:用一种编程语言,为CSS增加了一些编程的特性,最终编译出css文件。比如sass、less、stylus。

优点:语言级逻辑处理,动态特性,改善项目结构

缺点:采用特殊语法,框架耦合度高,复杂度高

实现原理:

①取到 DSL 源代码 的 分析树
②将含有 动态生成 相关节点的 分析树 转换为 静态分析树
③将 静态分析树 转换为 CSS 的 静态分析树
④将 CSS 的 静态分析树 转换为 CSS 代码

CSS后处理器:堆css进行处理,并最终生成css的预处理器,属于广义上的css预处理器,最典型的就是css压缩工具(clean-css),流行的Autoprefixer,以Clean I Use上的浏览器支持数据为基础,自动处理兼容性问题

优点:使用 CSS 语法,容易进行模块化,贴近 CSS 的未来标准

缺点:逻辑处理能力有限

实现原理:

①将 源代码 做为 CSS 解析,获得 分析树
②对 CSS 的 分析树 进行 后处理
③将 CSS 的 分析树 转换为 CSS 代码

10、CSS3的新特性

新增一:rgba(简单不做解释);

新增二:弹性布局flex(上面第二题);

新增三:媒体查询;

新增四:渐变色;

新增五:动画animation,使用@keyframes定义,使用的元素animation:名字 时间;

@keyframes changeWidth{
    0%{width:100px}
    100%{width:800px}
}
div{
    width:100px;
    height:100px;
    background:red;
    animation:changeWidth 10s forwards;
}复制代码

animation的6个值:


第三个值:


第五个值:

第六个值:

11、display有哪些值

display:none 此元素不被显示。
display:block 此元素显示为块级元素,支持宽高,独占一行。
display:inline 此元素为内联元素,不支持宽高,不独占一行。
display:table 此元素作为块级表格来显示。
display:flex 此元素为弹性盒模型

display:list-item此元素会作为列表显示

12、相邻的两个inline-block节点为什么会出现间隔,该如何解决?

元素被当成行内元素排版的时候,原来HTML代码中的回车换行被转成一个空白符,在字体不为0的情况下,空白符占据一定宽度,所以inline-block的元素之间就出现了空隙。这些元素之间的间距会随着字体的大小而变化,当行内元素font-size:16px时,间距为8px。(不懂没关系,看下面解决方法就明白了)。

方法一:父级font-size:0;子级设置字体大小;

方法二:改变书写方式

//原来
<span>1</span>
<span>2</span>
<span>3</span>

//改变
<span>1</span><span>2</span><span>3</span>复制代码

方法三:margin负值

方法四:设置父元素display:table;word-spacing:0(两个记得都要加上);

13、meta viewport移动端适配

<metaname="viewport" content="width=device-width,initial-scale=1.0">复制代码

14、CSS实现宽度自适应100%,宽高16:9的比例的矩形

*{    
   margin:0;    
   padding:0;
}
.wrap{    
    width:20%;
}
.box{    
    kground:pink;
}
.box p{    
    width:100%;    
    height:100%;    
    position: absolute;    
    color:#666;
}复制代码

<div class="wrap">    <div class="box">        <p>13</p>    </div></div>复制代码

16、画三角形

div{
    width:0;
    height:0;
    border-top:50px solid transparent;
    border-left:50px solid transparent;
    border-right:50px solid transparent;
    border-bottom:50px solid red;
}复制代码

注:上述三角形为正三角形,如果想要倒三角形,那么将border-top的值设为50px solid red,其余的属性值相同。

17、1像素边框问题

物理像素:移动设备出厂时,不同设备自带的不同像素,也称硬件像素。
逻辑像素:即css中记录的像素。

为什么会有1像素边框问题:在开发中,在移动端css里面写了1px,实际看起来比1px粗。这就关系到物理像素和逻辑像素的问题了,开发中UI设计师要求的1px是指设备的物理像素1px,而css里记录的像素是逻辑像素,它们之间存在一个比例关系,可以用window.devicePixelRadio来获取,也可以用媒体查询的-webkit-min-device-pixel-ratio来获取,比例的多少与设备相关。iphone的devicePixelRatio == 2,而我们设置的border:1px 描述的是设备的独立像素,所以被放大到物理像素2px显示,在iphone上就显的比较粗。

解决方案:

媒体查询利用设备像素比缩放,设置小数像素

优点:简单,好理解。
缺点:兼容性差目前IOS8+才支持,IOS7以下、安卓系统都显示0px。

.box{border:1px solid #333}
@media screen and (-webkit-min-device-pixel-ratio:2){
    .box{border:1px solid #333}
}
@media screen and (-webkit-min-device-pixel-radio:3){
    .border{border:0.333333px solid #333}
}复制代码

设置border-image方案

缺点:需要制作图片,圆角可能会出现模糊。

.border-image-1px{
    border-width:1px 0px;
    -webkit-border-image:url("border.png")2 0 strech;
    border-image:url("border.png")2 0 stretch;
}复制代码

border-width:指定边框的宽度,可以设定四个值,分别为上右下左top right bottom left。
border-image:距离图片上方2px裁剪图片作为上边框,下方2px裁剪作为下边框。距离左右0像素裁剪图片即没有边框,以拉伸方式展示。
总结:在边框图片中,裁剪图片上下方的2个像素宽度作为上下边框,并展示在宽度为1个像素的边框空间里。左右没有边框。

box-shadow方案

优点是没有圆角问题。缺点是颜色不好控制。

.box{
    -webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.5);
}复制代码

参数:水平阴影位置,垂直阴影位置,模糊距离,阴影尺寸,阴影颜色,将外部阴影改为内部阴影。

transform:scale(0.5)方案(推荐):

以上的方案,思想其实都是将1px缩小为0.5px来展示,然而0.5px并不是所有的设备或浏览器都支持。其实1像素问题的产生基本发生在设置边框或分割线的时候,场景并不覆盖全局样式,因此,直接缩放需要设置的元素,才是我们真正需求的。transform就可以实现。

①设置height:1px,根据媒体查询结合transform缩放为相应的尺寸

.box{
    height:1px;
    background:#333;
    -webkit-transform:scaleY(0.5);
    -webkit-transform-origin:0 0;
    overflow:hidden;
}复制代码

②用: :after和: :before,设置border-bottom:1px solid #000;,然后缩放-webkit-transform:scaleY(0.5);可以实现两根边线的需求;

.box::after{
    content:"";
    width:100%;
    border-bottom:1px solid #000;
    transform:scaleY(0.5);
}复制代码

③用: :after设置border:1px solid #000;width:200%;height:200%;然后缩放scaleY(0.5);优点可以实现圆角京东就是这么实现的,缺点是按钮添加active比较麻烦。

.div::after {
    content: '';
    width: 200%;
    height: 200%;
    position: absolute;
    top: 0;
    left: 0;
    border: 1px solid #bfbfbf;
    border-radius: 4px;
    -webkit-transform: scale(0.5,0.5);
    transform: scale(0.5,0.5);
    -webkit-transform-origin: top left;
}复制代码


18,H5性特性

H5 新特性 旁边
  1. 语义化标签:header、footer、section、nav、aside、article ---
  2. 增强型表单:input 的多个 type ---
  3. 新增表单元素:datalist、keygen、output
  4. 新增表单属性:placehoder、required、min 和 max
  5. 音频视频:audio、video  ---
  6. canvas : 绘图   ---
  7. 地理定位  ---
  8. 拖拽  ---
  9. 本地存储:localStorage - 没有时间限制的数据存储;sessionStorage - 针对一个 session 的数据存储,当用户关闭浏览器窗口后,数据会被删除
  10. 新事件:onresize、ondrag、onscroll、onmousewheel、onerror、onplay、onpause
  11. WebSocket:单个 TCP 连接上进行全双工通讯的协议
语义化标签
标签
描述
header
定义了文档的头部区域
footer
定义了文档的尾部区域
nav
定义文档的导航
section
定义文档中的节(section、区段)
article
定义页面独立的内容区域
aside
定义页面的侧边栏内容
detailes
用于描述文档或文档某个部分的细节
summary
标签包含 details 元素的标题
dialog
定义对话框,比如提示框
增强型表单
HTML5 拥有多个新的表单 Input 输入类型。这些新特性提供了更好的输入控制和验证
input 的 type
描述
color
主要用于选取颜色
date
从一个日期选择器选择一个日期
datetime
选择一个日期(UTC 时间)
email
包含 e-mail 地址的输入域
month
选择一个月份
number
数值的输入域
range
一定范围内数字值的输入域
search
用于搜索域
tel
定义输入电话号码字段
time
选择一个时间
url
URL 地址的输入域
week
选择周和年
html5 也新增以下表单元素
表单元素
描述
datalist
元素规定输入域的选项列表,使用 input 元素的 list 属性与 datalist 元素的 id 绑定
keygen
提供一种验证用户的可靠方法,标签规定用于表单的密钥对生成器字段
output
用于不同类型的输出,比如计算或脚本输出
html5 新增的表单属性
表单属性
描述
placehoder
简短的提示在用户输入值前会显示在输入域上。即我们常见的输入框默认提示,在用户输入后消失
required
是一个 boolean 属性。要求填写的输入域不能为空
pattern
描述了一个正则表达式用于验证 input 元素的值
min 和 max
设置元素最小值与最大值
step
为输入域规定合法的数字间隔
height 和 width
用于 image 类型的 input 标签的图像高度和宽度
autofocus
是一个 boolean 属性。规定在页面加载时,域自动地获得焦点
multiple
是一个 boolean 属性。规定 input 元素中可选择多个值
html5 新事件
事件
描述
onresize
当调整窗口大小时运行脚本
ondrag
当拖动元素时运行脚本
onscroll
当滚动元素滚动元素的滚动条时运行脚本
onmousewheel
当转动鼠标滚轮时运行脚本
onerror
当错误发生时运行脚本
onplay
当媒介数据将要开始播放时运行脚本
onpause
当媒介数据暂停时运行脚本
  • 块级元素
div、p、h1~h6、ul、ol、dl、li、dd、table、hr、blockquote、address、table、menu、pre,HTML5 新增的 header、section、aside、footer 等
  • 行内元素
pan、img、a、lable、input、abbr(缩写)、em(强调)、big、cite(引用)、i(斜体)、q(短引用)、textarea、select、small、sub、sup,strong、u(下划线)、button


CSS3 新特性

CSS层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML等文件样式的计算机语言。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
CSS3是CSS(层叠样式表)技术的升级版本,于1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案,主要包括:
①边框特性(border-radius);
②多背景图(background复合属性);
③颜色度和透明度(rgba);
④盒子模型(flex);
⑤盒子的变形(transform);
⑥过渡和动画(transition);
⑦Web字体(@font-face);
⑧媒体查询(radio、video);
⑨阴影(文本阴影(text-shadow)和盒子阴影(box-shadow))
  1. 选择器
  2. 背景和边框
边框特性(border-radius);
多背景图(background复合属性)
  1. 文本效果

  2. 2D/3D 转换
2D 转换(transform)

  1. 动画、过渡
transition
animation

  1. 多列布局
通过CSS3,能够创建多个列来对文本进行布局
  1. column-count: 规定元素应该被分隔的列数
  2. column-gap: 规定列之间的间隔
  3. column-rule: 设置列之间的宽度、样式和颜色规则
  1. 用户界面
选择器

:last-child /* 选择元素最后一个孩子 */
:first-child /* 选择元素第一个孩子 */
:nth-child(1) /* 按照第几个孩子给它设置样式 */
:nth-child(even) /* 按照偶数 */
:nth-child(odd)  /* 按照奇数 */
:disabled /* 选择每个禁用的E元素 */
:checked /* 选择每个被选中的E元素 */
:not(selector) /* 选择非 selector 元素的每个元素 */
::selection /* 选择被用户选取的元素部分 */

伪类和伪元素:
根本区别在于它们是否创造了新的元素(抽象)
  • 伪类:用于向某些选择器添加特殊的效果(没有创建新元素)
:last-child /* 选择元素最后一个孩子 */ :first-child /* 选择元素第一个孩子 */ :nth-child(1) /* 按照第几个孩子给它设置样式 */ a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ a:hover {color: #FF00FF} /* 鼠标移动到链接上 */ a:active {color: #0000FF} /* 选定的链接 */

  • 伪元素:创建了 html 中不存在的元素,用于将特殊的效果添加到某些选择器
::before {} /* 选择器在被选元素的前面插入内容和定义css,使用 content 属性来指定要插入的内容。 */ ::after {} /* 选择器在被选元素的后面插入内容和定义css,使用 content 属性来指定要插入的内容。 */ :first-letter /* 选择该元素内容的首字母 */ :first-line /* 选择该元素内容的首行 */ ::selection /* 选择被用户选取的元素部分 */

背景和边框
  • 背景:
background-size:规定背景图片的尺寸(cover:填充;100% 100%:拉伸)
background-origin:规定背景图片的定位区域
对于 background-origin 属性,有如下属性
背景图片可以放置于 content-box、padding-box 或 border-box 区域
  • 边框:
border-radius:圆角
box-shadow / text-shadow:阴影
border-image:边框图片
文本效果
属性
描述
text-shadow
向文本添加阴影
text-justify
规定当 text-align 设置为 “justify” 时所使用的对齐方法
text-emphasis
向元素的文本应用重点标记以及重点标记的前景色
text-outline
规定文本的轮廓
text-overflow
规定当文本溢出包含元素时发生的事情
text-wrap
规定文本的换行规则
word-break
规定非中日韩文本的换行规则
word-wrap
允许对长的不可分割的单词进行分割并换行到下一行
text-decoration
文本修饰符:overline、line-through、underline 分别是上划线、中划线、下划线
  • @font-face 自定义字体
  • 渐变,CSS3新增了渐变效果,包括 linear-gradient(线性渐变)和 radial-gradient(径向渐变)
2D/3D 转换
  • 2D 转换(transform)
  1. translate():元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数。 transform: translate(50px, 100px);
  2. rotate():元素顺时针旋转给定的角度。若为负值,元素将逆时针旋转。transform: rotate(30deg);
  3. scale():元素的尺寸会增加或减少,根据给定的宽度(X 轴)和高度(Y 轴)参数,也可以一个值(宽高)。transform: scale(2,4);
  4. skew():元素翻转给定的角度,根据给定的水平线(X 轴)和垂直线(Y 轴)参数。transform: skew(30deg, 20deg);
  5. matrix(): 把所有 2D 转换方法组合在一起,需要六个参数,包含数学函数,允许您:旋转、缩放、移动以及倾斜元素。transform:matrix(0.866,0.5,-0.5,0.866,0,0);
  • 3D 转换
  1. rotateX():元素围绕其 X 轴以给定的度数进行旋转。transform: rotateX(120deg);
  2. rotateY():元素围绕其 Y 轴以给定的度数进行旋转。transform: rotateY(130deg);
  3. perspective:规定 3D 元素的透视效果
动画、过渡
  • 过渡效果(transition),使页面变化更平滑,以下参数可直接写在 transition 后面
  1. transition-property :执行动画对应的属性,例如 color,background 等,可以使用 all 来指定所有的属性。
  2. transition-duration:过渡动画的一个持续时间。
  3. transition-timing-function:在延续时间段,动画变化的速率,常见的有:ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier
  4. transition-delay:延迟多久后开始动画

@keyframes move{
0%{
transform: translate(0,0);
}
100%{
transform:translate(200px,0)
}
}
  • 动画(animation)
先定义 @keyframes 规则(0%,100% | from,to)
然后定义 animation,以下参数可直接写在 animation 后面
  1. animation-name: 定义动画名称
  2. animation-duration: 指定元素播放动画所持续的时间长
  3. animation-timing-function: ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(, , , ): 指元素根据时间的推进来改变属性值的变换速率,即动画的播放方式
  4. animation-delay: 指定元素动画开始时间
  5. animation-iteration-count: infinite | number:指定元素播放动画的循环次数
  6. animation-direction: normal | alternate: 指定元素动画播放的方向,其只有两个值,默认值为normal,如果设置为 normal 时,动画的每次循环都是向前播放;另一个值是 alternate,规定动画在下一周期逆向地播放(来去播放)
  7. animation-play-state: running | paused :控制元素动画的播放状态
多列布局
通过CSS3,能够创建多个列来对文本进行布局
  1. column-count: 规定元素应该被分隔的列数
  2. column-gap: 规定列之间的间隔
  3. column-rule: 设置列之间的宽度、样式和颜色规则
用户界面
CSS3中,新的用户界面特性包括重设元素尺寸、盒尺寸以及轮廓等
  1. resize
  2. box-sizing
  3. outline-offset
resize 属性规定是否可由用户调整元素尺寸。如果希望此属性生效,需要设置元素的 overflow 属性,值可以是 auto、hidden 或 scroll
div { resize: both; /* none|both|horizontal|vertical; */ overflow: auto; }

box-sizing 属性可设置的值有 content-box、border-box 和 inherit
content-box 是W3C的标准盒模型,元素宽度 = 内容宽度 + padding + border:意思是 padding 和 border 会增加元素的宽度,以至于实际上的 width 大于原始设定的 width
border-box 是ie的怪异盒模型,元素宽度 = 设定的宽度,已经将 padding 和 border 包括进去了,比如有时候在元素基础上添加内距 padding 或 border 会将布局撑破,但是使用 border-box 就可以轻松完成
inherit:规定应从父元素继承 box-sizing 属性的值
outline-offset 属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓
CSS 兼容内核
-moz-:代表FireFox浏览器私有属性
-ms-:代表IE浏览器私有属性
-webkit-:代表safari、chrome浏览器私有属性
-o-:代表opera浏览器私有属性


Ⅰ.多余隐藏加省略号

overflow: hidden;
text-overflow:ellipsis;