《响应式Web设计:HTML5和CSS3实战(第2版)》08章 - 学习笔记

响应式Web设计:HTML5和CSS3实战(第2版)

第八章 CSS3过渡、变形和动画

  • 过渡——transition
  • 变形——transform
  • 动画——animation

8.1什么是CSS3过渡以及如何使用它

  • 当元素的CSS状态改变时,过渡是最简单的创造视觉效果的方式。
    • 如:我们在给超链接设置样式的时候,一般都会设置一个悬停状态的效果
    • transition: box-shadow 1s;
    • 在box-shadow上,将会耗时1秒,从现存状态切换到悬停状态。
8.1.1 过渡的简写语法
  • 倾向使用缩写版,
    • 这样我只要定义过渡的时长和需要过渡的属性即可。
  • transition: all 1s ease 0s;
    • 第一个和时间相关的值会被应用给transition-duration
    • 第二个则会被应用到transition-delay上
8.1.2 在不同时间段内过渡不同属性
  • 多个属性过渡时,这些属性不必步调一致
  .style { 
      /* ...(其他样式)... */ 
      transition-property: border, color, text-shadow; 
      transition-duration: 2s, 3s, 8s; 
      }
8.1.3 过渡调速函数
  • 贝塞尔曲线,本质上是缓动函数
  • ease(默认)、linear、ease-in、ease-out、ease-in-out和cubic-bezier

8.2 CSS的2D变形

  • 过渡是从一种状态平滑转换到另一种状态
  • 变形则定义了元素将会变成什么样子
  • 想象一下《变形金刚》里的擎天柱,他通过变形来变成一部卡车。而在机器人与卡车之间的阶段,我们称之为过渡(从一个状态过渡到另一个状态)。
  • 变形是在文档流外发生的
    • 一个变形的元素不会影响它附近未变形的元素的位置。
8.2.1 scale
  • 因为变形在文档流之外,所以如下设置的样式变形,并不会导致同类位置的变动
  .scale:hover { 
      transform: scale(1.4); 
  }
8.2.2 translate
  • translate会告知浏览器按照一定的度量值移动元素,可以使用像素或者百分比
    • 第一个值是X轴上偏移的距离
    • 第二个是Y轴上偏移的距离
    • 正值会让元素向右或者向下移动,负值则会让元素向左或者向上移动。
  .translate:hover { 
      transform: translate(-20px, -20px); 
  } 
 + 如果你只传入一个值,它会被应用到X轴上。
 + 如果你想指定一个轴进行移动,可以使用translateX或者translateY。
  • 解决绝对居中
  .inner { 
      position: absolute; 
      width: 200px; 
      background-color: #999; 
      top: 50%; 
      left: 50%; 
      transform: translate(-50%, -50%); 
  }
8.2.3 rotate
  • rotate允许你旋转一个元素
    • 括号中的值只能以度为单位(如90deg)。正值时会进行顺时针旋转,而负值则会逆时针旋转。
  .rotate:hover { 
      transform: rotate(30deg); 
  }
8.2.4 skew
  • skew(斜切)会让元素在一个或者两个轴上变形偏斜。
    • 第一个值是X轴上的斜切(本例中是40度)
    • 第二个值是Y轴上的斜切(本例中是12度)
    • 忽略第二个值意味着仅有的值只会应用在X轴上(水平方向)。
  .skew:hover { 
      transform: skew(40deg, 12deg); 
  } 
8.2.5 matrix
  • matrix(矩阵)变形的语法超级复杂
  .matrix:hover { 
      transform: matrix(1.678, -0.256, 1.522, 2.333, -51.533, -1.989); 
  } 
8.2.6 transform-origin属性
  • 在CSS里,默认的变形原点(浏览器中作为变形中心的点)是在正中心:
    • 元素X轴的50%和Y轴的50%处
    • 这和SVG默认的左上角(或者0 0)是不同的。
  • 使用transform-origin,我们可以修改变形原点
  .matrix:hover { 
      transform: matrix(1.678, -0.256, 1.522, 2.333, -51.533, -1.989); 
      transform-origin: 270px 20px; 
  } 

8.3 CSS3的3D变形

  • 使用perspective属性来设置用户视点到3D场景的距离。
  • 结构:
  <div class="flipper">
    <span class="flipper-object flipper-vertical"> 
          <span class="panel front">The Front</span>
      <span class="panel back">The Back</span>
    </span>
  </div> 
  • 样式:
  .flipper { 
      perspective: 400px; 
      position: relative; 
  } 
  /* 我们将父元素设置为相对定位,从而创造一个上下文来放置flipper-object。 */
  .flipper-object { 
      position: absolute; 
      transition: transform 1s; 
      transform-style: preserve-3d; 
  } 
  • 使用backface-visibility属性把它设置为hidden来隐藏元素的背面

8.4 CSS3动画效果

  • 相较于3D变形,CSS3动画的支持度更高。
  • 将在元素翻转后为其添加脉冲动画效果。
    • 这里只定义了一个简单的关键帧选择器:100%。
      • 也可以设置多个关键帧选择器(推荐你使用百分比)。你可以把它们想象成时间轴上的点。
  @keyframes pulse { 
      100% { 
          text-shadow: 0 0 5px #bbb; 
          box-shadow: 0 0 3px 4px #bbb; 
      } 
  } 
  • 最好使用一个能代表动画效果的名字,因为一个关键帧声明可以在项目中多处复用。
    • 使用:
  .flipper:hover .flipper-horizontal { 
      transform: rotateY(180deg); 
      animation: pulse 1s 1s infinite alternate both; 
  }
  • animation-fill-mode属性
    • animation-fill-mode: forwards;
    • 这指使元素保留动画结束时的值。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容