CSS 过渡淡入

Posted

技术标签:

【中文标题】CSS 过渡淡入【英文标题】:CSS transition fade in 【发布时间】:2012-07-24 12:47:09 【问题描述】:

所以我以前使用过 CSS 过渡,但我有一个独特的案例。我正在编写一个用于创建模态的自定义插件。本质上,我即时创建了一个 div document.createElement('div') 并将其附加到带有几个类的主体中。这些类定义颜色和不透明度。我想使用严格的 CSS 来淡入这个 div,但是改变状态似乎很困难,因为它们需要一些用户交互。

尝试了一些高级选择器希望它能够改变状态,尝试媒体查询希望改变状态...寻找任何想法和建议,如果可能的话,我真的希望将其保留在 CSS 中

【问题讨论】:

不确定我是否正确理解了这个问题。您是否正在寻找不需要用户交互来让 div 淡入的解决方案? 是的,这是正确的......我将以编程方式创建一个 div 并希望它淡入是 CSS 【参考方案1】:

这些天对 CSS 关键帧的支持非常好:

.fade-in 
	opacity: 1;
	animation-name: fadeInOpacity;
	animation-iteration-count: 1;
	animation-timing-function: ease-in;
	animation-duration: 2s;


@keyframes fadeInOpacity 
	0% 
		opacity: 0;
	
	100% 
		opacity: 1;
	
<h1 class="fade-in">Fade Me Down Scotty</h1>

【讨论】:

如果不是以编程方式添加元素,您仍然希望使用 JS 添加此类,因为您可能希望等待 document.ready,而纯 CSS 不会这样做。 这并没有回答如何使用 CSS 过渡来实现这一点的问题。 干杯伙伴,我一直在尝试 5 种不同的方法来让它与 JS 和 CSS 过渡一起工作,这是第一个按预期工作的方法,每次都通过卡盘在每个页面上工作它进入body类。 :) @Zaqx 过渡 CSS,触发器由你决定。 @DigitalDesignDj 这是页面顶部问题的引用:“我想严格使用 CSS 来淡入这个 div,但是改变状态似乎很困难 b/ c 他们需要一些用户交互。”【参考方案2】:

好的,首先我不确定当你使用(document.createElement('div')) 创建一个 div 时它是如何工作的,所以我现在可能错了,但是不能为此使用 :target 伪类选择器?

如果您查看下面的代码,您可以看到我使用了一个链接来定位 div,但在您的情况下,可能可以从脚本中定位 #new 并且方式让 div 在没有用户交互的情况下淡入,还是我想错了?

这是我的示例的代码:

html

<a href="#new">Click</a> 
<div id="new">
    Fade in ... 
</div>

CSS

#new 
    width: 100px;
    height: 100px;
    border: 1px solid #000000;
    opacity: 0;    



#new:target 
    -webkit-transition: opacity 2.0s ease-in;
       -moz-transition: opacity 2.0s ease-in;
         -o-transition: opacity 2.0s ease-in;
                                  opacity: 1;

...这是jsFiddle

【讨论】:

感谢帮助,尝试通过各种技术手动触发它,但似乎没有任何效果。看到这篇文章***.com/questions/8101854/…,看来他们也放弃了=( 好的。如果我想到其他可能解决问题的方法,我会回复你。 对于遇到此问题的任何人,这里有一个关于转换的很好的参考css-tricks.com/almanac/properties/t/transition【参考方案3】:

我相信您可以将Class 添加到元素中。但无论哪种方式,您都必须使用 Jquery 或 reg JS

div 
  opacity:0;
  transition:opacity 1s linear;*

div.SomeClass 
  opacity:1;

【讨论】:

【参考方案4】:

我总是喜欢对小的 CSS 类使用 mixin,比如淡入/淡出,以防你想在多个类中使用它们。

@mixin fade-in 
    opacity: 1;
    animation-name: fadeInOpacity;
    animation-iteration-count: 1;
    animation-timing-function: ease-in;
    animation-duration: 2s;


@keyframes fadeInOpacity 
    0% 
        opacity: 0;
    
    100% 
        opacity: 1;
    

如果你不想使用mixins,你可以创建一个普通的类.fade-in。

【讨论】:

以上是关于CSS 过渡淡入的主要内容,如果未能解决你的问题,请参考以下文章

在 css jQuery 中应用淡入淡出到粘性导航的过渡淡入淡出

CSS 不透明度过渡淡入一行

使用 CSS 过渡的滑动 + 淡入淡出效果

CSS过渡在悬停时淡入淡出

淡入淡出/ css 类过渡发生乱序

Vue CSS淡入/淡出视频过渡