CSS day06

一、复杂选择器
  1.结构伪类选择器
    1.:only-child
      匹配的元素是属于父元素中的唯一子元素。
    2.否定伪类
      将满足指定选择器的元素给排除在外。
      语法:  :not(selector){...}
    3.伪元素选择器
      1.::first-letter或:first-letter
        作用:用于匹配元素的首字符
      2.::first-line或:first-line
        作用:用于匹配元素的首行
    注意:如果首字符和首行样式冲突时,优先使用首字符样式
      3.::selection
        作用:匹配被用户选取的内容
        注意:只能修改文本颜色和背景颜色
      4.内容生成
        1.什么是内容生成
      使用CSS动态的向元素中插入一段内容
    2.伪元素选择器
      ①:before或::before
      作用:匹配到某元素的内容区域之前。
      <p>(:before)<span>床前明月光</span></p>
      ②:after或::after
      作用:匹配到某元素的内容区域之后
      <p>床前明月光(:after)</p>
    3.属性
      content
      作用:向匹配到的位置处增加的内容
      取值:
        1.字符串,用""引起来
        2.URL(图片路径)
        3.解决问题
          1.上外边距溢出
             1.在父元素的第一个子元素位置处
         2.添加一个table标记,并且标记内容为空
          ex:
            选择器::before{
            content:"";
            display:table;
            }
          2.解决浮动元素对父元素高度带来的影响
             1.在父元素的最后一个子元素位置处
         2.添加一个空的块级元素(display:block)
         3.设置其clear属性的值为both
         ex:
           .类选择器:after{
            content:"";
            display:block;
            clear:both;
           }

 

二、弹性布局
  1.什么是弹性布局
    弹性布局(Flexible layout)是一种布局方式,主要解决某元素中“子元素”的布局方式,为布局提供最大的灵活性
  2.弹性布局的概念
    1.容器  子元素的父元素称为容器
    2.项目  要实现布局的子元素,称为项目
    3.主轴  项目们排列方向的一根轴,称为主轴
            如果主轴是x轴,那么y轴就是交叉轴
    4.交叉轴  与主轴垂直相交的一根轴,称为交叉轴
  3.语法
    1.弹性(flex)容器
      将元素变为flex容器后,那么所有子元素都将变为flex项目,都允许按照弹性布局的方式排列
    2.属性:display
      取值:
        1.flex 将块级元素变为容器
    2.inline-flex  将行内元素变为容器
      注意:
        1.元素设置为flex容器之后,子元素的float,clear,vartical-align将失效。
    2.元素变为弹性容器后,子元素的尺寸允许被修改(把子元素变为块级)
    3.容器属性
      1.flex-direction
        作用:指定容器的主轴及其排列方向
    取值:(1)row 默认值,即主轴为x轴,起点在左端
          (2)row-reverse 主轴为x轴,起点在右端
          (3)column 主轴为y轴,起点在顶端
          (4)column-reverse 主轴为y轴,起点在底部

      2.flex-wrap
        作用:当一个主轴排列不下所有项目时,元素是否换行显示
    取值:
      1.nowrap:默认值,即空间不足时也不会换行,项目自动缩小
      2.wrap:换行
      3.wrap-reverse:换行并反转
      3.flex-flow
        作用:是flex-direction和flex-wrap的缩写形式
    取值:1.row nowrap(默认值)
          2.direction wrap
      4.justify-content
        作用:定义项目在主轴上的对齐方式
    取值:
          1.flex-start  在主轴的起点对齐
          2.flex-end  在主轴的终点对齐
          3.center  在主轴上居中对齐
          4.space-between  两端对齐
          5.space-around  每个项目两端的间距相同
      5.align-items
        作用:定义项目在交叉轴上的对齐方式
    取值:
        1.flex-start  交叉轴上起点对齐
        2.flex-end  交叉轴上终点对齐
        3.center  交叉轴上居中显示
        4.baseline  交叉轴上基线对齐
        5.stretch  如果项目未设置尺寸,在交叉轴上占满所有空间
    

    4.项目属性
      该组属性只能设置在某一个项目元素上,值控制一个项目,不影响其他项目
      1.order
        作用:定义项目的排列顺序,值越小,越靠近起点,默认值为0
    取值:整数数组,无单位
      2.flex-grow空间,项
        作用:定义项目的放大比例,如果容器有足够的剩余目按照比例放大
    取值:整数数字,无单位
          默认值0,不放大
          取值越大,占据剩余空间的比例越多
      3.flex-shrink
        作用:定义项目缩小比例,即容器空间不足时,项目按照比例缩小
    取值:整数数字,无单位,值越大缩小得越快
          默认值1,空间不足时,则等比缩小
          取值为0,则不缩小

      4.align-self
        作用:定义当前某项目在交叉轴的对齐方式
    取值:
       1.flex-start 起点对齐
       2.flex-end 终点
       3.center 居中
       4.baseline 基线对齐
       5.stretch 未设定项目高度时占满父元素的空间
       6.auto 自动继承父元素align-items的属性值

三、转换
  1.什么是转换
    改变元素在页面中的位置,大小,角度以及形状的一种方式
    2D转换:只在x轴和y轴上发生转换效果
    3D转换:增加z轴的转换效果
  2.转换属性
    1.转换属性
      属性:transform
      取值:
        1.none  默认值,无任何转换效果
    2.transform-function  
      表示1个或多个转换函数
      如果是多个转换函数,中间用空格隔开
    2.转换原点
      属性:transform-origin
      取值:数组/百分比/关键词
            2个值,表示原点在x轴和y轴的位置
        3个值,表示原点在x轴y轴和z轴的位置
      默认的原点是在元素的中心位置
      transform-origin:left top;
      :(center,center)/(50%,50%)
    
    3.2D转换
      1.位置(位移)
        1.什么是位移
      改变元素在页面中的位置
    2.语法
      属性:transform
      取值:
          1.translate(x)
            指定元素在x轴上位移距离
        取值为正,元素向右移
        取值为负,元素向左移
          2.translate(x,y)
            指定元素在x轴和y轴上位移一定的距离
        x:同上
        y:指定元素在y轴上位移距离
        取值为正,元素向下移
        取值为负,元素向上移
          3.translateX(x)
          4.translateY(y)
       2.缩放
          1.什么是缩放
        改变元素在页面中的尺寸(大小)
          2.语法
        属性:transform
        取值:
           1.scale(value)
             value:横向和纵向缩放比例一样
               默认值1,不缩放
               value>1:放大
               0<value<1:缩小
               value<0:放大(水平和垂直方向都翻转180度)
           2.scale(x,y)
             x:横向缩放比例
         y:纵向缩放比例
           3.单向缩放
             scaleX(x)只在横向缩放
         scaleY(y)只在纵向缩放

    3.2D转换
         1.旋转
        1.什么是旋转
            改变元素在页面上的角度
        2.语法
          属性:transform
            取值:
             rotate(ndeg)
             n取值为正,顺时针旋转
             n取值为负,逆时针旋转

            注意:1.旋转是连同坐标轴一起旋转,会影响到旋转后的位移效果
                  2.转换原点会影响最后的转换效果
         2.倾斜
             1.
        2.语法
            属性:transform
        取值:skewX(xdeg)
              让元素向着x轴的方向产生倾斜效果,实际改变的是y轴的角度值
             n取值为正,y轴逆时针倾斜
             n取值为负,y轴顺时针倾斜
              skewY(ydeg)
              让元素向着y轴的方向产生倾斜效果,实际改变的是x轴的角度值
                 n取值为正,x轴顺时针倾斜
             n取值为负,x轴顺时针倾斜
              skew(x) 等同于skewX(x)
              skew(x,y) 同时在x,y轴上产生倾斜
    4.3D转换
        1.透视距离
          模拟人的眼睛到3D转换元素之间的距离
          属性:perspective
          注意:该属性要加在3D元素的父元素上
        2.3D旋转
          属性:transform
          取值:rotateX(xdeg)  以x轴为中心轴,旋转元素的角度 (爆米花机,烤羊腿)
                  rotateY(ydeg)  以y轴为中心轴,旋转元素的角度 (门,陀螺)
            rotateZ(zdeg)  以z轴为中心轴,旋转元素的角度 (电风扇,方向盘,摩天轮)
            rotate3D(x,y,z,ndeg)  x,y,z取值大于0的数字时,表示该轴参与旋转,取值为0则不参与旋转
四、过渡
  1.什么是过渡
    使得css样式在一段时间内平缓变化的效果
  2.过渡的语法
    1.指定过渡属性
      属性:transition-property
      作用:指定哪个属性值在变化的时候需要用过渡的方式来提现
      取值:1.all 能使用过渡的属性,一律用过渡提现
            2.具体属性名
    ex:transition-property:background;当背景的属性在发生变化时用过渡来体现
       transition-property:all; 所有属性发生变化时都用过渡提现
    允许设置过渡效果的属性:
        1.颜色属性
        2.取值为数字的属性
        3.转换属性
        4.渐变属性
        5.visibility属性
    2.指定过渡的时长
      作用:指定在多长时间内完成过渡操作
      属性:transition-duration
      取值:
         以s或ms为单位的数值
    3.指定过渡的速度时间曲线函数
      属性:transition-timing-function
      取值:
         ease 默认值,慢速开始,快速变快,慢速结束
     liner 匀速
     ease-in 慢速开始,加速结束
     ease-out 快速开始,慢速结束
     ease-in-out 慢速开始和结束,中间先加速后减速
    4.指定过渡的延迟
      属性:transition-delay
      取值:以s或ms为单位的数字
    5.过渡属性的编写位置
      1.将过渡放在元素声明的样式中
        既管去,由管回
      2.将过渡放在触发操作中
        只管去,不管回
    6.过渡的简写方式
      属性:
        transition:property duration
    timing-function delay;
    ex:
      transition:background 2s linear;  //正确
      transition:all;  //无过渡效果

四、动画
  1.什么是动画
    使用元素从一种样式逐渐的变化为另一种样式,即将多个过渡元素放在一起。
    动画是通过“关键帧”,来控制动画的每一步。
    关键帧:
         1.动画执行的时间点
     2.在该时间点上的样式是什么
  2.动画的使用步骤
    1.声明动画
         为动画起名,定义关键帧
     语法:
     @keyframes 动画名称{
         /*定义 关键帧*/
       0%{
        动画开始时元素的样式
       }
       25%{
        动画执行到四分之一时的样式
       }
       50%{
        动画执行到一半时的样式
       }
       100%{
        动画执行结束时的样式
       }
     }
    2.调用动画
      将声明好的动画,通过使用动画名称的方式来添加给元素
         1.调用动画的属性
       属性:animation-name
       作用:指定调用动画的名称
     2.animation-duration
       作用:指定动画执行一个周期的时长
       取值:以s或者ms为单位的数字
     3.animation-timing-function
       作用:指定动画速度时间曲线函数
       取值:
         :ease/linear/ease-in/ease-out/ease-in-out
     4.animation-delay
       作用:指定动画的延迟时间
       取值:以s或ms为单位的数字
     5.animation-iteration-count
       作用:指定动画的播放次数
       取值:
         1.具体的数字
         2.infinite 无限次播放
     6.animation-direction
       作用:指定动画的播放方向
       取值:
         1.normal 默认值,正常播放0%~100%
         2.reverse 逆向播放100%~0%
         3.alternate 轮流播放
           奇数次播放时,正向播放
           偶数次播放时,逆向播放
     7.动画属性的简写方式
       animation:name duration timing-function
       delay iteration-count direction;
     8.animation-fill-mode
       作用:规定动画在播放前或播放后的状态
       取值:1.none 默认值
             2.forwards 动画播放完成后,将保持在最后一个帧的状态上
         3.backwards 动画播放前,延迟时间内,动画保持在第一帧的状态上
         4.both 是 forwards 和 backwards的结合体
     9.animation-play-state
       作用:指定动画是处于播放还是暂停的状态上
       取值:
         1.paused: 暂停
         2.running: 播放
       补充:
         如果要兼容低版本浏览器的动画效果,可以使用加前缀
         ex:
         @-webkit-keyframes 动画名称{...}
         @-moz-keyframes 动画名{...}

五、CSS优化
  1.CSS优化的原则
    尽量减少HTTP请求个数
    页面顶部引入CSS文件
    将CSS和JS放到外部独立的文件中
  2.CSS代码优化
    合并样式
    缩小样式文件
    代码压缩
    选择更优的样式属性值
    避免空scr和href

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值