关于怎么触发transition的效果,前面有篇文章说过一次,《关于transition和animation》,而且在实际的项目生产中,也是一直这么使用的,因为明明知道直接添加class是无法触发transition效果的,那何必再做这些无用功呢?而且很确定的是,之前也做过各种测试的。

然而,事实真的这样吗?

今天突然想到是不是应该再看看transition这个属性。

其中的属性不做一一介绍,我自己也没有那么透彻的理解每一个属性值的每一小点,我们这里依然聚焦于怎么触发transition这个变形的效果。

<div class="btn-transiton">
<a href="javascript:;">触发transition-show</a>
<a href="javascript:;">触发transition-hide</a>
</div>
<div class="transition"></div>

  比较简单的html结构,看看css

.btn-transiton {
line-height: 2;
padding: 0.5rem;
} .transition {
width: 2rem;
height: 2rem;
background: #ccc;
opacity: 1;
transition: height 1s ease-in;
}

  刚开始的时候,肯定是通过js设置css属性,让其达到触发transition动画效果的目的。

 var height = $(".transition").height();
$(".btn-transiton").on("click", "a:first-child", function () {
$(".transition").css("height", 0);
}).on("click", "a:last-child", function () {
$(".transition").css("height", height);
});

  看到这样的代码,当然就会想到利用height()函数替代:

var height = $(".transition").height()
$(".btn-transiton").on("click", "a:first-child", function () {
$(".transition").height(0);
}).on("click", "a:last-child", function () {
$(".transition").height(height);
});

  当走到这一步的时候,如果不试验一下使用添加删除class触发这个transition效果,能死心吗?

为css添加:

.transition.active-height {
height: 0;
}

 js改造:

var height = $(".transition").height()
$(".btn-transiton").on("click", "a:first-child", function () {
$(".transition").addClass("active-height");
}).on("click", "a:last-child", function () {
$(".transition").removeClass("active-height");
});

  此时,令人意想不到的事情发生了,添加删除class,居然也可以触发transition的动画效果了,究竟什么时候可以的?或者哪一版本浏览器开始支持这一特性的?并不仅仅是chrome浏览器支持,firefox,safari也都可以支持。

当前电脑上安装的chrome版本为:

firefox版本为:

Safari版本:

为了避免出现仅仅是height属性才有这种情况发生,使用opacity、transform属性,也能够触发相同效果,甚至同时触发width、height、all都能够实现。

这样就可以减少很多,不必要的js写css的过程!

 

关于CSS3属性transition的触发的更多相关文章

  1. 理解CSS3属性transition

    一.说明 1.1 定义和用法 transition 属性是一个简写属性,用于设置四个过渡属性: transition-property:规定设置过渡效果的CSS属性的名称. transition-du ...

  2. css3属性 transition transform

    1.transition 译:过渡,转变 可以设置过渡属性 transition: property duration timing-function delay; transition-proper ...

  3. CSS3属性transition

    CSS3 Transitions 指定过渡 语法: transition: property duration timing-function delay;     参数一: transition-p ...

  4. 使用css3属性transition实现页面滚动

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...

  5. IT兄弟连 HTML5教程 CSS3属性特效 transition过渡

    CSS3的transition允许css的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值. transitio ...

  6. css3中transition属性详解

    css3中通过transition属性可以实现一些简单的动画过渡效果~ 1.语法 transition: property duration timing-function delay; transi ...

  7. 使用CSS3的“transition ”属性控制长宽度的缓慢变化

    有时候我们可能会想要改变某个资源信息的长宽度,比如改变某个div的宽度,而且需要让这个宽度缓慢改变,而不是突然就改变了.这时候你可能会想到使用jquery的animate()函数,不过这个方法既得引用 ...

  8. CSS3 : transition 属性

    CSS3的 transition 属性用于状态过度效果! 1.语法: transition: property duration timing-function delay; -moz-transit ...

  9. 通过CSS3属性值的变化实现动画效果+触发这些动画产生交互

    css3过渡 transition 兼容性:IE10+ transition: none | all | property 默认为none all 表示所有属性过渡 property 指定属性值,如c ...

随机推荐

  1. JSON 反序列化Lis<T>

    JavaScriptSerializer sr = new JavaScriptSerializer();             //List<CSISSIQuestionLibrary> ...

  2. Java面试题 corejava(一)

    1.面向对象的特征有哪些方面? [基础] 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问 ...

  3. Swoole来实现实时异步任务队列

    假如要发100封邮件,for循环100遍,用户直接揭竿而起,什么破网站!但实际上,我们很可能有超过1万的邮件.怎么处理这个延迟的问题?答案就是用异步.把“发邮件”这个操作封装,然后后台异步地执行1万遍 ...

  4. 【python】序列化和反序列化

    序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json库与pickle库 ...

  5. onsubmit ajax return false 无效

    var flat=false; return flat; async:false, 是重点.   执行ajax时return false的function 与onsubmit()不是同一个函数,所以无 ...

  6. 开始使用Chronograf(官方说明)

    地址:https://docs.influxdata.com/chronograf/v1.6/introduction/getting-started/ 开始使用Chronograf 在本页面 入门概 ...

  7. WPF DataGrid添加编号列

    WPF DataGrid添加编号列? 第一步:<DataGridTemplateColumn Header="编号" Width="50" MinWidt ...

  8. phinx 使用指南

    一 使用 第一步 安装 composer require robmorgan/phinx第二步 初始化php vendor/robmorgan/phinx/bin/phinx init创建目录db/m ...

  9. 【windows】之查看端口占用

    打开cmd界面 netstat -aon|findstr "80" 查看80端口占用PIDtasklist|findstr "2448" 找到占用程序直接杀死( ...

  10. HashMap的自定义实现

    一.背景: HashMap到底是怎么实现的? 一对一对的存放,通过key找value:map的键不能重复:自己怎么实现呢?   代码: Wife.java  辅助类 package com.cy.co ...