目录
1. 盒子模型
2. flex布局
3. 实现水平居中
4. inline和block
5. 垂直居中
6. 水平垂直居中
7. CSS3新增
8. CSS3伪类
9. JS动画和CSS动画
10. 清除浮动
11. 让元素消失
12. position和display
13. 相对定位与绝对定位
14. css引入方式 link import
15. css选择器及优先级
16. 行内元素有哪些?块级元素有哪些?
17. BFC
18. 伪类和伪元素
19. 重绘和重排
20. H5新特性
21. HTML、XML、XHTML 的区别
22. 标签上title属性与alt属性的区别是什么
23. 实现三角形
24. CSS单位有哪些?
25. HTML5的应用缓存是什么?
页面上所有的元素对象,其实际的呈现形式都是一个盒子形状的抽象
盒模型有两种, IE怪异盒子模型、W3C标准盒子模型;
盒模型是由: 内容(content)、内边距(padding)、边框(border)、外边距(margin) 组成的。
标准盒子模型的宽高是指的content
的宽高;
怪异盒子模型的宽高是指的content+padding+border
的宽高。
(1) 内联元素水平居中
利用 text-align: center 可以实现在块级元素内部的内联元素水平居中。此方法对内联元素(inline), 内联块(inline-block), 内联表(inline-table), inline-flex元素水平居中都有效
(2) 内联块级元素水平居中
通过把固定宽度块级元素的margin-left和margin-right设成auto,就可以使块级元素水平居中。
(3) 多级块状元素水平居中
使用inline-block: 如果一行中有两个或两个以上的块级元素,通过设置块级元素的显示类型(display)为inline-block和父容器的text-align属性为center.从而使多块级元素水平居中。
利用display:flex: 利用弹性布局(flex),实现水平居中,其中justify-content 用于设置弹性盒子元素在主轴(横轴)方向上的对齐方式,本例中设置子元素水平居中显示。
block: 块级元素
inline: 内联元素(text-align属性有效)
问题:当设置成inline后,width和height属性是无效的(只会为文字添加背景)
inline-block: 行内块级元素(块级+内联)
(1) 单行内联元素垂直居中
通过设置内联元素的高度(height)和行高(line-height)相等,从而使元素垂直居中。
(2) 多行元素垂直居中
利用表(table)布局: 设置父元素显示类型(display)为table。子元素显示类型(display)为table-sell。利用表布局的vertical-align: middle可以实现子元素的垂直居中
利用flex布局: 利用flex布局实现垂直居中,设置显示类型(display)为flex.其中flex-direction: column定义主轴方向为纵向。因为flex布局是CSS3中定义,在较老的浏览器存在兼容性问题。
利用‘精灵元素ghost element’:即在父容器内放一个100%高度的伪元素,让文本和伪元素垂直对齐,从而达到垂直居中的目的。
(3) 块级元素垂直居中
固定高度的块级元素:父元素position设置为relative,子元素position设置为absolute。通过绝对定位元素距离顶部(top)50%,并设置margin-top向上偏移元素高度的一半,就可以实现垂直居中了。
未知高度的块级元素:当垂直居中的元素的高度和宽度未知时,我们可以借助CSS3中的transform属性向Y轴反向偏移50%的方法实现垂直居中。但是部分浏览器存在兼容性的问题。
固定宽高元素水平垂直居中: 通过margin平移元素整体宽度(包括padding等)的一半,使元素水平垂直居中。
未知宽高元素水平垂直居中:利用2D变换,在水平和垂直两个方向都向反向平移宽高的一半,从而使元素水平垂直居中。transform: translate(-50%, -50%);
利用flex布局(display:flex):其中justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式(center);而align-items属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式(center)。
利用grid布局(display:grid):兼容性较差,不推荐
在屏幕上水平垂直居中:常规的登录及注册页面都需要用到。要保证较好的兼容性,还需要用到表布局。
Transition过渡 指定从一个状态到另一个状态时如何过渡; Transform: 过渡属性只有当鼠标经过时候才会作用, 过渡属性没有中间的过程,动画是一步到位,过渡属性一次鼠标经过只可以发生一次,不能重复发生动画
Animation复杂动画 可以实现更复杂的样式变化效果;使用方法:定义关键帧样式;应用动画到元素上; Animation:作用于元素本身而不是样式属性,属于关键帧动画的范畴,动画是一帧一帧的绘制,可绘制复杂动画,需要配合@keyframes来使用,通过keyframe显式控制当前帧的属性值
p:first-of-type 选择属于其父元素的首个元素
p:last-of-type 选择属于其父元素的最后元素
p:only-of-type 选择属于其父元素唯一的元素
p:only-child 选择属于其父元素的唯一子元素
p:nth-child(2) 选择属于其父元素的第二个子元素
:enabled :disabled 表单控件的禁用状态。
:checked 单选框或复选框被选中。
渲染线程分为main thread和compositor thread,如果css动画只改变transform和opacity,这时整个CSS动画得以在compositor trhead完成(而js动画则会在main thread执行,然后出发compositor thread进行下一步操作),特别注意的是如果改变transform和opacity是不会layout或者paint的。
区别:
.clear{zoom:1;}
.clear:after{content:””;clear:both;display:block;height:0;overflow:hidden;visibility:hidden;}
position
display
absolute
绝对定位 相对于最近的已定位的祖先元素, 有已定位(指position不是static的元素)祖先元素, 以最近的祖先元素为参考标准。如果无已定位祖先元素, 以body元素为偏移参照基准, 完全脱离了标准文档流。fixed
固定定位的元素会相对于视窗来定位,这意味着即便页面滚动,它还是会停留在相同的位置。一个固定定位元素不会保留它原本在页面应有的空隙。共同点:改变行内元素的呈现方式,都脱离了文档流;不同点:absolute的”根元素“是可以设置的,fixed的“根元素”固定为浏览器窗口
3种引入方式
link和@import的区别
link
属于HTML
标签,而@import
是css
提供的;link
方式的样式的权重高于@import
的权重。a
, b
, span
, img
, input
, select
, strong
;div
, ul
, li
, dl
, dt
, dd
, h1-5
, p
等;
,
,
,
,
;BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。
(1)BFC的特性
(2)BFC应用
(3)触发BFC条件
css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素都是用来修饰不在文档树中的部分。
伪类存在的意义是为了通过选择器找到那些不存在DOM树中的信息以及不能被常规CSS选择器获取到的信息。
伪元素用于创建一些不在文档树中的元素,并为其添加样式。比如说,我们可以通过:before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。常见的伪元素有:::before
,::after
,::first-line
,::first-letter
,::selection
、::placeholder
等
因此,伪类与伪元素的区别在于:有没有创建一个文档树之外的元素。
减少重绘重排的方法有:
· 不在布局信息改变时做DOM查询,
· 使用csstext,className一次性改变属性
· 使用fragment
· 对于多次重排的元素,比如说动画。使用绝对定位脱离文档流,使其不影响其他元素
(1)语义化标签:header、footer、section、nav、aside、article
(2)增强型表单:input 的多个 type
新增表单元素:datalist数据列表、output输出内容、progress进度条
新增表单属性:placehoder占位提示、required不为空、min 和 max
(3)音频视频:audio、video
(4)Canvas 基于网页画布2D位图绘图技术,善于表现细腻颜色,可用于统计图表、页面游戏、地图应用、网页特效等。绘制 矩形 文本 路径 / SVG绘图
Canvas与SVG的不同:
Canvas是位图;SVG是矢量图
Canvas是JS绘图技术(不是DOM元素);SVG是标签绘图技术(是DOM元素)
Canvas内容不能使用CSS;SVG内容可以使用CSS;
Canvas内容不方便绑定事件处理;SVG内容方便进行事件绑定
(5)地理定位
(6)拖拽 H5之前没有拖放API,可以使用“鼠标按下 + 鼠标移动”两个事件来模拟用户拖动事件。H5之后专门提供了七个鼠标拖动相关事件句柄:
(7)本地存储:localStorage - 没有时间限制的数据存储;sessionStorage - 针对一个 session 的数据存储,当用户关闭浏览器窗口后,数据会被删除
(8)新事件:onresize、ondrag、onscroll、onmousewheel、onerror、onplay、onpause
(9)WebSocket:单个 TCP 连接上进行全双工通讯的协议
HTML
:超文本标记语言,是语法较为松散的、不严格的Web
语言;XML
:可扩展的标记语言,主要用于存储数据和结构,可扩展;XHTML
:可扩展的超文本标记语言,基于XML
,作用与HTML
类似,但语法更严格。XHTML
是HTML
规范版本;HTML5
是HTML
、XHTML
以及HTML DOM
的新标准。
alt
是为了在图片未能正常显示时(屏幕阅读器)给予文字说明。且长度必须少于100个英文字符或者用户必须保证替换文字尽可能的短。title
属性为设置该属性的元素提供建议性的信息。使用title
属性提供非本质的额外信息。三角形实现原理:宽度width为0;height为0;(1)有一条横竖边(上下左右)的设置为border-方向:长度 solid red,这个画的就是底部的直线。其他边使用border-方向:长度 solid transparent。(2)有两个横竖边(上下左右)的设置,若斜边是在三角形的右边,这时候设置top或bottom的直线,和右边的斜线。若斜边是在三角形的左边,这时候设置top或bottom的直线,和左边的斜线。实现圆圈梯形半圆 参考https://juejin.im/post/5df1e312f265da33d039d06d
参考链接:https://juejin.im/post/5ed1c2cae51d45784635a50d
https://juejin.im/post/5df1e312f265da33d039d06d
https://gitee.com/wyz-1997/WebKnowledge/blob/master/CSS/CSS%E5%9F%BA%E7%A1%80.md