【问题标题】:Can't apply :not() to include div containers不能应用 :not() 来包含 div 容器
【发布时间】:2017-10-20 18:59:10
【问题描述】:

我正在尝试淡入屏幕上除图像之外的所有内容。我希望图像transform: scales(); 更大,而不是回到原始大小。我有两个容器框,其中包含一些文本和一个我想在图像之后全部淡入的表单。

我可以让图像设置动画,然后其他所有内容都会淡入,但 div 容器本身不会设置动画。所以屏幕上会出现两个空框,图片动画,然后div的内容淡入。

这是我的代码:

.fadeIn :not(#ipad) {
  -webkit-animation: fadeIn 3s ease;
  -moz-animation: fadeIn 3s ease;
  -ms-animation: fadeIn 3s ease;
  -o-animation: fadeIn 3s ease;
  animation: fadeIn 3s ease;
}
<div class="title fadeIn" id="title"><b>Curriculum and Instruction iPad Setup</b></div>
<div class="info-container fadeIn" id="info-container">
  <img src="img/IPad_3.png" id="ipad">
  <form action="login_complete.php" method="post" id="loginForm">
    <div class="campus-container">
      <input type="radio" name="campus" value="STE" /><span><b>Stephenville</b></span>
      <input type="radio" name="campus" value="FTW" /><span><b>Fort Worth</b></span>
    </div>
    <input type="submit" value="Submit" onclick="loadingSpinner();" />
  </form>
</div>

当我取消:not(#ipad) 时,包括图像在内的所有内容都会一起淡入。我希望图像不会在动画中出现淡入淡出。

我查看了here,但这似乎不起作用。我也找到了this,但也没找到。

已编辑:

很抱歉没有足够的css代码:

淡入

@keyframes fadeIn {
    0% { opacity: 0; }
    50% { opacity: 0; }
    100% { opacity: 1; }
}

图像动画

@keyframes zoomOut {
    0% {
        opacity: 0;
    }
    5% {
        opacity: 1;
    }
    50% {
        -webkit-transform: scale(5);
        -moz-transform: scale(5);
        -ms-transform: scale(5);
        -o-transform: scale(5);
        transform: scale(5);
    }
    100% { }
}

【问题讨论】:

  • 如果一开始#Ipad 是隐藏的,它确实不会显示出来。你需要从一开始就显示一个指定的样式....如果我理解这个问题。 您没有分享足够的 CSS 来实际展示您的问题 ...此评论只是猜测。请将缺少的 CSS 添加到您的 sn-p 以实际显示您的问题:)
  • 您只向我们展示了您的动画的名称,而不是它实际动画的属性。我猜你正在为不透明度设置动画?那么你想要的使用这种结构是不可能的,你不能为后代元素“反转”不透明度,见stackoverflow.com/q/19457057/1427878
  • #ipad 根本没有隐藏。它似乎只是跟随父容器,我想知道是否有办法让它与父容器分开。

标签: html css animation


【解决方案1】:

如果你嵌套&lt;img src="img/IPad_3.png" id="ipad"&gt;
里面&lt;div class="info-container fadeIn" id="info-container"&gt;
你不应该期望它会起作用。

仅此而已。你必须重新考虑你的文档结构。

此外,css 不允许您编写前瞻表达式,因此您别无选择,只能更改文档结构。


修复它的一种方法是:

将 info-container div 更改为:
&lt;div class="info-container fadeIn iPad" id="info-container"&gt;

并将 css 从 .fadeIn :not(#ipad) 更改为 .fadeIn:not(.iPad)

或者只是从该 div 中删除 fadeIn。


您也可以将您的 css 选择器更改为:.fadeIn {

并将您的 html 更改为:

<div class="title fadeIn" id="title"><b>Curriculum and Instruction iPad Setup</b></div>
<div class="info-container" id="info-container">
  <img src="img/IPad_3.png" id="ipad">
  <form action="login_complete.php" class="fadeIn" method="post" id="loginForm">
    <div class="campus-container">
      <input type="radio" name="campus" value="STE" /><span><b>Stephenville</b></span>
      <input type="radio" name="campus" value="FTW" /><span><b>Fort Worth</b></span>
    </div>
    <input type="submit" value="Submit" onclick="loadingSpinner();" />
  </form>
</div>

【讨论】:

  • 那是因为除了选择器之外它没有改变......
  • 抱歉。如果我从#info-container 中删除fadeIn,则容器的其余部分将不会设置动画。我希望除图像之外的所有内容都具有动画效果。
  • 如我所说。这是不可能的,除非您将图像移出 .fadeIn div
  • 不可能我的意思是不可能的,因为我的猫完全统治了世界。
  • 不,不是猫!好的,这是有道理的。感谢您的帮助。 @GottZ
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
相关资源
最近更新 更多