6_动画_其他属性

2D、3D变形动画

transform:2D变形:复合属性

通过 CSS3 转换,我们能够对元素进行移动、缩放、转动、拉长或拉伸。转换方法:translate()/rotate()/scale()/skew()/matrix()

transform
  1. none 定义不进行转换。
  2. translate(x,y) 定义 2D 平移转换。
  3. translateX(x) 定义转换,只是用 X 轴的值。
  4. translateY(y) 定义转换,只是用 Y 轴的值。

transform: translate(100px,100px);

  1. scale(x,y) 定义 2D 缩放转换。

  2. scaleX(x) 通过设置 X 轴的值来定义缩放转换。

  3. scaleY(y) 通过设置 Y 轴的值来定义缩放转换。

    transform: scale(1.5,0.6);

  1. rotate(angle) 定义 2D 旋转,在参数中规定角度。

    补充1.角度也可以使用弧度单位:rad

    transform: rotate(60deg);

    transform: rotate(60rad);

  1. skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。

  2. kewX(angle) 定义沿着 X 轴的 2D 倾斜转换。

  3. skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。

    transform: skewX(10px);

  1. matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。(x缩放,弧度耽误旋转,弧度旋转,y缩放,x平移,y平移)

    变形矩阵功能很强大,但是相对比较复杂,涉及到复杂的数学计算

transform-origin:改变元素变形的基准点
  • 像素/百分比
  • X轴:left/right/center
  • Y轴:top/bottom/center/

transform-origin: 0px 0px;

transform:3D变形:

transform:3D变形可以近似理解为沿着Z轴移动元素,使得元素更加靠近或者远离你,从而使元素看起来变得更大或更小。

  1. transform:3D变形函数
    • translate3d(x,y,z) 定义 3D 转换。
    • translateY(y) 定义转换,只是用 Y 轴的值。
    • translateX(x) 定义转换,只是用 X 轴的值。
    • translateZ(z) 定义 3D 转换,只是用 Z 轴的值。
    • +++++++++++++++++++++++++++++++++++++++
    • rotate3d(x,y,z,angle) 定义 3D 旋转。
    • rotateX(angle) 定义沿着 X 轴的 3D 旋转。
    • rotateY(angle) 定义沿着 Y 轴的 3D 旋转。
    • rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。
    • +++++++++++++++++++++++++++++++++++++++
    • scale3d(x,y,z) 定义 3D 缩放转换。
    • scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。
    • scaleX(x) 通过设置 X 轴的值来定义缩放转换。
    • scaleY(y) 通过设置 Y 轴的值来定义缩放转换。
    • +++++++++++++++++++++++++++++++++++++++
    • matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)定义 3D 转换,使用 16 个值的 4x4 矩阵。
  1. transform-origin 允许你改变被转换元素的位置。2D 转换元素能够改变元素 x 和 y 轴。3D 转换元素还能改变其 Z 轴。
  2. perspective(n) 为 3D 转换元素定义透视视图。父控件中设置
  3. transform-style 规定被嵌套元素如何在 3D 空间中显示。
    • flat 子元素将不保留其 3D 位置。
    • preserve-3d 子元素将保留其 3D 位置。
  4. perspective-origin 规定 3D 元素的底部位置。目前浏览器都不支持 perspective-origin 属性
  5. backface-visibility 定义元素在不面对屏幕时是否可见。浏览器支持度不好
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>6-51课堂演示</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <ul id="ul1">
        <li><a href="#">HTML5</a></li>
        <li><a href="#">CSS3</a></li>
        <li><a href="#">JavaScript</a></li>
        <li><a href="#">jQuery</a></li>
    </ul>
    <br><br>
    <hr>
    <ul id="ul2">
        <li><a href="#">HTML5</a></li>
        <li><a href="#">CSS3</a></li>
        <li><a href="#">JavaScript</a></li>
        <li><a href="#">jQuery</a></li>
    </ul>
</body>
</html>
@charset "UTF-8";

ul{
  list-style: none;
  font-size: 24px;
}

li{
  background-image: linear-gradient(to right,rgb(76, 245, 87),rgb(238, 70, 136));
  width: 200px;
  margin: 10px;
  padding: 10px;
  border-radius: 10px;
}

a{
  text-decoration: none;
}

#ul1 li{
  float: left;
}

li:hover{
  background-image: linear-gradient(to left,rgb(76, 245, 87),rgb(238, 70, 136));
  transform: rotate(15deg);
  transform-origin: left top;
}

hr{
  clear: both;
  border-top: 50px;
  border-width: 3px;
  border-style: dashed;
  border-color: rgb(230, 122, 149)
}

练习.gif

过渡动画:

  1. 通过 CSS3,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。
  2. CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。要实现这一点,必须规定两项内容:把效果添加到哪个 CSS 属性上/规定效果的时长

过渡动画的属性:

  1. transition 简写属性,用于在一个属性中设置四个过渡属性。
  2. transition-property 规定应用过渡的 CSS 属性的名称。
    • none 没有属性会获得过渡效果。
    • all 所有属性都将获得过渡效果。
    • 属性名称
  3. transition-duration 定义过渡效果花费的时间。默认是 0。单位是秒或毫秒
  4. transition-timing-function 规定过渡效果的时间曲线。默认是 "ease"。
    • linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
    • ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。
    • ease-in 规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
    • ease-out 规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
    • ease-in-out 规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
    • cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。
  5. transition-delay 规定过渡效果何时开始。默认是 0。
  #div1:hover{
  background: rgb(244, 142, 91);
  width: 100px;
  /*transition-property: all;*/
  transition-property: width;
  transition-duration: 2.0s;
  /*transition-timing-function: ease;*/
  transition-timing-function: cubic-bezier(.42, 0, .58, 1);
  transition-delay: 1.0s;
  }

CSS3 动画属性:

通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。

  1. @keyframes 设定动画规则。可以近似理解为动画的剧本。

    • name 必需。定义动画的名称。
    • 0-100%/from...to... 必需。动画时长的百分比。
    • 需要变化的 CSS 样式属性:必需。
  2. animation 所有动画属性的简写属性,用于设置六个动画属性:animation-name/animation-duration/animation-timing-function/animation-delay/animation-iteration-count/animation-direction

  3. animation-name 属性为 @keyframes 动画规定名称。若设置为none则覆盖已有的动画效果。

  4. animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。

  5. animation-timing-function 规定动画的速度曲线。默认是 "ease"。

    • linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
    • ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。
    • ease-in 规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
    • ease-out 规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
    • ease-in-out 规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
    • cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。
  6. animation-delay 规定动画何时开始。默认是 0。

  7. animation-iteration-count 规定动画被播放的次数。默认是 1。infinite为无限次播放。

  8. animation-direction 规定动画是否在下一周期逆向地播放。默认是 "normal 顺向播放"。/ alternate 动画应该轮流反向播放。

  9. animation-play-state 规定动画是否正在运行或暂停。默认是 "running 规定动画正在播放。"。/paused 规定动画暂停。

  10. animation-fill-mode 规定对象动画时间之外的状态。

    • none 不改变默认行为。
    • forwards 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
    • backwards 在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
    • both 向前和向后填充模式都被应用。
@keyframes mytest {
  from{
    margin-left: 50px;
    background-color: rgb(79, 193, 128);
  }

  to{
    margin-left: 300px;
    background-color: rgb(193, 233, 79);
  }
}

div:hover
{
  animation: mytest 2.0s ease 1.0s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}

@keyframes mytest {
  0%{
    margin-left: 50px;
    background-color: rgb(79, 193, 128);
  }

  50%{
    margin-left: 300px;
    background-color: rgb(203, 213, 6);
  }

  100%{
    margin-left: 150px;
    background-color: rgb(193, 233, 79);
  }
}

div:hover
{
  animation: mytest 2.0s ease 1.0s;
  animation-iteration-count: 1;
  animation-direction: alternate;
  animation-fill-mode: forwards;
}

CSS其他常用属性

opacity:透明度设定
  1. IE9, Firefox, Chrome, Opera 和 Safari 使用属性 opacity 来设定透明度。opacity 属性能够设置的值从 0.0 到 1.0。值越小,越透明。
  2. E8 以及更早的版本使用滤镜 filter:alpha(opacity=x)。x 能够取的值从 0 到 100。值越小,越透明。
  3. opacity与通过rgba()设定透明度的区别:前者同时作用于元素的标签内容,后者只是作用于元素本身
鼠标的样式 cursor:
  1. 我们可以通过cursor属性改变浏览器默认的鼠标样式,可改变的样式很多,这里仅仅列出几种相对常用的
    • hand是手型
    • pointer也是手型,推荐使用这种。
    • crosshair是十字型
    • text是移动到文本上的那种效果
    • wait是等待的那种效果
    • default是默认效果
    • e-resize是向右的箭头
    • ne-resize是向右上的箭头
    • n-resize是向上的箭头
    • nw-resize是向左上的箭头
    • w-resize是向左的箭
    • sw-resize是左下的箭头
    • s-resize是向下的箭头
    • se-resize是向右下的箭头
    • auto是由系统自动给出效果
rem:根元素字体的大小
  1. 浏览器默认字体大小为16px
  2. em是以父元素字体为基准的
  3. rem是以根元素字体大小为基准的
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>rem和em的区别</title>
    <style type="text/css">
        p{
            font-size: 0.75em;
        }
        .span1{
            font-size: 2em;
        }
        .span2{
            font-size: 2rem;
        }
    </style>
</head>
<body>
    我是浏览器默认html字体大小为16px;
    <p>
      我是p标签字体,段落文字大小为0.75em即:12px(16*0.75);<br>
      <span class="span1">
        我大小是2em,即24px,这里是相对父级字号(12px)*2的,而不是相对body里面的16px
      </span><br>
      <span class="span2">
        我大小是2rem,即32px,这里是相对根元素字号(16px)*2的,而不是相对p里面的12px
      </span>
    </p>
</body>
</html>
轮廓(outline)
  1. 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。
    • outline 在一个声明中设置所有的轮廓属性。
      • outline-color 设置轮廓的颜色。
      • outline-style 设置轮廓的样式。
      • outline-width 设置轮廓的宽度。
      • outline-offset 设置轮廓到边框的距离。 注:css新增属性,不可以写到符合属性里。
display 属性常用属性值:
  1. display的属性值很多,有些目前支持度不好
    • none 此元素不会被显示。
    • block 此元素将显示为块级元素。特征:换行,可设置宽高尺寸。
    • inline 行内元素,默认。特征:大小自适应;不换行。
    • inline-block 行内块元素。特征:可以设置大小,但是不可以换行。
    • 其他:list-item/table/inline-table/table-cell/table-caption......
@charset "UTF-8";
*{
  margin: 0;
  padding: 0;
}

ul{
  list-style: none;
}

a{
    text-decoration: none;
}

.ul1>li{
  background: rgb(73, 25, 56);
  width: 150px;
  height: 2em;
  float: left;
  text-align: center;
  margin: 5px;
  border-radius: 10px 10px 0px 0px;
  font-size: 20px;
  line-height: 40px;
}

.ul2{
  background: rgb(168, 79, 210);
  border-radius: 0px 0px 10px 10px;
  display: none;
}

.ul1>li:hover>ul
{
  display: block;
}

.ul1>li:hover
{
  background: rgb(109, 23, 150);
}

.ul2>li>a:hover
{
  display: inline-block;
  border-radius: 10px;
  width: 85%;
  height: 2em;
  background: rgb(208, 127, 123);
  font-weight: bold;
}

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>6-56课堂演示</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<nav>
    <ul class="ul1">
        <li>
            <a href="">首页</a>
            <ul class="ul2">
                <li><a href="">新闻</a></li>
                <li><a href="">科技</a></li>
                <li><a href="">财经</a></li>
                <li><a href="">读书</a></li>
            </ul>
        </li>
        <li>
            <a href="">首页</a>
            <ul class="ul2">
                <li><a href="">新闻</a></li>
                <li><a href="">科技</a></li>
                <li><a href="">财经</a></li>
                <li><a href="">读书</a></li>
            </ul>
        </li>
        <li>
            <a href="">首页</a>
            <ul class="ul2">
                <li><a href="">新闻</a></li>
                <li><a href="">科技</a></li>
                <li><a href="">财经</a></li>
                <li><a href="">读书</a></li>
            </ul>
        </li>
    </ul>
</nav>
</body>
</html>

练习.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容

  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,861评论 0 4
  • 转载请声明 原文链接 关注公众号获取更多资讯 这篇文章主要总结H5的一些新增的功能以及一些基础归纳,这里只是一个提...
    程序员poetry阅读 9,071评论 22 225
  • 一、HTML5 1.1 认识HTML5 HTML5并不仅仅只是作为HTML标记语言的一个最新版本,更重要的是它制定...
    福尔摩鸡阅读 15,875评论 14 51
  • 选择器 CSS3中新添加了很多选择器,解决了很多之前需要用javascript才能解决的布局问题。· elemen...
    lovelydong阅读 479评论 0 2
  • 作者:blue(又名一书and一世界) 我的github**用途: **当作字典来查 some websites ...
    一书and一世界阅读 1,196评论 2 19