html常见元素分类css
head区元素:(不会在页面上留下直接内容)html
body区:前端
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<base href="/">
// 指定一个基础路径,全部的路径都是以这个为基准
//viewport表示视图的大小
//适配移动端第一步,viewport
复制代码
HTML重要属性vue
a[href,target]
img[src,alt]
table td[colspan,rowspan]
form[target,method,enctype]
(有表单的地方都建议放上form)
input[type,value]
button[type]
select>option[value]
label[for]
如何理解htmlhtml5
HTML
“文档”"大纲"做用node
html
的语义化
html
版本react
HTML4/4.01(SGML)
浏览器作不少的容错和修正工做XHTML(XML)
要求很是严格,严格要求编码习惯HTML5
(基于HTML4
)
html5
新增内容webpack
section
article
nav
aside
//通常不出如今大纲中,表示不重要的广告类placehold
自动聚焦
html5
新增语意css3
header
/footer
头尾section
/article
区域nav
导航aside
不重要内容em
/strong
强调i
//icon
按默认样式分web
block
inline
inline-block
HTML分类法
嵌套关系
默认样式和reset
HTML标签在浏览器中都有默认的样式,不一样的浏览器的默认样式之间存在差异。例如ul默认带有缩进样式,在IE下,它的缩进是由margin实现的,而在Firefox下倒是由padding实现的。开发时浏览器的默认样式可能会给咱们带来多浏览器兼容性问题,影响开发效率。如今很流行的解决方式是一开始就将浏览器的默认样式所有覆盖掉,这就是css reset。
Normalize.css
doctype
的意义是什么?HTML
、XHTML
、HTML5
的关系HTML
属于SGML
XHTML
属于XML
,是HTML
进行XML
严格化的结果HTML5
不属于SGML
或者XML
,比XHTML
宽松API
(离线、音视频、图形、实时通讯、本地存储、设备能力)
Canvas
+WEBGL
等技术,实现无插件的动画以及图像、图形处理能力;offline
应用;websocket
,一改http
的纯pull
模型,实现数据推送的梦想;MathML
,SVG
等,支持更加丰富的render
;em
是语义化的标签,表强调i
是纯样式的标签,表斜体HTML5
中i
不推荐使用,通常用做图标SEO
semantic
microdata
input
img
br
hr
meta
link
HTML
是‘死’的(字符串,没有结构)DOM
由HTML
解析而来,是活的(是树,有结构)JS
能够维护DOM
property
和attribute
的区别attribute
是‘死’的(属性,写在HTML中)property
是‘活’的(特性,DOM对象中)attribute
不会影响property
,property
也不会影响attribute
form
做用
cascading style sheet
层叠样式表
选择器简介
HTML
元素<div>
可能能找到几百个)选择器分类
a{}
::before{}
//真实存在的容器.link{}
[type=radio]{}
:hover{}
//元素的状态ID
选择器 #id{}
[type=checkbox]
+ label{}
:not(.link){}
*{}
选择器权重
计算一个不进位的数字
#id
.link
a[href]
计算:
#id
+100.link
+10a
+1[href]
+0结果:111
#id .link.active
#id +100
.link +10
.active +10
结果:120
复制代码
不进位
只要有id选择器,就是最大,类选择器再多也不会进位,只能在本身位上
百位 十位 个位
其余选择器权重
!important
优先级最高元素的属性
> 外部样式表 (style标签,外部样式表)
非布局样式
字体
、字重
、颜色
、大小
、行高
背景
、边框
滚动
、换行
粗体
、斜体
、下划线
字体族
serif
(衬线字体)sans-serif
(非衬线字体)monospace
(等宽字体,例如代码)cursive
(方正静蕾体)fantasy
多字体
fallback
机制
font-family:Monaco PingFangSC
复制代码
英文字体用Monaco
,可是Monaco
没有中文字体,因此若是碰到中文会使用PingFangSC
,一个字体一个字体的找
font-family:"Microsoft Yahei",serif
复制代码
字体族不须要引号,由于不是具体的字体
.chinese{
font-family:"PingFang SC","Microsoft Yahei",monospace
}
复制代码
指定在mac
系统上用PingFang SC
,windows
上用Microsoft Yahei
,把单个平台独有的字体写到前面
网络字体、自定义字体
@font-face{
font-family:"IF";
src:url("./IndieFlower.ttf");
}
.custom-font{
font-family:IF;
}
复制代码
注意跨域
iconfont
字体机制
iconfont.cn
行高的构成
line-box
决定line-hight
会撑起inline-box
的高度,并不会影响自己布局的高度,可是会影响外部元素(line-box)inline-box
组成line-box
,line-box
高度是由inline-box
决定行高的相关现象
line-height
作就好了base-line
对齐,若是要居中对齐就用vertical-align:middle
经典图片空隙问题
inline
排版,若是按照inline
排版的话,默认按照基线排版(base-line
)12px
字体那么缝隙可能就是3px
vertical-align:bottom
或者display:block
背景颜色
HSL
Hue
(色调)。0(或360)表示红色,120表示绿色,240表示蓝色,也可取其余数值来指定颜色。取值为:0 - 360Saturation
(饱和度)。取值为:0.0% - 100.0%Lightness
(亮度)。取值为:0.0% - 100.0% background:hsl(0,100%,50%)
RGB(A)
背景图
渐变色背景
background: webkit-linear-gradient( left, red, green); //老式写法
background: linear-gradient(to right,red, green) ;
background: linear-gradient (45deg, red, green);
background: linear-gradient( 135deg, red 0, green 50%, blue 100%)
background: linear-gradient ( 135deg, transparent 0, transparent 49.5%,green 50%)
多背景叠加
background: linear-gradient( 135deg, transparent 0, transparent 49.5%,green 49.5%,green 50.5%,transparent 50.5%,transparent 100%),linear-gradient( 45deg, transparent 0, transparent 49.5%,green 49.5%,green 50.5%,transparent 50.5%,transparent 100%)
background-size:30px 30px
复制代码
background实现各类渐变背景,能够经过叠加实现,放射渐变
背景图片和属性(雪碧图)
优势:
减小加载网页图片时对服务器的请求次数
提升页面的加载速度
由所需图片拼成的一张 GIF 图片的尺寸会明显小于全部图片拼合前的大小。
单张的 GIF 只有相关的一个色表,而单独分割的每一张 GIF
都有本身的一个色表,这就增长了整体的大小。
所以,单独的一张 JPEG 或者 PNG sprite 在大小上很是可能比把一张图分红多张得来的图片总尺寸小
复制代码
缺点:
一个例子是来自于WHIT TV的网站。
注意这是一个1299×15,000像素的PNG图片。
它也被压缩的很好——实际下载大小只有大概26K —
可是浏览器并不会渲染压缩后的图片数据。当这个图片被下载并被解压缩以后
复制代码
base64
和性能优化
多分辨率适配
边框的属性
线型
大小
颜色
边框背景图
border-img('./border.img') 30 round;
//repeat:可能会致使不完整
//round:整数个拼,可能会有一些空间上的压缩
复制代码
边框衔接(三角形)
原理:利用边框衔接过程是斜切
width:0px;
border-bottom:30px solid red;
border-left:20px solid transparent;
border-right:20px solid transparent;
复制代码
滚动行为和滚动条
visible
:内容直接显示,撑出容器hidden
:超出容器部分隐藏scroll
:超出容器滚动,始终显示滚动条auto
:超出容器滚动,当内容比较短不须要滚动条的时候不显示滚动条在mac系统上收系统设置影响
overflow-wrap(word-wrap)
通用换行控制 - 兼容性不太好,常常还用word-wrap - 是否保留单词 -normal
只在容许的断字点换行(浏览器保持默认处理)。 -break-word
在长单词或 URL 地址内部进行换行。
word-break
- 针对多字节文字,中文句子也是单词 -break-all
容许在单词内换行。 -keep-all
只能在半角空格或连字符处换行,中文句子也不换行,兼容性还有点问题
white-space
- 空白处是否断行 - 不换行的话white-space: nowrap
overflow-wrap: break-word ;
word-break: keep-all;
white-space: normal ;
复制代码
font-weight
font-style:itatic
text-decoration
cursor
hack
Hack
看起来不合法但生效的写法class
hack
写到后面checkbox
tabs
CSS布局
flexbox
/grid
(偏简单)经常使用布局方式
布局方式(表格)
display:table
display:table-row
盒模型
宽度和高度是只对内容区生效
占据的空间是content + padding + border
display/position
display
肯定元素的显示类型:
position
肯定元素的位置:
static
:静态布局,按照文档流布局relative
:相对于元素自己的偏移,relative偏移时,元素所占据的文档空间不会产生偏移absolute
:从文档流脱离,相对于最近的父级absolute或者relative,若是父级不是的话,会一直网上到bodyfixed
:相对于屏幕/可视区域定位于relatvie、absolute、fixed均可以设置z-index,数值越大附带
低版本IE不支持
出过三个版本,市面上各个浏览器都有对应的解析,会致使一些兼容性问题
react Native
和微信小程序能够直接用来布局
float
float对自身的影响:
BFC
),inline
元素也能够设置宽高(BFC背后的神奇原理)float
本意就是要作文字环绕、图文混排等内容的
对兄弟的影响
float
元素float
元素对父级元素的影响
解决“高度塌陷”的方案
让父元素造成BFC
来接管本身的高度
overflow:auto/hidden
用其余元素撑起来
container2::after{
content:'';
clear:'both'; //保证这个元素左右都是"干净"的,没有浮动元素
display:block;
height:0; //不占高度
visibility:hidden //不用显示
}
//比较经典的清除浮动布局的方式
复制代码
float布局
float和margin实现两栏布局和三栏布局
float:left
(左)margin-left:左元素的宽度
(右)float:left
(左)float:right
(右)float
元素不会对其
margin-left:左元素的宽度
margin-right:右元素的宽度
inline-block
布局block
元素处理间隙
html
中的空白html
写在一块儿;<!-- -->
font-size:0
;子块从新加上字体font-sizi:14px;
响应式设计和布局
rem/viewport/media query
viewport:
viewport
viewport``可视区大小=屏幕大小
,有些设备默认屏幕宽度980px<meta name='viewport' content="width=device-width,initial-scale=1.0">
window.innerWidth
动态计算页面的宽度
media query:
@media(max-width:640px){
.left{
display:none;
}
}
复制代码
rem:
html{
font-size:16px; // 默认16个像素,为了好记通常设置10px,20px
}
复制代码
@media (maxwidth: 375px){
html{
font-size :24px ;
}
}
@media (max-width: 320px){
html{
fonts ize: 20px;
}
}
@media (max-width: 640px){
intro{
margin: .3rem auto ;
display: block;
}
}
//精确性要求高的地方不要使用`rem`布局
复制代码
float
布局:兼容性好
display:table
float
+margin
布局(清理浮动)inline-block
布局(处理间隙)flexbox
布局(兼容性不是特别好)position:absolute/fixed
有什么区别?absolute/relative
viewport
)fixed
兼容性不是很好display:inline-block
的间隙浮动元素不会占据父元素空间,所以父元素不会管浮动元素,极可能超出父元素,对其余元素产生影响。做为父元素必定要清除浮动,保证对外没有影响
overflow:hidden(auto)
::after{clear:both}
(也能够用单独的元素)viewport
(页面宽度和移动端适配)rem
/viewport
/media query
(大小方面的适配)css
效果效果属性
box-shadow
text-shadow
border-radius
background
clip-path
一个div
画xx
系列,能够用box-shadow
,其余图形能够经过点,肯定是可能有性能问题
border-radius:50%
) 百分比是宽高的百分比
多背景叠加(颜色、图片、渐变)
效果
.i{
width: 20px ;
height :20px ;
background: url(./background.png) no repeat;
background-size: 20px 40px;
transition: background-position .4s ;
}
.i:hover{
background-position: 0 20px;
}
复制代码
clip-path支持动画且不改变容器大小
clip-path: inset(100px 50px);
clip-path: circle(50px at 100px 100px);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%, 10% 10%, 40px 10px);
clip-path: url(#clipPath);
background-size: cover;
transition:clip-path .4s;
复制代码
支持svg
3D-transform
变换
transform(2D)
translateZ
3D
立体)transform:translateX(100px) translateY(100px) rotate(25deg)
transform:rotate(25deg) translateX(100px) translateY(100px)
//有顺序
复制代码
box-shadow无限投影
::before
::after
复制代码
box-shadow
outline
border-radius:50%
clip-path:(svg)
background-position
background-repeat
background-size(cover/contain)
复制代码
transform:translateX(100px)
transform:scale(2)
复制代码
perspective:500px; //指定透视的角度
transform-style:preserve-3d; //保留3D效果
transform:translate rotate;
复制代码
动画的原理:
动画的做用
动画类型
transition
补间动画(中间的过程浏览器脑补起来)keyframe
关键帧动画(也是补间动画,可是有不少关键帧)transition
left/right/margin/transform
)transform
)transform
)opacity
)transform
)transition: [动画类型] [动画时间]
transition-delay
//延迟多长时间执行
transition-delay:width 1s,background 3s;
//多个效果叠加
transition-timing-function
timing(easing)
:定义动画进度和时间的关系
linear
ease-in-out
keyframes
动画animation:run 1s linear;
animation-direction
//reverse
:反向animation-fill-mode:forword
//forwards
,backwards
决定动画最终停留在哪里animation-iteration-count
//infinite
:循环次数animation-play-state:pause
//js
控制它的停和动steps()
例如:图片合成的动画
animation-timing-function:steps(1)
step
是指定每一个区间帧数CSS
中动画怎么写,transation
和animation
和keyframs
怎么写CSS
中动画实现的方式有几种box-shadow
等介绍
less
和sass
的区别
less
node
JS
写的,编译速度比较快,有个浏览器中能够直接使用的版本,不须要预先编译,入门简单sass(scss)
ruby
写的比较慢,可是有解决方案,可使用它的移植版本node-sass
CSS预处理器
Extend
和Mixin
代码片断import CSS
文件模块化
less
加上&
:并非父子关系而是同级CSS
中并不容许这么嵌套写,les
s和sass
容许,结构关系清晰
body{
padding:0px;
margin: 0px;
}
.wrapper{
background: white;
.nav{
font-size: 12px;
}
&:hover{ //伪类
background: red
}
}
复制代码
打包指令
lessc a.less > a.css
复制代码
sass
npm install node-sass
复制代码
sass的输出有多重格式
node-sass a.scss>a.css --output-style expanded
复制代码
使用这条命令时候,咱们编译的路径,不能有中文名,不然会报错,以后只要咱们更改scss文件,保存后,就会自动修改编译后的css文件
变量为了能够参与运算,提供了各类运算的函数,包括颜色
less
:@fontSize
sass
:$fontSize
less
的理念:尽可能的接近css的语法
sass
的理念:尽可能避免产生混淆
CSS
中并无提供复用CSS
的方法,而是经过HTML
复用
less
.block(@fontSize){
font-size: @fontSize;
border: 1px solid #ccc;
border-radius: 4px;
}
复制代码
.block(@fontsize+2px);
复制代码
不加括号也能够,不加括号.block{}不会被编译出来,加了会被编译出来
sass
@mixin block($fontSize) {
font-size: $fontSize;
border: 1px solid #ccc;
border-radius: 4px;
}
复制代码
@include block(font-size+2px);
复制代码
区别在于须要显示的声明和调用,并且不能既作class又作mixin
场景:mixin清除浮动
extend
做用
less
写法:
.block{
font-size: @fontSize;
border: 1px solid #ccc;
border-radius: 4px;
}
复制代码
引用:
.nav:extend(.block){
font-size: @fontSize;
}
复制代码
.content{
font-size: @fontSize + 2px;
&:extend(.block);
}
复制代码
生成效果:
.block,
.wrapper .nav,
.wrapper .content {
font-size: 12px;
border: 1px solid #ccc;
border-radius: 4px;
}
复制代码
sass
写法:
.block {
font-size: $fontSize;
border: 1px solid #ccc;
border-radius: 4px;
}
复制代码
引用:
@extend .block;
复制代码
生成效果:
.block, .wrapper {
font-size: 12px;
border: 1px solid #ccc;
border-radius: 4px;
}
复制代码
loop
less
less中实际上没有循环的语法,经过递归来实现相应的效果
引用方法:
.gen-col(@n) when (@n > 0 ){
.gen-col(@n - 1);
.col-@{n}{
width: 1000px/12*@n;
}
}
.gen-col(12);
复制代码
生成效果:
.col-1 {
width: 83.33333333px;
}
.col-2 {
width: 166.66666667px;
}
.col-3 {
width: 250px;
}
.col-4 {
width: 333.33333333px;
}
.col-5 {
width: 416.66666667px;
}
.col-6 {
width: 500px;
}
.col-7 {
width: 583.33333333px;
}
.col-8 {
width: 666.66666667px;
}
.col-9 {
width: 750px;
}
.col-10 {
width: 833.33333333px;
}
.col-11 {
width: 916.66666667px;
}
.col-12 {
width: 1000px;
}
复制代码
应用场景:表格、特效等
复制代码
sass
mixin方式:
@mixin gen-col($n) {
@if $n>0 {
@include gen-col($n - 1);
.col-#{$n} {
width: 1000px/12*$n;
}
}
}
@include gen-col(12);
复制代码
sass是支持循环的,不须要递归
@for $i from 1 through 12 {
.col-#{$i} {
width: 1000/12*$i;
}
}
复制代码
使得CSS变得更像一门变成语言
import
预处理器的变量跨文件
@import "logo";
@import "nav";
@import "content";
复制代码
预处理器的模块化,提供了按需使用他人代码的可能
SASS-Compass
Less-Lesshat/EST(国内)
mixin
JS
类库,封装经常使用功能有兼容性问题的封装成mixin统一处理
Less
(Node.js
)Sass
(Ruby
,有Node
版本)Extend
和Mixin
代码片断import
CSS
文件模块化前端工程化发展起来了,预处理器的热度有所降低
Bootstrap
介绍
CSS
框架twitter
出品
Bootstrap4
bootstrap3
兼容到IE9
)flexbox
布局Nomalize.css
reboot
版本功能
如今用sass
编写
Js
组件用于组件交互
dropdown
(下拉)modal
( 弹窗)基于jQuery
Popper.js
bootstrap.js
使用方式
data-
属性JS-API
不一样的分辨率下面又不一样的分配
CSS
同名类覆盖SCSS
源文件,修改变量 //对结构的要求更高把bootstrap当初一个预处理文件来使用,十一个更干净的使用方式
CSS
面试题Bootstrap
的优缺点CSS
代码结构合理,现成的样式能够直接使用Bootstrap
如何实现响应式布局media query
设置不一样分辨率的class
class
Bootstrap
定制本身的样式CSS
同名覆盖SCSS
源文件,修改变量
CSS
工程化介绍
postCSS
插件的使用PostCSS
自己只有解析能力import
模块合并autoprefixier
自动加前缀cssnano
压缩代码cssnext
使用css新特性precss
MIxin
Extend
import
gulpPostCSS
postCSS
支持的构建工具
Webpack
postcss-loader
Gulp
gulp-postcss
Grunt
grunt-postcss
Rollup
rollup-postcss
webpack
处理css
css-loader
将css文件变成js文件style-loader
将变成js的css文件注入到页面中css-modules
和extract-text-plugin
直接将class名所有换掉,确保组件样式不冲突
var styles = require('component.css');
style.green ...
css-loader
将 CSS
变成JS
style-loader
将JS
样式插入head
ExtractTextPlugin
将CSS
从JS
中提取出来css modules
解决css命名冲突的问题(映射表)less-loader
sass-loader
各种预处理器postcss-loader
PostCSS
处理less
sass
等CSS
预处理器PostCSS
插件(postCSS-import/precss
等)webpack
处理CSS(css-loader
+style-loader
)PostCSS
能够作什么取决于插件能够作什么
autoperfixer
cssnext
precss
等,兼容性处理import
模块合并css
语法检查、兼容性检查CSS modules
是作什么的,如何使用PostCSS
或者webpack
等构建工具进行编译HTML
模板中使用编译过程产生的类名JS
来引用、加载CSS
JS
做为入口,管理资源有自然优点webpack
)css
Angular
中的CSS
Angular
各版本
Angular.js(1.x)
Angular(2+)
typeScript
shadowDOM
DOM
Scoped CSS
CSS
/deep/
或>>>
穿透兼容性还存在问题
模拟
Scoped CSS
<div abcdefg>
div[abcdefg]{}
Vue
中的CSS
内置
CSS
解决方案
模拟
Scoped CSS
CSS modules
<div abcdefg>
<div>[abadafda]{}
vue同时支持了这两种方案
<style module>
<style scoped>
React
中的CSS
React的
处理
官方没有集成方案
社区方案众多
css modules
(babel)react-css-modules
styled components
styled jsx
金三银四,看见你们都在为了面试而努力 特开了一个前端模拟面试题,组织了面试的群友天天来群里分享面试题,讲题 急思众议,共同进步,欢迎最近在面试或者准备面试的群友加入本群,加群格式: 工做年限-面试等级(初、中、高)-工做地点 (不在面试或者不许备面试或者不说话的勿加本群,加了也会被清理,咱们的目标是留下一部分愿意经过讨论学习和分享提升自身能力的群友)