目录
- 
两栏布局,右侧自适应,三栏布局,中间自适应
 - 
HTML5
 
1.两栏布局,右侧自适应,三栏布局,中间自适应
   1.两栏布局,有边自适应
     (1)BFC里float,margin-left
     父级添加BFC,即overflow:hidden
     左边float,定宽:float:left;width:200px
     右边margin-left:210px
     (2)flex弹性布局
     父级设置display:flex
     左边定宽:width:200px
     右边:flex:1
   2.三栏布局,中间自适应
     (1)两边float,中间margin:
         父级BFC,设置overflow:hidden,解决高度没有的问题。
         左边左浮动,定宽:float:left,width:200px
         右边右浮动,定宽:float:right,width:100px
         中间margin:margin-left:210px;margin-right:110px
        `  <div class="container">
            <div class="left"></div>
            <div class="right"></div>
            <div class="middle"></div>
           </div>           `
     (2)两边absolute,中间margin(脱离文档流:根据最近已经定位的祖先元素定位,不考虑html)
         .left{
             position:absolute;
             left:0;
             top:0;
             width:200px
         }
         .right:{
             position:absolute;
             right:0;
             top:0
             width:100
         }
         .middle{
             margin:0 110px 0 210px;
         }
     (3)display:table;table-layout:flexd
        `  <div class="container">
            <div class="left"></div>
            <div class="middle"></div>
            <div class="right"></div>
           </div>      `
         父级.container{
                 display:table;
                 table-layout:flexd;
                 width:100%;
                 text-align:center
             }
             .left .right{
                 display:table-cell;
                 width:100px
             }
             .middle{
                 width:100%;  //填充剩下的宽度
                 display:teble-cell
             }
     (4)flex实现
         .container{
             display:flex;
             justify-content: space-between  //项目平均分布
         }
         .left .right{
             width:100px
         }
         .middle{
             flex:1;  //填充剩下的宽度,或者用width:100%
         }
     (5)grid实现
         .container{
             display:grid;
             grid-template-columns: 300px auto 300px;
         }
         
         
         
2.HTML5
   1.语义化标签:
       head、footer、nav、aside、section、article、dialog、main、figure
   2.表单:
      类型:input增加了type = color、email、range、number、date、datetime、month、search、url、tel。由于浏览器兼容问题,很多都不适用,一般用ElementUI封装好的
      属性:placeholder、maxlength、minlength、require、autofocus、autocomplete
   3.多媒体标签:audio、vedio  通过src
   4.canvas
   5.SVG绘图:xml的2D图形语言,矢量图标 <svg>标签 ,和canvas有点像
   6.地理定位:Geolocation
   7.拖放API:drag、drop
   8.webWorker
   9.webStorage:sessionStorage/localStorage:getItem/setItem/removeItem/clear/
   10.webSocket
   
      29.BFC
   1.BFC(Block Formatting Context),即块级格式化上下文,是页面中的一块渲染区域。
   2.BFC的目的是形成一个相对于外界完全独立的空间,让内部的子元素不会影响到外部的元素。
   3.BFC有一套属于自己的渲染规则:
       1、内部的盒子会在垂直方向上一个接一个的放置
       2、对于同一个BFC的两个相邻的盒子的margin会发生重叠,与方向无关
       3、每个元素的左外边距与包含块的左边界相接触(从左到右),即使浮动元素也是如此,但是BFC的区域不会与float的元素区域重叠
       4、计算BFC的高度时,浮动子元素也参与计算
       5、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
   4.BFC的触发条件,包含不限于:
       1、根元素,即html元素
       2、浮动元素:float值为left、right
       3、overflow值不为visible,为auto、hidden、scroll
       4、display值为表格布局或弹性布局,如inline-block、table-cell、table-caption、table、inline-table、flex、inline-flex、grid、inline-grid
       5、绝对定位,position值为absolute、flxed
   
    (1)解决元素间距问题:防止margin重叠(塌陷),同一个BFC会引发margin重叠
    <style>
        p{background:#fcc;width:200px;line-heigth:100px;margin:100px;text-algin:center}
        .wrap{overflow:hidden}  //根据触发规则3,形成新的BFC
    </style>
    <body>
        <p>haha</p>
        <p>hehe</p>
    </body>
    根据触发规则1,根元素触发BFC,两个p元素的margin重叠,以最大的margin为准,根据渲染规则1和2,由于同一个BFC两个相邻的盒子的margin会发生重叠,所以解决方案是将p再裹一层容器,形成两个独立的BFC即可。
    <div class="wrap">
       <p>hehe</p>
    </div>
    
    
    (2)解决元素高度没了的问题:父级形成BFC可清除内部浮动,BFC内部有浮动元素时,可让它参与高度计算
    <style>
        .par{border:5px solid #fcc;width:300px}
        .child{border:5px;width:100px;height:100px;float:left}
    </style>
    <body>
        <div class="par">
          <div class=child"></div>
          <div class=child"></div>
        </div>
    </body>
    计算par高度时,高度为0,没了,是因为子元素没有参与计算。
    解决:让par形成BFC,根据BFC渲染规则5,浮动元素也会参与计算。
    解决方案:.par{overflow:hidden}  //根据触发规则3,形成BFC
    
    
    
    (3)解决多栏布局不能自适应问题:自适应多栏布局
    <style>
        body{width:300px;position:relative}
        .aside{width:100px;height:100px;float:left;background:#f66;}
        .main{height:200px;background:#fcc;}
    </style>
    <body>
      <div class=aside"></div>
      <div class=main"></div>
    </body>
    由于每个元素的左边距与包含块的左边界相接触,所以即使aside为浮动元素,main的左边依然会与包含块的左边相接触
    解决:根据BFC的渲染规则3,BFC不会与浮动盒子重叠
    解决方案:.main{overflow: hidden} //根据BFC触发规则3,形成BFC
    
扩展:
IFC、GFC、FFC
IFC、GFC、FFC实际上都是BFC的细化。
1.IFC(Inline formatting contexts):内联格式上下文
    内联盒子的高度由其包含行内元素中最高的实际高度计算而来。
    触发:display:inline-block,根据BFC触发规则4
    作用:水平居中、垂直居中
2.GFC(GrideLayout formatting contexts):网格布局格式化上下文
    形成一个二维表格,拥有丰富的属性,控制行列、对齐
    触发:display:grid
    作用:二维表格渲染
3.FFC(Flex formatting contexts):自适应格式上下文
    形成一个伸缩容器
    触发:display:flex/inline-flex
    只有谷歌、火狐支持
    
    
30.实现元素的垂直水平居中
   1、利用定位 + margin:auto(脱离文档流)
       (1)父级设置为相对定位position:relative,子级绝对定位posittion:absolute
       (2)子级四个定位属性left、right、top、bottom都设置为0
       (3)子级设置margin:auto
     <style>
        .father{width:500px;height:300px;position:relative}
        .son{width:100px;height:40px;left:0;top:0;right:0;bottom:0;margin:auto;background:#f66;}
    </style>
    <body>
      <div class="father">
          <div class="son"></div>
      </div>
    </body>
   2、利用定位 + margin:负值(父元素高度变化仍然可实现,但是子元素宽高必须已知)
       (1)父级设置为相对定位position:relative,子级绝对定位posittion:absolute
       (2)子级四个定位属性left、top都设置为50%
       (3)子级设置margin-left:-(子级宽度的50%),margin-top:-(子级高度的50%)
       
   3、利用定位 + transform (优点:父元素高度和子元素的宽高都不需要知道)transform:translate(x,y),x和y表示的是x轴和y轴的值,起点是左上角,scale(n) 放大缩小比例,比如2.0和负值
       (1)父级设置为相对定位position:relative,子级绝对定位posittion:absolute
       (2)子级四个定位属性left、top都设置为50%
       (3)子级设置transform:translate(-50%,-50%) 
       
   4、table布局(未脱离文档流) table-cell
       其实是BFC/IFC内联格式化上下文的原理
       (1)父级设置display:table-cell,子级设置display:inline-block
       (2)父级设置vertical-align:middle,text-align:center
   5、flex布局(不定高,不定宽,常用)
       CSS3中的flex布局
       (1)父级设置display:flex
       (2)父级设置align-items:center,水平居中
       (1)父级设置justify-content: center,垂直居中
   6、grid布局(不定高、不定宽,兼容性相对较差)
       CSS3中的grid布局
       (1)父级设置display:grid
       (2)父级设置align-items:center,水平居中
       (1)父级设置justify-content: center,垂直居中
   
31.隐藏页面元素的方式
   1.display:none
       元素在页面彻底消失,元素本身占有的空间会被其他元素占有,导致浏览器的重排和重绘,自身绑定的事件不会触发,也不会有过渡效果。
       特点:元素不可见,不占据空间,无法响应点击事件
   2.visibility:hidden
       DOM结构存在,不会触发重排,但会触发重绘,绑定事件不触发
       特点:元素不可见,占据页面空间,无法响应点击事件
   3.opacity:0
       设置元素透明度为0后是不可见的,DOM结构存在,不引发重绘、重排
       特点:改变元素透明度,元素不可见,占据页面空间,可响应点击事件
   4.设置height和width模型属性为0
       将元素的margin、padding、border、width、height等属性设置为0,若元素内有子元素,则设置overflow:hidden。
       特点:元素不可见,不占据空间,无法响应点击事件,DOM不存在
   5.position:absolute
       将元素移出可视区域
       `.hide{position:absolute;top:-9999px;left:-9999px}           `
       特点:元素不可见,不影响页面布局
   6.clip-path
       通过裁剪的形式
       ` .hide{clip-path:polygon(0px 0px 0px 0px 0px 0px 0px 0px)}          `
       特点:元素不可见,占据页面空间,无法响应点击事件
- 
em/px/rem/vh/vw的区别
1、px 绝对长度单位,页面按精确像素展示 2、em 相对长度单位,继承父级元素的字体大小font-size,若父级元素未设置,则用浏览器默认的字体尺寸16px,即1em=16px,整个页面的1em值不是一个固定的值 3、rem 相对长度单位,相对的只是HTML根元素font-size的值,一般在根元素html上加上html{font-size:62.5%},之后1rem = 10px。rem集相对大小和绝地大小的优点于一身,故常用。 4、vw 根据窗口的宽度分成100等份,100vw就标识满宽,始终针对窗口的宽,vh针对窗口的高。窗口在PC端指浏览器的可视区域,在移动端指布局视口。%相对于的是父元素,不是窗口。 
33.CSS选择器
 1.css选择器常用的有:
   1、id选择器
   2、类选择器
   3、标签选择器
   4、后代选择器(#id div)、
   5、子选择器(.class>.childClass)、
   6、相邻同胞选择器(.class+.brotherClass)、
   7、群组选择器(div,p)
   8、伪类选择器(:hover/:focus/:link/:active/:visited/:first-child)  CSS3
   9、伪元素选择器(:before/:after/:first-letter/:first-line)
   10、属性选择器(attribute) CSS3
   11、层次选择器(p~ul) CSS3
   
 2.选择器的优先级:
   
   !important > 内联 > ID选择器 > 类选择器 > 标签选择器 > * > 继承 > 默认
 
 3.选择器具有继承属性
 4.CSS选择器**解析顺序是从右往左**解析
 
34.层叠上下文(stacking context)
  1.盒模型是三维的,平面画布的x轴、y轴,以及表示层叠的z轴,
  2.触发条件:
      (1)根元素 <html>本身即根层叠上下文
      (2)position属性,非static值,并设置z-index
      (3)CSS属性:flex(子元素z-index不为auto)、opacity(不为1)、transform(值不为none)、filter(值不为none)、will-change
  3.层叠顺序规则:
      (1)在同一层叠上下文中层叠等级才有意义
      (2)z-index的优先级最高
      (3)具体规则:background < (z-index<0)  <  block块级元素 < float浮动元素 < inline行内元素 < z-index=0/auto < (z-index>0)
      
35.CSS盒模型
   1.一般说IE8及其以上为W3C盒模型,IE8以下是IE怪异盒模型,不是所有的IE都是IE盒模型
   2.页面渲染时,DOM元素所采用的布局模型,可通过box-sizing进行设置,根据width的区别可分为
       (1)标准盒模型box-sizing:content-box。width指content部分的宽度
       (2)IE盒模型 box-sizing:border-box。width = content + padding + border
    
   3.css盒子包含四部分:内容content、内边距padding、边框border、外边距margin
   4.在w3c标准盒模型里,一个块block的总宽度= width + padding + border + margin
   5.在IE盒模型里,一个块block的总宽度 = width + margin
36.CSS的新属性
   1、布局:新增flex、grid
   2、选择器:新增first-of-type、nth-child
   3、盒模型:新增box-sizing,以选择IE的border-box和W3c的content-box
   4、动画:新增animation,2d变换,3d变换
   5、颜色:新增opacity、rbga
   6、字体:嵌入字体、字体阴影
   7、媒体查询@media
37.CSS预处理器(SASS/LESS/POSTCSS)
   常用功能:嵌套、变量、循环语句、条件语句、自动前缀、单位转换、mixin复用
   
38.清除浮动
   (1)clear:both
   (2)创建父级BFC,父级添加display:auto/hidden 属性
   (3)父级设置高度 
   (4)伪元素和IEhack
      常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
 - 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
 
- 提示下载完但解压或打开不了?
 
- 找不到素材资源介绍文章里的示例图片?
 
- 模板不会安装或需要功能定制以及二次开发?
 
                    
    
发表评论
还没有评论,快来抢沙发吧!