HTML&&CSS

HTML&&CSS

介绍

关于注释

  • HTML的注释,注释中的内容会被浏览器所忽略,不会在网页中直接显示,

    • 但是可以在源码中查看注释,注释用来对代码进行解释说明的

      • 开发中一定要养成良好的编写注释的习惯,注释要求简单明了

      • 注释还可以将一些不希望显示的内容隐藏

      • 注释不能嵌套

      • 标签一般成对出现,但是也存在一些自结束标签

关于属性

  • 属性,在标签中(开始标签或自结束标签)还可以设置属性

    • 属性是一个名值对(x=y)

      • 属性用来设置标签中的内容如何显示

        • 属性和标签名或其他属性应该使用空格隔开

        • 属性不能瞎写,应该根据文档中的规定来编写,

          • 有些属性有属性值,有些没有。如果有属性值,属性值应该使用引号引起来

实体

  • 在网页中编写的多个空格默认情况会自动被浏览器解析为一个空格

      在HTML中有些时候,我们不能直接书写一些特殊符号
          比如:多个连续的空格,比如字母两侧的大于和小于号
    
      如果我们需要在网页中书写这些特殊的符号,则需要使用html中的实体(转义字符)
      实体的语法:
          &实体的名字;
                空格
              > 大于号
              < 小于号
              © 版权符号
    
    • eg:今天         天气真不错!

meta标签

  • meta主要用于设置网页中的一些元数据,元数据不是给用户看

    • charset 指定网页的字符集
      name 指定的数据的名称
      content 指定的数据的内容

            keywords 表示网站的关键字,可以同时指定多个关键字,关键字间使用,隔开
      
      • description 用于指定网站的描述

        • title标签的内容会作为搜索结果的超链接上的文字显示
        •     将页面重定向到另一个网站
          

语义化标签

  • 一般的

    • p标签

      • 关于块元素和行内元素

        • 块元素(block element)
        •         - 在网页中一般通过块元素来对页面进行布局
          
        •     行内元素(inline element)
          
        •         - 行内元素主要用来包裹文字
          
        •         - 一般情况下会在块元素中放行内元素,而不会在行内元素中放块元素
          
        •         - 块元素中基本上什么都能放
          
        •         - p元素中不能放任何的块元素
          
    • blockquote标签

    • br标签

    • em标签

    • h(n)标签

  • 布局标签

    • 也叫结构化语义标签

      • header 表示网页的头部
      •     main 表示网页的主体部分(一个页面中只会有一个main)
        
      •     footer 表示网页的底部
        
      •     nav 表示网页中的导航
        
      •     aside 和主体相关的其他内容(侧边栏)
        
      •     article 表示一个独立的文章
        
      •     section 表示一个独立的区块,上边的标签都不能表示时使用section
        
      •     div 没有语义,就用来表示一个区块,目前来讲div还是我们主要的布局元素
        
      •     span 行内元素,没有任何的语义,一般用于在网页中选中文字
        
  • 列表

    • 基本概念

      • 列表(list)

        •     1、铅笔
          
        •     2、尺子
          
        •     3、橡皮
          
    • 在html中也可以创建列表,html列表一共有三种:
      
      •     1、有序列表
        
        • 有序列表,使用ol标签来创建无序列表
          
        •     使用li表示列表项
          
      •     2、无序列表
        
        • 无序列表,使用ul标签来创建无序列表
          
      •     3、定义列表
        
        • 定义列表,使用dl标签来创建一个定义列表
          
        •     使用dt来表示定义的内容
          
        •     使用dd来对内容进行解释说明
          
    • 列表之间可以互相嵌套
      

超链接

  • 网页链接跳转

    • 使用 a 标签来定义超链接

      •         属性:
        
        •             href 指定跳转的目标路径
          
          •                 - 值可以是一个外部网站的地址
            
          •                 - 也可以写一个内部页面的地址
            
    •     超链接是也是一个行内元素,在a标签中可以嵌套除它自身外的任何元素
      
    • eg: 超链接

  • 自身跳转

    • target属性,用来指定超链接打开的位置

      •         可选值:
        
        •             _self 默认值 在当前页面中打开超链接
          
        •             _blank 在一个新的要么中打开超链接
          
      • 去底部

      • 去第三个自然段

图片标签

  • 作用

    • 图片标签用于向当前页面中引入一个外部图片
    •      使用img标签来引入外部图片,img标签是一个自结束标签
      
    •      img这种元素属于替换元素(块和行内元素之间,具有两种元素的特点)
      
  •      属性:
    
    •         src 属性指定的是外部图片的路径(路径规则和超链接是一样的)
      
    •         alt 图片的描述,这个描述默认情况下不会显示,有些浏览器会图片无法加载时显示
      
      •             搜索引擎会根据alt中的内容来识别图片,如果不写alt属性则图片不会被搜索引擎所收录
        
    •         height 图片的高度    
      
      •             - 宽度和高度中如果只修改了一个,则另一个会等比例缩放
        
    •         width 图片的宽度 (单位是像素)
      
    •         注意:
      
      •             一般情况在pc端,不建议修改图片的大小,需要多大的图片就裁多大
        
      •             但是在移动端,经常需要对图片进行缩放(大图缩小)
        
  •     图片的格式:
    
    •         jpeg(jpg)
      
      •             - 支持的颜色比较丰富,不支持透明效果,不支持动图
        
      •             - 一般用来显示照片
        
    •         gif
      
      •             - 支持的颜色比较少,支持简单透明,支持动图
        
      •             - 颜色单一的图片,动图
        
    •         png
      
      •             - 支持的颜色丰富,支持复杂透明,不支持动图
        
      •             - 颜色丰富,复杂透明图片(专为网页而生)
        
    •         webp
      
      •             - 这种格式是谷歌新推出的专门用来表示网页中的图片的一种格式
        
      •             - 它具备其他图片格式的所有优点,而且文件还特别的小
        
      •             - 缺点:兼容性不好
        
    •         base64 
      
      •             - 将图片使用base64编码,这样可以将图片转换为字符,通过字符的形式来引入图片    
        
      •             - 一般都是一些需要和网页一起加载的图片才会使用base64
        
  • 应用的原则

    •         效果不一样,用效果好的
      
    •         效果一样,用小的
      
  • 关于背景的一个属性:opacity(可以设置0-1的一个值)

    • 在ie8以及其一下的需要利用:filter:alpha(opacity=50)

内联框架

  • 内联框架,用于向当前页面中引入一个其他页面

    •         src 指定要引入的网页的路径
      
    •         frameborder 指定内联框架的边框
      
    • 同样也可以设置高度宽度
  • 框架集

    • 作用基本和内联框架一样,只是他可以同时引入多个框架,在H5中建议框架集合
    • 使用的方法:
	- rows

		- 一行一行的排列

	- cols

		- 所有页面一列一列的排列
		- 选项可以使“30% 20% 29%”

音视频的引入

  • audio 标签用来向页面中引入一个外部的音频文件的

    •         音视频文件引入时,默认情况下不允许用户自己控制播放停止
      
    •     属性:
      
      •         controls 是否允许用户控制播放
        
      •         autoplay 音频文件是否自动播放
        
        •             - 如果设置了autoplay 则音乐在打开页面时会自动播放
          
        •                 但是目前来讲大部分浏览器都不会自动对音乐进行播放 
          
      •         loop 音乐是否循环播放  
        
    • 除了通过src来指定外部文件的路径以外,还可以通过source来指定文件的路径

  • 用video

CSS

名字:层叠表

  • 内部样式表
  • 外部样式表

基本语法

  • 举例: CSS的基本语法:
    选择器 声明块

          选择器,通过选择器可以选中页面中的指定元素
              比如 p 的作用就是选中页面中所有的p元素
    
          声明块,通过声明块来指定要为元素设置的样式
              声明块由一个一个的声明组成
              声明是一个名值对结构
                  一个样式名对应一个样式值,名和值之间以:连接,以;结尾   
    
  • 选择器

    • 元素选择器

      • 直接写名字
    • 通配选择器

    • id选择器

      • 直接通过#选择
    • 类选择器

      • 加了class属性之后再加一个 .
    • 复合选择器

      • 交集选择器

        • 交集选择器
          作用:选中同时复合多个条件的元素
          语法:选择器1选择器2选择器3选择器n{}
          注意点:
          交集选择器中如果有元素选择器,必须使用元素选择器开头‘’
      • 并集选择器

        • 选择器分组(并集选择器)
          作用:同时选择多个选择器对应的元素
          语法:选择器1,选择器2,选择器3,选择器n{}

          #b1,.p1,h1,span,div.red{}

    • 关系选择器

      • 子元素选择器

        • 子元素选择器
        •             作用:选中指定父元素的指定子元素
          
        •             语法:父元素 > 子元素
          
      • 后代元素选择器

        • 后代元素选择器:
        •             作用:选中指定元素内的指定后代元素
          
        •             语法:祖先 后代
          
      • 兄弟选择器

        • 选择下一个兄弟
        •             语法:前一个 + 下一个
          
        •         选择下边所有的兄弟
          
        •             语法:兄 ~ 弟
          
      • 补充概念:父元素

        • 直接包含子元素的元素叫做父元素
          子元素
        • 直接被父元素包含的元素是子元素
          祖先元素
        • 直接或间接包含后代元素的元素叫做祖先元素
        • 一个元素的父元素也是它的祖先元素
          后代元素
        • 直接或间接被祖先元素包含的元素叫做后代元素
        • 子元素也是后代元素
          兄弟元素
        • 拥有相同父元素的元素是兄弟元素
    • 属性选择器

      • 有点正则表达式那味道

        •         [属性名] 选择含有指定属性的元素
          
        •         [属性名=属性值] 选择含有指定属性和属性值的元素
          
        •         [属性名^=属性值] 选择属性值以指定值开头的元素
          
        •         [属性名$=属性值] 选择属性值以指定值结尾的元素
          
        •         [属性名*=属性值] 选择属性值中含有某值的元素的元素
          
        • 扩展:div[class|=col]{
          border: 1px solid;
          }

          • 用col开头的属性选择器
    • 伪类选择器

      • 伪类一般情况下都是使用:开头

      • 定义

        • 什么是伪类:伪类(不存在的类,特殊的类)
        • 伪类用来描述一个元素的特殊状态
          比如:第一个子元素、被点击的元素、鼠标移入的元素…
      • 子元素伪类

        •             :first-child 第一个子元素
          
        •             :last-child 最后一个子元素
          
        •             :nth-child() 选中第n个子元素
          
          •                 特殊值:
            
            •                     n 第n个 n的范围0到正无穷
              
            •                     2n 或 even 表示选中偶数位的元素
              
            •                     2n+1 或 odd 表示选中奇数位的元素
              
        •                 - 以上这些伪类都是根据所有的子元素进行排序
          
      • 类伪类

        •             :first-of-type
          
        •             :last-of-type
          
        •             :nth-of-type()
          
        •                 - 这几个伪类的功能和上述的类似,不通点是他们是在同类型元素中进行排序
          
        •         - :not() 否定伪类
          
        •             - 将符合条件的元素从选择器中去除
          
        • 使用举例

          • ul > li:not(:nth-of-type(3)){
            color: yellowgreen;
            }
      • 特殊的a标签的伪类

        • :link 用来表示没访问过的链接(正常的链接)
        • :visited 用来表示访问过的链接
          由于隐私的原因,所以visited这个伪类只能修改链接的颜色
        • :hover 用来表示鼠标移入的状态
        • :active 用来表示鼠标点击
      • 伪元素选择器

        • 伪元素,表示页面中一些特殊的并不真实的存在的元素(特殊的位置)
        •             伪元素使用 :: 开头
          
        •             ::first-letter 表示第一个字母
          
        •             ::first-line 表示第一行
          
        •             ::selection 表示选中的内容
          
        •             ::before 元素的开始 
          
        •             ::after 元素的最后
          
        •                 - before 和 after 必须结合content属性来使用
          
    • 关于选择器及其样式的继承

      • 样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上

        •         继承是发生在祖先后后代之间的
          
        •         继承的设计是为了方便我们的开发,
          
        •             利用继承我们可以将一些通用的样式统一设置到共同的祖先元素上,
          
        •                 这样只需设置一次即可让所有的元素都具有该样式
          
      •         注意:并不是所有的样式都会被继承:
        
        •             比如 背景相关的,布局相关等的这些样式都不会被继承。
          
    • 关于选择器的优先级比较

      • 样式的冲突

        •             - 当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。
          
        •         发生样式冲突时,应用哪个样式由选择器的权重(优先级)决定
          
      •         选择器的权重
        
        •             内联样式        1,0,0,0
          
        •             id选择器        0,1,0,0
          
        •             类和伪类选择器   0,0,1,0
          
        •             元素选择器       0,0,0,1
          
        •             通配选择器       0,0,0,0
          
        •             继承的样式       没有优先级
          
      •         比较优先级时,需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示(分组选择器是单独计算的),
        
        •             选择器的累加不会超过其最大的数量级,类选择器在高也不会超过id选择器
          
      •             如果优先级计算后相同,此时则优先使用靠下的样式
        
      •         可以在某一个样式的后边添加 !important ,则此时该样式会获取到最高的优先级,甚至超过内联样式,
        
        •             注意:在开发中这个玩意一定要慎用!
          
  • 单位

    •                 像素
      
      •                     - 屏幕(显示器)实际上是由一个一个的小点点构成的
        
      •                     - 不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰
        
      •                     - 所以同样的200px在不同的设备下显示效果不一样
        
    •                 百分比
      
      •                     - 也可以将属性值设置为相对于其父元素属性的百分比
        
      •                     - 设置百分比可以使子元素跟随父元素的改变而改变
        
    •                 em
      
      •                     - em是相对于元素的字体大小来计算的
        
      •                     - 1em = 1font-size
        
      •                     - em会根据字体大小的改变而改变
        
    •                 rem
      
      •                     - rem是相对于根元素的字体大小来计算
        
  • 颜色

    • 颜色单位:

      •                 在CSS中可以直接使用颜色名来设置各种颜色
        
      •                     比如:red、orange、yellow、blue、green ... ...
        
      •                     但是在css中直接使用颜色名是非常的不方便
        
    •                 RGB类:
      
      •                 RGB值:
        
        •                     - RGB通过三种颜色的不同浓度来调配出不同的颜色
          
        •                     - 语法:RGB(红色,绿色,蓝色)
          
        •                     - R red,G green ,B blue
          
        •                     - 每一种颜色的范围在 0 - 255 (0% - 100%) 之间
          
      • RGBA

        •                     - 就是在rgb的基础上增加了一个a表示不透明度
          
        •                     - 需要四个值,前三个和rgb一样,第四个表示不透明度
          
        •                         1表示完全不透明   0表示完全透明  .5半透明
          
      •                 十六进制的RGB值:
        
        •                     - 语法:#红色绿色蓝色
          
        •                     - 颜色浓度通过 00-ff
          
        •                     - 如果颜色两位两位重复可以进行简写  
          
          •                         #aabbcc --> #abc
            
    •                 HSL值 HSLA值
      
      •                     H 色相(0 - 360)
        
      •                     S 饱和度,颜色的浓度 0% - 100%
        
      •                     L 亮度,颜色的亮度 0% - 100%
        

文档流

  • 往往来说元素在文档流里面会有多种状态

    • 块元素

        • 块元素会在页面中独占一行(自上向下垂直排列)
      •                 - 默认宽度是父元素的全部(会把父元素撑满)
        
      •                 - 默认高度是被内容撑开(子元素)
        
    • 行内元素

      • - 行内元素不会独占页面的一行,只占自身的大小
        
      •                 - 行内元素在页面中左向右水平排列,如果一行之中不能容纳下所有的行内元素
        
      •                     则元素会换到第二行继续自左向右排列(书写习惯一致)
        
      •                 - 行内元素的默认宽度和高度都是被内容撑开
        
  • 盒模型

    • 内容区

      • width 设置内容区的宽度
      • height 设置内容区的高度
    • 边框

      • 边框(border),边框属于盒子边缘,边框里边属于盒子内部,出了边框都是盒子的外部

      •                 边框的大小会影响到整个盒子的大小   要设置边框,需要至少设置三个样式:
        
        •                 边框的宽度 border-width
          
        •                 边框的颜色 border-color
          
        •                 边框的样式 border-style
          
    • 盒模型的组成

        • 每一个盒子都由一下几个部分组成:
      •             内容区(content)
        
      •             内边距(padding)
        
        • 属性值有

          • padding-top
          •                     padding-right
            
          •                     padding-bottom
            
          •                     padding-left
            
      •             边框(border)
        
      •             外边距(margin)
        
        • margin-top

        •                         - 上外边距,设置一个正值,元素会向下移动
          
        • margin-right

          •                         - 默认情况下设置margin-right不会产生任何效果
            
        • margin-bottom

          •                         - 下外边距,设置一个正值,其下边的元素会向下移动
            
        • margin-left

        •                         - 左外边距,设置一个正值,元素会向右移动
          
        •                     - margin也可以设置负值,如果是负值则元素会向相反的方向移动
          
  • 盒模型在水平方向的布局

    • 元素的水平方向的布局:

      •                 元素在其父元素中水平方向的位置由以下几个属性共同决定“
        
        •                     margin-left
          
        •                     border-left
          
        •                     padding-left
          
        •                     width
          
        •                     padding-right
          
        •                     border-right
          
        •                     margin-right
          
    •                 一个元素在其父元素中,水平布局必须要满足以下的等式
      
      • margin-left+border-left+padding-left+width+padding-right+border-right+margin-right = 其父元素内容区的宽度 (必须满足)

        •             0 + 0 + 0 + 200 + 0 + 0 + 0 = 800
          
        •             0 + 0 + 0 + 200 + 0 + 0 + 600 = 800
          
        •             100 + 0 + 0 + 200 + 0 + 0 + 400 = 800
          
        •             100 + 0 + 0 + 200 + 0 + 0 + 500 = 800
          
        •                 - 以上等式必须满足,如果相加结果使等式不成立,则称为过度约束,则等式会自动调整
          
    •                     - 调整的情况:
      
      •                         - 如果这七个值中没有为 auto 的情况,则浏览器会自动调整margin-right值以使等式满足
        
      •                 - 这七个值中有三个值和设置为auto
        
      •                     width
        
      •                     margin-left
        
      •                     maring-right
        
    •                     - 如果某个值为auto,则会自动调整为auto的那个值以使等式成立
      
      •                         0 + 0 + 0 + auto + 0 + 0 + 0 = 800  auto = 800
        
      •                         0 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 600
        
      •                         200 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 400
        
      •                         auto + 0 + 0 + 200 + 0 + 0 + 200 = 800  auto = 400
        
      •                         auto + 0 + 0 + 200 + 0 + 0 + auto = 800  auto = 300
        
    •                     - 如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距会自动为0
      
    •                     - 如果将三个值都设置为auto,则外边距都是0,宽度最大
      
    •                     - 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值
      
    •                         所以我们经常利用这个特点来使一个元素在其父元素中水平居中
      
      •                         示例:
        
        •                             width:xxxpx;
          
        •                             margin:0 auto;
          
  • 盒模型在垂直方向上的布局

    • 子元素是在父元素的内容区中排列的,
      如果子元素的大小超过了父元素,则子元素会从父元素中溢出
      使用 overflow 属性来设置父元素如何处理溢出的子元素

    • 可选值

      • visible,默认值 子元素会从父元素中溢出,在父元素外部的位置显示
      • hidden 溢出内容将会被裁剪不会显示
      • scroll 生成两个滚动条,通过滚动条来查看完整的内容
      • auto 根据需要生成滚动条
    • 外边距的折叠

      • 垂直外边距的重叠(折叠)
        - 相邻的垂直方向外边距会发生重叠现象
        - 兄弟元素
        - 兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)
        - 特殊情况:
        如果相邻的外边距一正一负,则取两者的和
        如果相邻的外边距都是负值,则取两者中绝对值较大的

              - 兄弟元素之间的外边距的重叠,对于开发是有利的,所以我们不需要进行处理
        
        
          - 父子元素
              - 父子元素间相邻外边距,子元素的会传递给父元素(上外边距)
              - 父子外边距的折叠会影响到页面的布局,必须要进行处理
        
  • 行内元素的盒模型

    • 行内元素的盒模型的特点

      •                 - 行内元素不支持设置宽度和高度
        
      •                 - 行内元素可以设置padding,但是垂直方向padding不会影响页面的布局
        
      •                 - 行内元素可以设置border,垂直方向的border不会影响页面的布局
        
      •                 - 行内元素可以设置margin,垂直方向的margin不会影响布局
        
  • 外接样式表

    • 重置样式表:专门用来对浏览器的样式进行重置的

    •         reset.css 直接去除了浏览器的默认样式
      
    •         normalize.css 对默认样式进行了统一
      
    • 默认样式

      • 默认样式:
      •             - 通常情况,浏览器都会为元素设置一些默认样式
        
      •             - 默认样式的存在会影响到页面的布局,
        
      •                 通常情况下编写网页时必须要去除浏览器的默认样式(PC端的页面)
        
  • 盒子的尺寸

    • 默认情况下,盒子可见框的大小由内容区、内边距和边框共同决定

    •                 box-sizing 用来设置盒子尺寸的计算方式(设置width和height的作用)
      
    •                     可选值:
      
      •                         content-box 默认值,宽度和高度用来设置内容区的大小
        
      •                         border-box 宽度和高度用来设置整个盒子可见框的大小
        
      •                             width 和 height 指的是内容区 和 内边距 和 边框的总大小
        
  • 盒子的轮廓和圆角

    • box-shadow 用来设置元素的阴影效果,阴影不会影响页面布局

      •             第一个值 水平偏移量 设置阴影的水平位置 正值向右移动 负值向左移动
        
      •             第二个值 垂直偏移量 设置阴影的水平位置 正值向下移动 负值向上移动
        
      •             第三个值 阴影的模糊半径
        
      •             第四个值 阴影的颜色
        
    • outline 用来设置元素的轮廓线,用法和border一模一样

      •             轮廓和边框不同的点,就是轮廓不会影响到可见框的大小  
        
    • border-radius: 用来设置圆角 圆角设置的圆的半径大小

      • border-top-left-radius:

        • 四个值 左上 右上 右下 左下
          三个值 左上 右上/左下 右下
          两个个值 左上/右下 右上/左下
  • 常见的行内元素和块元素

    • 1)行内元素有:a b span img input select strong(强调的语气)
    • 2)块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p

浮动

  • 浮动

    • 通过浮动可以使一个元素向其父元素的左侧或右侧移动
      使用 float 属性来设置于元素的浮动

    • 可选值:

      •                         none 默认值 ,元素不浮动
        
      •                         left 元素向左浮动
        
      •                         right 元素向右浮动
        
    • 注意,元素设置浮动以后,水平布局的等式便不需要强制成立

      •                     元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置,
        
      •                         所以元素下边的还在文档流中的元素会自动向上移动
        
    • 浮动的特点

      •                     1、浮动元素会完全脱离文档流,不再占据文档流中的位置
        
      •                     2、设置浮动以后元素会向父元素的左侧或右侧移动,
        
      •                     3、浮动元素默认不会从父元素中移出
        
      •                     4、浮动元素向左或向右移动时,不会超过它前边的其他浮动元素
        
      •                     5、如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移
        
      •                     6、浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高
        
      • 浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围,
        所以我们可以利用浮动来设置文字环绕图片的效果
  • 元素脱离文档流以后

    • 脱离文档流以后,不需要再区分块和行内了

    • 脱离文档流的特点:

      •                 块元素:
        
        •                     1、块元素不在独占页面的一行
          
        •                     2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开
          
      •                 行内元素:
        
        •                     行内元素脱离文档流以后会变成块元素,特点和块元素一样
          
  • BFC

    • 关于高度塌陷

      •                 在浮动布局中,父元素的高度默认是被子元素撑开的,
        
      •                     当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离
        
      •                     将会无法撑起父元素的高度,导致父元素的高度丢失
        
      •                 父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱
        
    • BFC(Block Formatting Context) 块级格式化环境

      •                 - BFC是一个CSS中的一个隐含的属性,可以为一个元素开启BFC
        
      •                     开启BFC该元素会变成一个独立的布局区域
        
      •                 - 元素开启BFC后的特点:
        
        •                     1.开启BFC的元素不会被浮动元素所覆盖
          
        •                     2.开启BFC的元素子元素和父元素外边距不会重叠
          
        •                     3.开启BFC的元素可以包含浮动的子元素
          
        •                 - 可以通过一些特殊方式来开启元素的BFC:
          
          •                     1、设置元素的浮动(不推荐)
            
          •                     2、将元素设置为行内块元素(不推荐)
            
          •                     3、将元素的overflow设置为一个非visible的值
            
          •                         - 常用的方式 为元素设置 overflow:hidden 开启其BFC 以使其可以包含浮动元素
            
    • CLEAR

      • 如果我们不希望某个元素因为其他元素浮动的影响而改变位置,
        可以通过clear属性来清除浮动元素对当前元素所产生的影响

        •                 - 作用:清除浮动元素对当前元素所产生的影响
          
        •                 - 可选值:
          
          •                     left 清除左侧浮动元素对当前元素的影响
            
          •                     right 清除右侧浮动元素对当前元素的影响
            
          •                     both 清除两侧中最大影响的那侧
            
        •                 原理:
          
          •                     设置清除浮动以后,浏览器会自动为元素添加一个上外边距,
            
          •                         以使其位置不受其他元素的影响
            
      • clear对于高度塌陷的最终解决方法

        • /* clearfix 这个样式可以同时解决高度塌陷和外边距重叠的问题,当你在遇到这些问题时,直接使用clearfix这个类即可 */

          • .clearfix::before,
            .clearfix::after{
            content: ‘’;
            display: table;
            clear: both;
            }

定位

  • 定位(position)

    •                 - 定位是一种更加高级的布局手段
      
    •                 - 通过定位可以将元素摆放到页面的任意位置
      
    •                 - 使用position属性来设置定位
      
    •                     可选值:
      
      •                         static 默认值,元素是静止的没有开启定位
        
      •                         relative 开启元素的相对定位
        
        •                 - 相对定位:
          
          •                     - 当元素的position属性值设置为relative时则开启了元素的相对定位
            
          •                     - 相对定位的特点:
            
            •                         1.元素开启相对定位以后,如果不设置偏移量元素不会发生任何的变化
              
            •                         2.相对定位是参照于元素在文档流中的位置进行定位的
              
            •                         3.相对定位会提升元素的层级
              
            •                         4.相对定位不会使元素脱离文档流
              
            •                         5.相对定位不会改变元素的性质块还是块,行内还是行内
              
      •                         absolute 开启元素的绝对定位
        
          • 当元素的position属性值设置为absolute时,则开启了元素的绝对定位
        •             - 绝对定位的特点:
          
          •                 1.开启绝对定位后,如果不设置偏移量元素的位置不会发生变化
            
          •                 2.开启绝对定位后,元素会从文档流中脱离
            
          •                 3.绝对定位会改变元素的性质,行内变成块,块的宽高被内容撑开
            
          •                 4.绝对定位会使元素提升一个层级
            
          •                 5.绝对定位元素是相对于其包含块进行定位的
            
        •                 包含块( containing block )
          
          •                     - 正常情况下:
            
            •                         包含块就是离当前元素最近的祖先块元素
              
            •                         
            •                         
              hello
          •                     - 绝对定位的包含块:
            
            •                         包含块就是离它最近的开启了定位的祖先元素,
              
            •                             如果所有的祖先元素都没有开启定位则根元素就是它的包含块
              
            •                     - html(根元素、初始包含块)
              
      •                         fixed 开启元素的固定定位
        
        •                 - 将元素的position属性设置为fixed则开启了元素的固定定位
          
        •                 - 固定定位也是一种绝对定位,所以固定定位的大部分特点都和绝对定位一样
          
        •                     唯一不同的是固定定位永远参照于浏览器的视口进行定位
          
        •                     固定定位的元素不会随网页的滚动条滚动
          
      •                         sticky 开启元素的粘滞定位
        
        •                 - 当元素的position属性设置为sticky时则开启了元素的粘滞定位
          
        •                 - 粘滞定位和相对定位的特点基本一致,
          
        •                     不同的是粘滞定位可以在元素到达某个位置时将其固定
          
    •                 - 偏移量(offset)
      
      •                     - 当元素开启了定位以后,可以通过偏移量来设置元素的位置
        
        •                             - 定位元素垂直方向的位置由top和bottom两个属性来控制
          
          •                                 通常情况下我们只会使用其中一
            
      •                         top
        
        •                             - 定位元素和定位位置上边的距离
          
          •                             - top值越大,定位元素越向下移动
            
      •                         bottom
        
        •                             - 定位元素和定位位置下边的距离
          
          •                             - bottom值越大,定位元素越向上移动
            
      •                             - 定位元素水平方向的位置由left和right两个属性控制
        
        •                                 通常情况下只会使用一个
          
          •                             - left越大元素越靠右
            
          •                             - right越大元素越靠左
            
      •                         left
        
        •                             - 定位元素和定位位置的左侧距离
          
      •                         right
        
        •                             - 定位元素和定位位置的右侧距离
          
    • 水平布局

      • 水平布局
        left + margin-left + border-left + padding-left + width + padding-right + border-right + margin-right + right = 包含块的内容区的宽度

        - 当我们开启了绝对定位后:
            水平方向的布局等式就需要添加left 和 right 两个值
                此时规则和之前一样只是多添加了两个值:
                    当发生过度约束:
                        如果9个值中没有 auto 则自动调整right值以使等式满足
                        如果有auto,则自动调整auto的值以使等式满足
        
                - 可设置auto的值
                    margin width left right
        
                - 因为left 和 right的值默认是auto,所以如果不指定left和right
                    则等式不满足时,会自动调整这两个值
        
            垂直方向布局的等式的也必须要满足
                top + margin-top/bottom + padding-top/bottom + border-top/bottom + height = 包含块的高度
        
    • 元素层级

      • 对于开启了定位元素,可以通过z-index属性来指定元素的层级
      •                 z-index需要一个整数作为参数,值越大元素的层级越高
        
      •                     元素的层级越高越优先显示
        
      •                 如果元素的层级一样,则优先显示靠下的元素
        
      •                 祖先的元素的层级再高也不会盖住后代元素
        

字体

  • 字体

    • 关于font-face

      • font-face可以将服务器中的字体直接提供给用户去使用

      •         问题:
        
      •             1.加载速度
        
      •             2.版权
        
      •             3.字体格式
        
      • 格式

        • @font-face {
        •             /* 指定字体的名字 */
          
        •         font-family:'myfont' ;
          
        •         /* 服务器中字体的路径 */
          
        •         src: url('./font/ZCOOLKuaiLe-Regular.ttf') format("truetype");
          
        •     }
          
  • 字体相关的样式

    • 字体相关的样式

      •             color 用来设置字体颜色
        
      •             font-size 字体的大小
        
      •                 和font-size相关的单位
        
      •                 em 相当于当前元素的一个font-size
        
      •                 rem 相对于根元素的一个font-size
        
      •             font-family 字体族(字体的格式)
        
    • font属性

      • font 可以设置字体相关的所有属性

      •                 语法:
        
        •                     font: 字体大小/行高 字体族
          

行高 可以省略不写 如果不写使用默认值

	-                         font-weight 字重 字体的加粗 
            可选值:
                normal 默认值 不加粗
                bold 加粗
                100-900 九个级别(没什么用)
	- 
            font-style 字体的风格
                normal 正常的
                italic 斜体
	- font-size: 50px;

-                     可选值:

	-                         serif  衬线字体
	-                         sans-serif 非衬线字体
	-                         monospace 等宽字体

-                             - 指定字体的类别,浏览器会自动使用该类别下的字体
-                     - font-family 可以同时指定多个字体,多个字体间使用,隔开

	-          eg:               Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans GB,"\5B8B\4F53",sans-serif
	-                         字体生效时优先使用第一个,第一个无法使用则使用第二个 以此类推
  • 图标字体

    • 图标字体(iconfont)
      - 在网页中经常需要使用一些图标,可以通过图片来引入图标
      但是图片大小本身比较大,并且非常的不灵活
      - 所以在使用图标时,我们还可以将图标直接设置为字体,
      然后通过font-face的形式来对字体进行引入
      - 这样我们就可以通过使用字体的形式来使用图标

      • eg: li::before{

        content: ‘\f1b0’;
        /* font-family: ‘Font Awesome 5 Brands’;这里是字体族的使用 */
        font-family: ‘Font Awesome 5 Free’;
        font-weight: 900;
        color: blue;
        margin-right: 10px;
        }

    • 通过实体来使用图标字体:
      &#x图标的编码;

    • eg:

    • 图标字体库

      • fontawesom

        •         1.下载 https://fontawesome.com/
          
        •         2.解压
          
        •         3.将css和webfonts移动到项目中
          
        •         4.将all.css引入到网页中
          
        •         5.使用图标字体
          
        •             - 直接通过类名来使用图标字体
          
        •                 class="fas fa-bell"
          
        •                 class="fab fa-accessible-icon"
          
      • iconfont阿里的字体库

        • 1.先去官网加购下载项目包然后放到文件库包里面然后再把库包引入

Hello

i.iconfont{ font-size: 100px; }
    p::before{
        content: '\e625';
        font-family: 'iconfont';
        font-size: 100px;
    }
  • 行高

    •         font-size: 50px;
      

line-height: 200px;

	-             /* 可以将行高设置为和高度一样的值,使单行文字在一个元素中垂直居中 */

-                 行高(line height)

	-                     - 行高指的是文字占有的实际高度
	-                     - 可以通过line-height来设置行高
	-                         行高可以直接指定一个大小(px em)
	-                         也可以直接为行高设置一个整数

		-                             如果是一个整数的话,行高将会是字体的指定的倍数

	-                     - 行高经常还用来设置文字的行间距
	-                         行间距 = 行高 - 字体大小

-                 字体框

	-                     - 字体框就是字体存在的格子,设置font-size实际上就是在设置字体框的高度
	-                 行高会在字体框的上下平均分配
  • 文本对齐

    • text-align 文本的水平对齐
      可选值:
      left 左侧对齐
      right 右对齐
      center 居中对齐
      justify 两端对齐

    • vertical-align 设置元素垂直对齐的方式
      可选值:
      baseline 默认值 基线对齐
      top 顶部对齐
      bottom 底部对齐
      middle 居中对齐

    • text-decoration 设置文本修饰
      可选值:
      none 什么都没有
      underline 下划线
      line-through 删除线
      overline 上划线

    • white-space 设置网页如何处理空白
      可选值:
      normal 正常
      nowrap 不换行
      pre 保留空白

      • eg:显示多余的部分为省略号
        .box2{
        width: 200px;
        /*
        white-space 设置网页如何处理空白
        可选值:
        normal 正常
        nowrap 不换行
        pre 保留空白

        */
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        }

    • 背景

      • 背景图片

        • background-image 设置背景图片
        •                 - 可以同时设置背景图片和背景颜色,这样背景颜色将会成为图片的背景色
          
        •                 - 如果背景的图片小于元素,则背景图片会自动在元素中平铺将元素铺满
          
        •                 - 如果背景的图片大于元素,将会一个部分背景无法完全显示
          
        •                 - 如果背景图片和元素一样大,则会直接正常显示
          
      • 背景图片重复方式

        • background-repeat 用来设置背景的重复方式
        •                 可选值:
          
        •                     repeat 默认值 , 背景会沿着x轴 y轴双方向重复
          
        •                     repeat-x 沿着x轴方向重复
          
        •                     repeat-y 沿着y轴方向重复
          
        •                     no-repeat 背景图片不重复
          
      • 背景图片的位置

        • background-position 用来设置背景图片的位置
        •                 设置方式:
          
        •                     通过 top left right bottom center 几个表示方位的词来设置背景图片的位置
          
        •                         使用方位词时必须要同时指定两个值,如果只写一个则第二个默认就是center
          
        •                     通过偏移量来指定背景图片的位置:
          
        •                         水平方向的偏移量 垂直方向变量
          
      • background-clip

        •                     可选值:
          
          •                         border-box 默认值,背景会出现在边框的下边
            
          •                         padding-box 背景不会出现在边框,只出现在内容区和内边距
            
          •                         content-box 背景只会出现在内容区
            
          •                 background-origin 背景图片的偏移量计算的原点
            
      •                         padding-box 默认值,background-position从内边距处开始计算
        
        •                         content-box 背景图片的偏移量从内容区处计算
          
        •                         border-box 背景图片的变量从边框处开始计算
          
      • background-size 设置背景图片的大小
        第一个值表示宽度
        第二个值表示高度
        - 如果只写一个,则第二个值默认是 auto

              cover 图片的比例不变,将元素铺满
              contain 图片比例不变,将图片在元素中完整显示
        
        • backgound 背景相关的简写属性,所有背景相关的样式都可以通过该样式来设置
          并且该样式没有顺序要求,也没有哪个属性是必须写的

             注意:
                 background-size必须写在background-position的后边,并且使用/隔开
                     background-position/background-size
          
                 background-origin background-clip 两个样式 ,orgin要在clip的前边
          
      • background-attachment

        • 背景图片是否跟随元素移动
        • 可选值:
          scroll 默认值 背景图片会跟随元素移动
          fixed 背景会固定在页面中,不会随元素移动
    • 渐变

      • 线性渐变,颜色沿着一条直线发生变化

        •                 linear-gradient()
          
        •                 linear-gradient(red,yellow) 红色在开头,黄色在结尾,中间是过渡区域
          
        •                 - 线性渐变的开头,我们可以指定一个渐变的方向
          
          •                     to left
            
          •                     to top
            
          •                     to bottom
            
          •                     deg deg表示度数
            
          •                     to right
            
          •                     turn 表示圈
            
        •                 - 渐变可以同时指定多个颜色,多个颜色默认情况下平均分布,
          
          •                 repeating-linear-gradient() 可以平铺的线性渐变
            
          •                     也可以手动指定渐变的分布情况
            
      • 径向渐变(放射性的效果)

        • 默认情况下径向渐变的形状根据元素的形状来计算的
          正方形 --> 圆形
          长方形 --> 椭圆形
          - 我们也可以手动指定径向渐变的大小
          circle
          ellipse

            - 也可以指定渐变的位置
            - 语法:
                radial-gradient(大小 at 位置, 颜色 位置 ,颜色 位置 ,颜色 位置)
                    大小:
                        circle 圆形
                        ellipse 椭圆
                        closest-side 近边	
                        closest-corner 近角
                        farthest-side 远边
                        farthest-corner 远角
          
                    位置:
                        top right left center bottom
          

表格

  • 相关可用的选项

    • td

      • 在table之中使用tr表示表格之中的一行,有几个td就有几个单元格
    • tr

      • 一个tr就是一行
    • table表示一个表格

  • 属性

    • rowspan 纵向的合并单元格
    • colspan 横向的合并单元格
  • 一个表格可以分为三个部分

    •             头部 thead
            主体 tbody
            底部 tfoot
      
      • th 表示头部的单元格
  • 表格的样式

    • border-spacing: 指定边框之间的距离
    • border-collapse: collapse; 设置边框的合并

动画相关

  • 过渡

    • transition-property: 指定要执行过渡的属性
      多个属性间使用,隔开
      如果所有属性都需要过渡,则使用all关键字
      大部分属性都支持过渡效果,注意过渡时必须是从一个有效数值向另外一个有效数值进行过渡

      • eg:transition-property: height , width;
    • transition-duration: 指定过渡效果的持续时间

      • eg:transition-duration: 100ms, 2s;
    • ransition-timing-function: 过渡的时序函数
      指定过渡的执行的方式
      可选值:
      ease 默认值,慢速开始,先加速,再减速
      linear 匀速运动
      ease-in 加速运动
      ease-out 减速运动
      ease-in-out 先加速 后减速
      cubic-bezier() 来指定时序函数
      steps() 分步执行过渡效果
      可以设置一个第二个值:
      end , 在时间结束时执行过渡(默认值)
      start , 在时间开始时执行过渡

      • transition-timing-function: cubic-bezier(.24,.95,.82,-0.88);
    • transition-delay: 过渡效果的延迟,等待一段时间后在执行过渡

      • transition-delay: 2s;
  • 基本动画

    • 动画和过渡类似,都是可以实现一些动态的效果,
      不同的是过渡需要在某个属性发生变化时才会触发
      动画可以自动触发动态效果

        设置动画效果,必须先要设置一个关键帧,关键帧设置了动画执行每一个步骤
      
      • @keyframes test {
        /* from表示动画的开始位置 也可以使用 0% */
        from{
        margin-left: 0;
        background-color: orange;
        }

        /* to动画的结束位置 也可以使用100%*/
        to{
        background-color: red;
        margin-left: 700px;
        }

    • 动画的延时

      • animation-delay: 2s;
    • animation-name: 要对当前元素生效的关键帧的名字

    • animation-duration: 动画的执行时间

      • animation-duration: 4s;
    • animation-iteration-count 动画执行的次数

    • animation-direction
      指定动画运行的方向
      可选值:
      normal 默认值 从 from 向 to运行 每次都是这样
      reverse 从 to 向 from 运行 每次都是这样
      alternate 从 from 向 to运行 重复执行动画时反向执行
      alternate-reverse 从 to 向 from运行 重复执行动画时反向执行

    • animation-play-state: 设置动画的执行状态
      可选值:
      running 默认值 动画执行
      paused 动画暂停

    • animation-fill-mode: 动画的填充模式
      可选值:
      none 默认值 动画执行完毕元素回到原来位置
      forwards 动画执行完毕元素会停止在动画结束的位置
      backwards 动画延时等待时,元素就会处于开始位置
      both 结合了forwards 和 backwards

  • 变形

    • 变形就是指通过CSS来改变元素的形状或位置

      •             - transform 用来设置元素的变形效果
        
      •             -   变形不会影响到页面的布局
        
    •                 - 平移:
      
      •                     translateX() 沿着x轴方向平移
        
      •                     translateY() 沿着y轴方向平移
        
      •                     translateZ() 沿着z轴方向平移
        
      •                         - 平移元素,百分比是相对于自身计算的
        
  • 轴平移

    • z轴平移

      • z轴平移,调整元素在z轴的位置,正常情况就是调整元素和人眼之间的距离,
        距离越大,元素离人越近
        z轴平移属于立体效果(近大远小),默认情况下网页是不支持透视,如果需要看见效果
        必须要设置网页的视距

      • html{
        /* 设置当前网页的视距为800px,人眼距离网页的距离 */
        perspective: 800px;
        }

        • .box1{
          

        width: 200px;
        height: 200px;
        background-color: #bfa;
        margin: 200px auto;
        /*
        z轴平移,调整元素在z轴的位置,正常情况就是调整元素和人眼之间的距离,
        距离越大,元素离人越近
        z轴平移属于立体效果(近大远小),默认情况下网页是不支持透视,如果需要看见效果
        必须要设置网页的视距
        */

        transition:2s;
        }

      body:hover .box1{
      transform: translateZ(800px);
      }

  • 旋转

    • 旋转

      • 通过旋转可以使元素沿着x y 或 z旋转指定的角度
        rotateX()
        rotateY()
        rotateZ()
        /
        /
        transform: rotateZ(.25turn); /
        /
        transform: rotateY(180deg) translateZ(400px); /
        /
        transform: translateZ(400px) rotateY(180deg) ; */

        • transform: rotateY(180deg);
          /* 是否显示元素的背面 */
          backface-visibility: hidden;
  • 缩放

    • 对元素进行缩放的函数:

      •                 scaleX() 水平方向缩放
        
      •                 scaleY() 垂直方向缩放
        
      •                 scale() 双方向的缩放
        
    • /* 变形的原点 默认值 center*/

      •         /* transform-origin:20px 20px;  */
        

flex布局

  • flex(弹性盒、伸缩盒)

      • 是CSS中的又一种布局手段,它主要用来代替浮动来完成页面的布局
    •         - flex可以使元素具有弹性,让元素可以跟随页面的大小的改变而改变
      
  • 弹性元素

      • 要使用弹性盒,必须先将一个元素设置为弹性容器
    •             - 我们通过 display 来设置弹性容器
      
    •                 display:flex  设置为块级弹性容器
      
    •                 display:inline-flex 设置为行内的弹性容器
      
  • /* 将ul设置为弹性容器 */
    display: flex;

  • 轴:

  •                 弹性元素的排列方向称为主轴
    
  •                 与主轴垂直方向的称为侧轴
    
  • 弹性元素

      • 弹性容器的子元素是弹性元素(弹性项)
    •             - 弹性元素可以同时是弹性容器
      
  • 关于弹性盒和弹性元素的样式

    • flex弹性盒

      • flex-direction 指定容器中弹性元素的排列方式

        • 可选值:
          row 默认值,弹性元素在容器中水平排列(左向右)
          - 主轴 自左向右
          row-reverse 弹性元素在容器中反向水平排列(右向左)
          - 主轴 自右向左
          column 弹性元素纵向排列(自上向下)
          column-reverse 弹性元素方向纵向排列(自下向上)
      •                 flex-grow 指定弹性元素的伸展的系数
        
        •                 - 当父元素有多余空间的时,子元素如何伸展
          
        •                 - 父元素的剩余空间,会按照比例进行分配
          
      •                 flex-shrink 指定弹性元素的收缩系数
        
        •                 - 当父元素中的空间不足以容纳所有的子元素时,如果对子元素进行收缩
          
      • flex-wrap:
        设置弹性元素是否在弹性容器中自动换行

        •                 nowrap 默认值,元素不会自动换行
          
        •                 wrap 元素沿着辅轴方向自动换行
          
        •                 wrap-reverse 元素沿着辅轴反方向换行
          
      • flex-direction: column;

      • flex-flow: wrap 和 direction 的简写属性

      • justify-content

          • 如何分配主轴上的空白空间(主轴上的元素如何排列)
        •                 - 可选值:
          
          •                     flex-start 元素沿着主轴起边排列
            
          •                     flex-end 元素沿着主轴终边排列
            
          •                     center 元素居中排列
            
          •                     space-around 空白分布到元素两侧
            
          •                     space-between 空白均匀分布到元素间
            
          •                     space-evenly 空白分布到元素的单侧
            
      • align-items:

          • 元素在辅轴上如何对齐
        • 元素间的关系

        •    - 可选值:
          
          •                     stretch 默认值,将元素的长度设置为相同的值
            
          •                     flex-start 元素不会拉伸,沿着辅轴起边对齐
            
          •                     center 居中对齐
            
          •                     baseline 基线对齐
            
          •                     flex-end 沿着辅轴的终边对齐
            
      • align-content: 辅轴空白空间的分布

        •                 - 可选值:
          
          •                     flex-start 元素沿着轴起边排列
            
          •                     flex-end 元素沿着轴终边排列
            
          •                     center 元素居中排列
            
          •                     space-around 空白分布到元素两侧
            
          •                     space-between 空白均匀分布到元素间
            
          •                     space-evenly 空白分布到元素的单侧
            
    • 弹性元素的样式

      • 弹性的增长系数

        • 弹性元素的缩减系数
          • 缩减系数的计算方式比较复杂
          • 缩减多少是根据 缩减系数 和 元素大小来计算
      • flex-grow: 1;

      • flex-shrink: 1;

      • flex-basis 指定的是元素在主轴上的基础长度

        •                 如果主轴是 横向的 则 该值指定的就是元素的宽度
          
        •                 如果主轴是 纵向的 则 该值指定的是就是元素的高度
          
        •                 - 如果传递了一个具体的数值,则以该值为准
          
        •                 - 默认值是 auto,表示参考元素自身的高度或宽度
          
      • flex

        • flex 可以设置弹性元素所有的三个样式
        • flex 增长 缩减 基础
        • initial “flex: 0 1 auto”.
        • auto “flex: 1 1 auto”
        • none “flex: 0 0 auto” 弹性元素没有弹性
      • order 决定弹性元素的排列顺序

  • 像素

    • 像素:
      - 屏幕是由一个一个发光的小点构成,这一个个的小点就是像素
      - 分辨率:1920 x 1080 说的就是屏幕中小点的数量
      - 在前端开发中像素要分成两种情况讨论:CSS像素 和 物理像素
      - 物理像素,上述所说的小点点就属于物理像素
      - CSS像素,编写网页时,我们所用像素都是CSS像素
      - 浏览器在显示网页时,需要将CSS像素转换为物理像素然后再呈现
      - 一个css像素最终由几个物理像素显示,由浏览器决定:
      默认情况下在pc端,一个css像素 = 一个物理像素

      视口(viewport)
      - 视口就是屏幕中用来显示网页的区域
      - 可以通过查看视口的大小,来观察CSS像素和物理像素的比值
      - 默认情况下:
      视口宽度 1920px(CSS像素)
      1920px(物理像素)
      - 此时,css像素和物理像素的比是 1:1

       - 放大两倍的情况:
           视口宽度 960px(CSS像素)
                   1920px(物理像素)
                   - 此时,css像素和物理像素的比是1:2
      
       - 我们可以通过改变视口的大小,来改变CSS像素和物理像素的比值
      
      • 移动端默认的视口大小是980px(css像素),
        默认情况下,移动端的像素比就是 980/移动端宽度 (980/750)
        如果我们直接在网页中编写移动端代码,这样在980的视口下,像素比是非常不好,
        导致网页中的内容非常非常的小
        编写移动页面时,必须要确保有一个比较合理的像素比:
        1css像素 对应 2个物理像素
        1css像素 对应 3个物理像素

        • 可以通过meta标签来设置视口大小

        • 每一款移动设备设计时,都会有一个最佳的像素比,
          一般我们只需要将像素比设置为该值即可得到一个最佳效果
          将像素比设置为最佳像素比的视口大小我们称其为完美视口

          将网页的视口设置为完美视口

          结论:以后再写移动端的页面,就把上边这个玩意先写上

hack

  • 条件hack
  • 属性hack
  • ps:其实就是个过滤器!

LESS

注释

  • // less中的单行注释,注释中的内容不会被解析到css中

  • css中的注释,内容会被解析到css文件中

变量

  • //变量,在变量中可以存储一个任意的值

  • // 并且我们可以在需要时,任意的修改变量中的值

  • // 变量的语法: @变量名

  • 变量的使用

    • //使用变量是,如果是直接使用则以 @变量名 的形式使用即可
    • width: @a;
      
    • //作为类名,或者一部分值使用时必须以 @{变量名} 的形式使用
    • .@{c}{
    • width: @a;
      
    • background-image: url("@{c}/1.png");
      
    • }
    • // 变量发生重名时,会优先使用比较近的变量
      
    • //可以在变量声明前就使用变量
  • 新语法

    • // 新版的语法
    • // height: $width;
      

外层

  • //& 就表示外层的父元素

  • &:hover{
    
  •     color: orange;
    
  • }
    
  • 继承

    • //:extend() 对当前选择器扩展指定选择器的样式(选择器分组)
    • .p2:extend(.p1){
    • color: red;
      
    • }
  • 混入

    • //直接对指定的样式进行引用,这里就相当于将p1的样式在这里进行了复制

    • //mixin 混合
      
    • eg

      • .p3{
        //直接对指定的样式进行引用,这里就相当于将p1的样式在这里进行了复制
        //mixin 混合
        .p1();
        }
    • eg

      • // 使用类选择器时可以在选择器后边添加一个括号,这时我们实际上就创建了一个mixins
        .p4(){
        width: 100px;
        height: 100px;
        }
        .p5{
        .p4;
        }
  • 混合函数

    • //混合函数 在混合函数中可以直接设置变量
      .test(@w:100px,@h:200px,@bg-color:red){
      width: @w;
      height: @h;
      border: 1px solid @bg-color;
      }

      • div{
        //调用混合函数,按顺序传递参数
        // .test(200px,300px,#bfa);
        .test(300px);
        // .test(@bg-color:red, @h:100px, @w:300px);
        }

bootstrap

HTML5

重要的属性

XMind - Trial Version

你可能感兴趣的:(css和html)