Les attributs utilisés dans la transition CSS3 sont : 1. transition ; 2. transition-property ; 3. transition-duration ; 4. transition-timing-function ;
L'environnement d'exploitation de ce tutoriel : système Windows7, version CSS3&&HTML5, ordinateur Dell G3.
La transition CSS3 est l'effet d'un élément passant progressivement d'un style à un autre.
Pour y parvenir, deux choses doivent être précisées :
Spécifiez la propriété CSS à laquelle l'effet doit être ajouté
Spécifiez la durée de l'effet.
Grâce à l'attribut de transition, les développeurs web front-end peuvent implémenter des effets interactifs d'animation simples sans JavaScript. Pour y parvenir, une chose doit être implémentée, c'est-à-dire spécifier la durée de l'effet.
css3 transition property
Property | Description | CSS |
---|---|---|
transition | Abbreviation, utilisée pour définir quatre propriétés de transition dans une seule propriété. | 3 |
transition-property | Spécifie le nom de la propriété CSS qui applique la transition. | 3 |
transition-duration | Définissez la durée de l'effet de transition. La valeur par défaut est 0. | 3 |
transition-timing-function | spécifie la courbe temporelle de l'effet de transition. La valeur par défaut est « facilité ». | 3 |
transition-delay | Spécifie quand l'effet de transition commence. La valeur par défaut est 0. | 3 |
Attribut composite
Parmi ces quatre sous-attributs de transition, seul
transition: <transition-property> || <transition-duration> || <transition-timing-function> || <transition-delay></transition-delay></transition-timing-function></transition-duration></transition-property>
[Note] Les quatre sous-propriétés de transition ne peuvent pas être séparées par des virgules et ne peuvent être séparées que par des espaces. Parce que ceux séparés par des virgules représentent différents attributs (l'attribut de transition prend en charge les valeurs multiples, la partie multi-valeurs sera introduite plus tard) et ceux séparés par des espaces représentent les quatre sous-attributs de transition de différents attributs.
.test { border: 1px solid red; width: 100px; height: 50px; transition: 2s;/*代表持续时间为2s,延迟时间为默认值0 */ /* transition: 1s 2s; 代表持续时间为1s,延迟时间为2s */ } .test:hover { width: 300px; }
<div class="test"></div>
Sous-propriétés associées
1, transition-property
transition-property
spécifie l'effet de transition de nom de l'attribut CSS (l'effet de transition commencera la propriété CSS spécifiée change). none : aucun style n'est spécifié, all : valeur par défaut, indiquant que tous les styles de l'élément spécifié prennent en charge l'attribut transition-property. transition-property
属性指定CSS属性的nametransition效果(transition效果时将会启动指定的CSS属性的变化)。none: 没有指定任何样式,all: 默认值,表示指定元素所有支持transition-property属性的样式。
注意:始终指定 transition-duration
属性,否则持续时间为0,transition不会有任何效果。
1)、可过渡的样式
不是所有的CSS样式值都可以过渡,只有具有中间值的属性才具备过渡效果 ,具体如下
颜色: color background-color border-color outline-color 位置: backround-position left right top bottom 长度: [1]max-height min-height max-width min-width height width [2]border-width margin padding outline-width outline-offset [3]font-size line-height text-indent vertical-align [4]border-spacing letter-spacing word-spacing 数字: opacity visibility z-index font-weight zoom 组合: text-shadow transform box-shadow clip 其他: gradient
.test { border: 1px solid red; width: 100px; height: 50px; background-color: lightblue; transition: width 2s, background-color 2s ease 0.5s; /*代表width持续时间为2s,延迟时间为默认值0; background-color持续时间2s 延迟0.5s */ } .test:hover { width: 300px; background-color: indianred; }
效果图:
2、transition-duration
transition-duration
属性规定完成过渡效果需要花费的时间(以秒或毫秒计)。默认值:0s。
[注意]该属性不能为负值 。
[注意]若该属性为0s则为默认值,若为0则为无效值。所以必须带单位 。
[注意]该值为单值时,即所有过渡属性都对应同样时间;该值为多值时,过渡属性按照顺序对应持续时间 。
3、transition-timing-function
transition-timing-function
transition-duration
, sinon la durée sera de 0 et la transition n'aura aucun effet. Toutes les valeurs de style CSSne peuvent pas faire l'objet d'une transition. Seuls les attributs avec des valeurs intermédiairespeuvent avoir des effets de transition | .test { border: 1px solid red; width: 100px; height: 50px; transition: 3s;/* 设置反向状态 */ } .test:hover { width: 300px; transition: 100ms; } Copier après la connexion Copier après la connexion /* 把浏览器的宽度拖动到小于1000px时触发 */ @media (max-width: 1000px){ .test{ width: 500px; } } Copier après la connexion Copier après la connexion | Rendu :
---|---|
[Note] Cet attribut ne peut pas être négatif. | |
[Remarque] Lorsque la valeur est une valeur unique, c'est-à-dire que tous les attributs de transition correspondent au même temps ; lorsque la valeur est composée de plusieurs valeurs, les attributs de transition correspondent à la durée dans l'ordre. | 3. L'attribut transition-timing-function |
description | |
linear | spécifie un effet de transition qui commence et se termine à la même vitesse, c'est-à-dire une vitesse uniforme. (Égal à cube-bézier(0,0,1,1)). |
ease | spécifie l'effet de transition qui commence lentement, puis devient plus rapide, puis se termine lentement (cubic-bezier(0.25,0.1,0.25,1)). |
4、transition-delay
transition-delay
属性指定何时将开始切换效果,值是指以秒为单位(S)或毫秒(ms)。默认值:0s。
[注意]该属性若为负值,无延迟效果,但过渡元素的起始值将从0变成设定值(设定值=延迟时间+持续时间)。若该设定值小于等于0,则无过渡效果;若该设定值大于0,则过渡元素从该设定值开始完成剩余的过渡效果 [注意]若该属性为0s则为默认值,若为0则为无效值。所以必须带单位 。
[注意]该值为单值时,即所有过渡属性都对应同样时间;该值为多值时,过渡属性按照顺序对应持续时间 。
过渡阶段
过渡开始时间=样式改变的时刻+过渡延迟时间;而过渡结束时间=过渡开始时间+过渡持续时间。
过渡起始值=过渡前的过渡属性值;而过渡结束值=过渡完成后的过渡属性值 。
过渡分为两个阶段:前进(forward)和反向(reverse)。若前进阶段进行一段时间后进入反向阶段,则反向阶段的初始值是前进阶段结束时的瞬时值
以hover为例,若在元素非hover态时设置transition,相当于设置的反向状态。而前进和反向是一致的。而如果在元素hover态设置transition,则前进状态以hover态设置的为准,而反向状态以非hover态设置的为准 。
.test { border: 1px solid red; width: 100px; height: 50px; transition: 3s;/* 设置反向状态 */ } .test:hover { width: 300px; transition: 100ms; }
效果:
触发方式
一般地,过渡transition的触发有三种方式,分别是伪类触发、媒体查询触发和javascript触发。其中常用伪类触发包括:hover、:focus、:active等 。
hover : 鼠标悬停触发 。
active : 用户单击元素并按住鼠标时触发 。
focus : 获得焦点时触发。
@media触发 : 符合媒体查询条件时触发 。
/* 把浏览器的宽度拖动到小于1000px时触发 */ @media (max-width: 1000px){ .test{ width: 500px; } }
(学习视频分享:css视频教程)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!