css3---transform&transition之toolTip动画效果的实现

知识点总结:

1、元素设置了绝对定位后会自动变为块级元素;

2、父元素设置为相对定位,子元素设为绝对定位,然后对子元素作如下设置会得到不同的效果:

a、bottom:100%----------------->子元素的底端和父元素的顶端对齐重合(如下图所示:黑色框为父元素~白色圆为子元素~)

html代码:

<div id="father">
    <div id="child">
    </div>
</div>

css代码:

<style>
        #father {
            background: #000;
            width: 300px;
            height: 200px;
            position: relative;
            top:300px;//为了让父元不靠在屏幕左上方~稍微设置了left和top
            left: 600px;
        }

        #child {
            background: #fff;
            width: 100px;
            height: 100px;
            -webkit-border-radius: 50%;
            -moz-border-radius: 50%;
            border-radius: 50%;
            position: absolute;
            bottom: 100%;

        }
    </style>

 

 

b、top:100%-------->子元素的顶端和父元素底端对齐(即子元素相对于父元素向下移动父元素的高度)

html代码如上所示,css代码如下:

<style>
        #father {
            background: #000;
            width: 300px;
            height: 200px;
            position: relative;
            top:300px;
            left: 600px;
        }

        #child {
            background: #fff;
            width: 100px;
            height: 100px;
            -webkit-border-radius: 50%;
            -moz-border-radius: 50%;
            border-radius: 50%;
            position: absolute;
            top: 100%;

        }
    </style>

c、至于bottom:0%和top:0%也依次类推

    bottom:0%  即子元素以父元素的底部为基准向上推父元素高度的0%

    top:0%  即子元素以父元素的顶部为基准向下推父元素高度的0%

 

基于transform和transition实现动画效果思路总结:

html代码如下:

   <ul>
        <li>
            <a href="#" class="tooltip tooltip-effect-5">
                Contact
                <span class="tooltip-content">
                    <i class="fa fa-envelope fa-fw"></i>
                </span>
            </a>
        </li>
    </ul>

 

一般而言我们设置元素的动画都是有事件触发的~比如初始时元素是一个状态~然后鼠标移到上面时开始动画~于是有:

1、设置元素开始时的显示效果:

css代码(采用less编写)

.tooltip-effect-5 .tooltip-content {//定义加了.tooltip-effect-5类的span的初始样式
  -webkit-transform: scale3d(0, 0, 0);
     -moz-transform: scale3d(0, 0, 0);
      -ms-transform: scale3d(0, 0, 0);
       -o-transform: scale3d(0, 0, 0);
          transform: scale3d(0, 0, 0);
  -webkit-transform-origin: center bottom;
     -moz-transform-origin: center bottom;
      -ms-transform-origin: center bottom;
       -o-transform-origin: center bottom;
          transform-origin: center bottom;

  -webkit-transition: all 0.3s;
     -moz-transition: all 0.3s;
      -ms-transition: all 0.3s;
       -o-transition: all 0.3s;
          transition: all 0.3s;


  i {
    -webkit-transform: translate3d(0, 20px, 0);
       -moz-transform: translate3d(0, 20px, 0);
        -ms-transform: translate3d(0, 20px, 0);
         -o-transform: translate3d(0, 20px, 0);
            transform: translate3d(0, 20px, 0);
    -webkit-transition: all 0.3s;
       -moz-transition: all 0.3s;
        -ms-transition: all 0.3s;
         -o-transition: all 0.3s;
            transition: all 0.3s;
               opacity: 0;
  }
}

2、定义鼠标hover时的样式:

css代码(采用less编写)

.tooltip:hover .tooltip-content,
.tooltip:hover .tooltip-content i {
  opacity: 1;
  //定义气泡最终的显示效果~在x、y、z上滑动为0,在x、y、z上旋转为0度,在x、y、z上缩放比例为1
  -webkit-transform: translate3d(0, 0, 0) rotate3d(1, 1, 1, 0) scale3d(1, 1, 1);
     -moz-transform: translate3d(0, 0, 0) rotate3d(1, 1, 1, 0) scale3d(1, 1, 1);
      -ms-transform: translate3d(0, 0, 0) rotate3d(1, 1, 1, 0) scale3d(1, 1, 1);
       -o-transform: translate3d(0, 0, 0) rotate3d(1, 1, 1, 0) scale3d(1, 1, 1);
          transform: translate3d(0, 0, 0) rotate3d(1, 1, 1, 0) scale3d(1, 1, 1);
}

3、这样定义好后在注意在 设置元素开始时的显示效果时我们还写了 transition: all 0.3s;的语句~这里写上all~那在鼠标hover时~程序会自动检测所有发生变换的属性~并按照定义的时间(0.3s)进行一个过渡的显示~于是就实现了动画~当然我们也可以手动添加希望发生过渡变化的属性~比如把上面的all改成opacity~那就只有opacity(透明度)会发生一个从0到1的过渡变化~过渡时间为0.3s。

 

另外小结一下transform后面跟的内容的含义:

1、translate3d()-------设置x、y、z 上平移的距离单位为像素

    注意:虽然三轴上的变换也可以分别用translateX,translateY,translateZ来设置~不过推荐使用translate3d~这样不仅方便设置三轴上的变换~而且在手持设备上也会开启     加速

 

2、rotate3d(1,1,1,45deg)--------设置x、y、z 上的旋转的角度~前三个参数为0~1的数值~最后一个参数规定旋转的度数~那前三个参数可以理解为旋转规定度数的百分之几

 

3、scale3d(1,1,1)-----------设置x、y、z 上的缩放比~三个参数的取值也是0~1

 

源码地址:https://github.com/x-shadow-x/toolTip

在线预览:http://x-shadow-x.github.io/toolTip/

 

posted @ 2015-11-11 11:46  Liujunyan_x  阅读(577)  评论(0编辑  收藏  举报