我正在使用以下CSS为div
的功能设置动画。.shrink
通过Java 添加到.header
.brand, .brand:visited, .brand:hover {
display: block;
position: relative;
height: 100px; width: 100px;
margin-top: 25px;
background: url('img/logo.png') no-repeat center center;
background-size: contain;
border: 1px solid #fff;
border-radius: 50%;
-webkit-transition: height 0.35s ease, width 0.35s ease, margin 0.35s ease, border-color 0.35s ease;
-moz-transition: height 0.35s ease, width 0.35s ease, margin 0.35s ease, border-color 0.35s ease;
-ms-transition: height 0.35s ease, width 0.35s ease, margin 0.35s ease, border-color 0.35s ease;
-o-transition: height 0.35s ease, width 0.35s ease, margin 0.35s ease, border-color 0.35s ease;
transition: height 0.35s ease, width 0.35s ease, margin 0.35s ease, border-color 0.35s ease;
}
header.shrink .brand {
margin: 0; padding: 0;
height: 80px; width: 80px;
border-color: transparent;
}
我想在border-color
转换上加一个0.35秒的延迟。不确定正确的符号,以免影响所有值。
还有,有没有办法只在一个方向上应用延迟?这意味着我希望在边界出现时应用延迟,但在透明时不要延迟。
问题1-如何仅为border-color
属性转换添加0.35s的延迟
这很简单。只需在单独提供给transition
属性(即border-color
的属性)的逗号分隔值的最后部分添加延迟。在提供两个时间值的简写中,第一个时间值被认为是持续时间,第二个时间值则被认为是延迟。
transition: height 0.35s ease,
width 0.35s ease,
margin 0.35s ease,
border-color 0.35s 0.35s ease; /* notice how the delay is added here alone */
问题2-如何仅在出现边框(悬停时)时添加延迟
同样非常简单的是,添加两个transition
设置——一个用于默认选择器,一个用于:hover
选择器。在:hover
选择器内的选择器中,添加延迟,因为它在border
出现时适用,而在默认选择器内的transition
中不提供任何延迟。
.brand {
display: block;
position: relative;
margin: 0;
padding: 0;
height: 80px;
width: 80px;
background: url('http://lorempixel.com/100/100') no-repeat center center;
background-size: contain;
border: 1px solid transparent;
border-radius: 50%;
transition: height 0.35s ease, width 0.35s ease, margin 0.35s ease, border-color 0.35s ease;
}
.brand:hover {
height: 100px;
width: 100px;
margin-top: 25px;
border: 1px solid #f00;
transition: height 0.35s ease, width 0.35s ease, margin 0.35s ease, border-color 0.35s 0.35s ease;
}
<div class='brand'></div>