如何使媒体查询来回平滑过渡?

How to make smooth media-query transition back and forth?

我整天都在用这个挖掘,但无法使其正常工作。我不是编码员,所以也许这就是问题所在。无论如何,我正在尝试让我的徽标在屏幕尺寸发生变化时显示得很好。我意识到我不能用 display:none;至 display:block;所以我尝试了可见性、不透明度和高度过渡。

如果您查看下面的这段代码,您会发现当从大屏幕变为小屏幕时,在淡出之前会出现某种延迟,然后播放高度动画。但是,如果您从较小的 window 变大,它的转换速度会快 2 倍。我不确定如何让它反转,所以动画来回流畅。我尝试使用网络上的大量片段进行播放,但无法让我正确控制动画。

我的想法是在移动设备上隐藏徽标,但是当人们翻转平板电脑时,一个很好的过渡会让徽标出现在更大的屏幕上(不仅是移动设备,只需重新调整桌面浏览器的大小就会让它看起来更专业).希望能帮到你。

.wrapper {
 width: 500px;
 background-color: #0C6;
}
.nav {
 background-color: #69C;
}
.logo {
 max-height: 0px;
 background-color: #FC3;
   -moz-transition: 1s;
  -o-transition: 1s;
  -webkit-transition: 1s;
  transition: 1s;
 visibility: hidden;
 opacity: 0;
} 
@media screen and (min-width: 500px){
.logo {
 max-height: 200px;
 visibility: visible;
 opacity: 1;
} 
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>

</head>

<body>
<div class="wrapper">
  <div class="logo">logo<br>
    <br>
    <br>
    <br>
  </div>
  <div class="nav">nav</div>
</div>
</body>
</html>

您需要在两端进行过渡,而您的过渡值无效:

.logo {
    max-height: 0px;
    background-color: #FC3;
    -webkit-transition: max-height 1s linear, opacity 1s linear;        
       -moz-transition: max-height 1s linear, opacity 1s linear;
         -o-transition: max-height 1s linear, opacity 1s linear;
            transition: max-height 1s linear, opacity 1s linear;
    visibility: hidden;
    opacity: 0;
}   

@media screen and (min-width: 500px){
    .logo {
        max-height: 200px;
        visibility: visible;
        opacity: 1;
        -webkit-transition: max-height 1s linear, opacity 1s linear;
           -moz-transition: max-height 1s linear, opacity 1s linear;
             -o-transition: max-height 1s linear, opacity 1s linear;
                transition: max-height 1s linear, opacity 1s linear;
    }   
}

好的,经过一番研究和研究,终于成功了。一旦我学会了控制两侧都有延迟的动画,它就变得更容易了。

.wrapper {
 width: 500px;
 background-color: #0C6;
}
.nav {
 background-color: #69C;
}
.logo {
    height: 0px;
    background-color: #FC3;
    visibility: hidden;
 opacity: 0;
 -webkit-transition: visibility 0.5s linear, opacity 0.5s linear, height 0.5s linear 0.8s;
 -moz-transition: visibility 0.5s linear, opacity 0.5s linear, height 0.5s linear 0.8s;
    -o-transition: visibility 0.5s linear, opacity 0.5s linear, height 0.5s linear 0.8s;
    transition: visibility 0.5s linear, opacity 0.5s linear, height 0.5s linear 0.8s;
} 
@media screen and (min-width: 500px){
.logo {
    height: 100px;
    visibility: visible;
 opacity: 1;
 -webkit-transition: height 0.5s linear 0.3s, visibility 0.5s linear 0s, opacity 0.5s linear 1s;
 -moz-transition: height 0.5s linear 0.3s, visibility 0.5s linear 0s, opacity 0.5s linear 1s;
    -o-transition: height 0.5s linear 0.3s, visibility 0.5s linear 0s, opacity 0.5s linear 1s;
    transition: height 0.5s linear 0.3s, visibility 0.5s linear 0s, opacity 0.5s linear 1s;
} 
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<div class="wrapper">
  <div class="logo">logo<br>
    <br>
    <br>
    <br>
  </div>
  <div class="nav">nav</div>
</div>
</body>
</html>

感谢以下内容: http://www.greywyvern.com/?post=337 和 Rémi Breton 回答: CSS transition shorthand with multiple properties?

希望这对其他人也有用!