如何在 div 中延迟背景图像的显示
How to delay the display of the background image in a div
这是我的 fiddle.
我只是想让 css 中的“background-image:
”完全加载并在 3 秒后显示并快速淡出效果,直到那时整个 div 必须是黑色。
如何在 css
或 javascript
中实现。
.initials {
position:absolute;
background:black;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
<div class="initials">A</div>
JQuery
$('.initials').css('background-image','url(http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif)');
$('.initials').fadeIn(3000);
也许像这样...虽然淡入很棘手 - AFAIK 你不能淡化背景图像 属性
setTimeout(function(){
$('.initials').css('background-image', 'url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif")');
}, 3000)
另一种选择是将 HTML 分成 3 个部分,z-index 最高的字母,然后是星星层上的黑色层...然后淡出黑色层
另一种选择是有一个单独的 class 并将 css 分配给 class。检查这个 fiddle
首先你在document.ready中设置了一个方法:
$( document ).ready(function() {
var changeClass = function() {
$(".initials").addClass("with-image");
}
setTimeout(changeClass, 3000);
});
然后在 css 中将首字母更改为:
.initials {
position:absolute;
background:black;
background-COLOR: black;
...
并添加:
.with-image {
background-color:none !important;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
}
您可以使用背景图像 属性 创建绝对定位 div,然后使用 animate.css 添加动画,而无需自己创建关键帧
http://jsfiddle.net/n9wd4ver/5/
.initials {
width: 100%;
height: 100%;
}
.initials.initials-text {
padding:20px 0px;
position: relative;
z-index: 2;
}
.initials.initials-background {
position: absolute;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
-webkit-animation-delay: 3s;
-moz-animation-delay: 3s;
-o-animation-delay: 3s;
animation-delay: 3s;
z-index: 1;
}
.initials-container {
height: 100%;
margin-top:20px;
margin-left:20px;
position:relative;
background:black;
color:white;
width:60px;
text-align:center;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
HTML:
<div class="initials-container">
<div class="initials initials-background animated fadeIn"></div>
<div class="initials initials-text">A</div>
</div>
编辑: OP 在评论中询问如何检查图像是否已加载。我假设你不想使用 jQuery,所以你可以使用一个名为 imagesLoaded 的库(它在有和没有 jQuery 的情况下都有效)并检查以这种方式加载的图像:
http://jsfiddle.net/n9wd4ver/7/
CSS
.initials {
width: 100%;
height: 100%;
}
.initials.initials-text {
padding:20px 0px;
position: relative;
z-index: 2;
}
#initials-background {
position: absolute;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
-webkit-animation-delay: 3s;
-moz-animation-delay: 3s;
-o-animation-delay: 3s;
animation-delay: 3s;
z-index: 1;
opacity: 0;
}
#initials-background.animated {
opacity: 1;
}
.initials-container {
margin-top:20px;
margin-left:20px;
height: 100%;
position:relative;
background:black;
color:white;
width:60px;
text-align:center;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
HTML
<div class="initials-container">
<div id="initials-background" class="initials fadeIn">
</div>
<div class="initials initials-text">
A
</div>
</div>
Javascript
imagesLoaded( '#initials-background', { background: true }, function() {
console.log("image loaded");
var d=document.getElementById("initials-background");
d.className=d.className +" animated";
});
稍微改动一下,我可能只需要 CSS3 就可以达到你想要的效果。
检查fiddle:http://jsfiddle.net/w11r4o3u/
CSS:
.initials {
position:relative;
background:black;
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
.initials .text {
position: relative;
}
@-webkit-keyframes test {
0% {
opacity: 0;
}
100% {
opacity: 1
}
}
.initials:before{
content: "";
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
-webkit-animation-name: test;
-webkit-animation-duration: 3s;
-webkit-animation-fill-mode: forwards;
-webkit-animation-timing-function: ease-out;
}
HTML:
<div class="initials"><div class="text">A</div></div>
已编辑:
现在动画在 3 秒后开始,需要 0.3 秒完成。这是fiddle:http://jsfiddle.net/w11r4o3u/1/
要调整发生淡入的"velocity",编辑-webkit-animation-duration: .3s;
如果要调整动画"delay"开始,编辑-webkit-animation-delay: 3s;
这里是解决方法,背景图片会在几秒后出现。
Html
<div class="initials">A</div>
Css
.initials {
position:absolute;
background-color:#000;
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
脚本
$(document).ready(function() {
setTimeout(function(){
$('.initials').css('background-image', 'url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif")');
}, 3000);
});
您可以尝试这样的操作:
注意:您可以通过将 url 替换为高清图像 url 来进行测试。
function loadImage() {
var url = 'http://www.webgranth.com/wp-content/uploads/2013/04/Ceric6.gif';
var img = $("<img />").attr('src', url)
.on('load', function() {
$(".test").append(img).fadeIn(400);
});
}
(function() {
setTimeout(function() {
$(".bgImage").fadeIn(400);
}, 3000);
loadImage()
})()
.content {
z-index: 1;
position: relative;
margin-top: 20px;
text-align: center
}
.initials {
position: fixed;
background: black;
color: white;
width: 60px;
height: 60px;
margin-top: 20px;
text-align: center;
margin-left: 20px;
font-size: 17px;
letter-spacing: 5px;
box-shadow: 0px 2px 3px rgba(0, 0, 0, .15);
overflow: hidden;
white-space: nowrap;
}
.bgImage {
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
width: 100%;
height: 60px;
position: absolute;
display: none;
z-index: 0;
}
.test {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="initials">
<div class="bgImage"></div>
<div class="content">A</div>
</div>
<div class="test"></div>
Reference - Asychronously load images with jQuery.
.initials {
position:absolute;
background:black;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
<div class="initials">A</div>
这是我的 fiddle.
我只是想让 css 中的“background-image:
”完全加载并在 3 秒后显示并快速淡出效果,直到那时整个 div 必须是黑色。
如何在 css
或 javascript
中实现。
.initials {
position:absolute;
background:black;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
<div class="initials">A</div>
JQuery
$('.initials').css('background-image','url(http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif)');
$('.initials').fadeIn(3000);
也许像这样...虽然淡入很棘手 - AFAIK 你不能淡化背景图像 属性
setTimeout(function(){
$('.initials').css('background-image', 'url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif")');
}, 3000)
另一种选择是将 HTML 分成 3 个部分,z-index 最高的字母,然后是星星层上的黑色层...然后淡出黑色层
另一种选择是有一个单独的 class 并将 css 分配给 class。检查这个 fiddle
首先你在document.ready中设置了一个方法:
$( document ).ready(function() {
var changeClass = function() {
$(".initials").addClass("with-image");
}
setTimeout(changeClass, 3000);
});
然后在 css 中将首字母更改为:
.initials {
position:absolute;
background:black;
background-COLOR: black;
...
并添加:
.with-image {
background-color:none !important;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
}
您可以使用背景图像 属性 创建绝对定位 div,然后使用 animate.css 添加动画,而无需自己创建关键帧
http://jsfiddle.net/n9wd4ver/5/
.initials {
width: 100%;
height: 100%;
}
.initials.initials-text {
padding:20px 0px;
position: relative;
z-index: 2;
}
.initials.initials-background {
position: absolute;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
-webkit-animation-delay: 3s;
-moz-animation-delay: 3s;
-o-animation-delay: 3s;
animation-delay: 3s;
z-index: 1;
}
.initials-container {
height: 100%;
margin-top:20px;
margin-left:20px;
position:relative;
background:black;
color:white;
width:60px;
text-align:center;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
HTML:
<div class="initials-container">
<div class="initials initials-background animated fadeIn"></div>
<div class="initials initials-text">A</div>
</div>
编辑: OP 在评论中询问如何检查图像是否已加载。我假设你不想使用 jQuery,所以你可以使用一个名为 imagesLoaded 的库(它在有和没有 jQuery 的情况下都有效)并检查以这种方式加载的图像:
http://jsfiddle.net/n9wd4ver/7/
CSS
.initials {
width: 100%;
height: 100%;
}
.initials.initials-text {
padding:20px 0px;
position: relative;
z-index: 2;
}
#initials-background {
position: absolute;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
-webkit-animation-delay: 3s;
-moz-animation-delay: 3s;
-o-animation-delay: 3s;
animation-delay: 3s;
z-index: 1;
opacity: 0;
}
#initials-background.animated {
opacity: 1;
}
.initials-container {
margin-top:20px;
margin-left:20px;
height: 100%;
position:relative;
background:black;
color:white;
width:60px;
text-align:center;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
HTML
<div class="initials-container">
<div id="initials-background" class="initials fadeIn">
</div>
<div class="initials initials-text">
A
</div>
</div>
Javascript
imagesLoaded( '#initials-background', { background: true }, function() {
console.log("image loaded");
var d=document.getElementById("initials-background");
d.className=d.className +" animated";
});
稍微改动一下,我可能只需要 CSS3 就可以达到你想要的效果。 检查fiddle:http://jsfiddle.net/w11r4o3u/
CSS:
.initials {
position:relative;
background:black;
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
.initials .text {
position: relative;
}
@-webkit-keyframes test {
0% {
opacity: 0;
}
100% {
opacity: 1
}
}
.initials:before{
content: "";
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
-webkit-animation-name: test;
-webkit-animation-duration: 3s;
-webkit-animation-fill-mode: forwards;
-webkit-animation-timing-function: ease-out;
}
HTML:
<div class="initials"><div class="text">A</div></div>
已编辑:
现在动画在 3 秒后开始,需要 0.3 秒完成。这是fiddle:http://jsfiddle.net/w11r4o3u/1/
要调整发生淡入的"velocity",编辑
-webkit-animation-duration: .3s;
如果要调整动画"delay"开始,编辑
-webkit-animation-delay: 3s;
这里是解决方法,背景图片会在几秒后出现。
Html
<div class="initials">A</div>
Css
.initials {
position:absolute;
background-color:#000;
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
脚本
$(document).ready(function() {
setTimeout(function(){
$('.initials').css('background-image', 'url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif")');
}, 3000);
});
您可以尝试这样的操作:
注意:您可以通过将 url 替换为高清图像 url 来进行测试。
function loadImage() {
var url = 'http://www.webgranth.com/wp-content/uploads/2013/04/Ceric6.gif';
var img = $("<img />").attr('src', url)
.on('load', function() {
$(".test").append(img).fadeIn(400);
});
}
(function() {
setTimeout(function() {
$(".bgImage").fadeIn(400);
}, 3000);
loadImage()
})()
.content {
z-index: 1;
position: relative;
margin-top: 20px;
text-align: center
}
.initials {
position: fixed;
background: black;
color: white;
width: 60px;
height: 60px;
margin-top: 20px;
text-align: center;
margin-left: 20px;
font-size: 17px;
letter-spacing: 5px;
box-shadow: 0px 2px 3px rgba(0, 0, 0, .15);
overflow: hidden;
white-space: nowrap;
}
.bgImage {
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
width: 100%;
height: 60px;
position: absolute;
display: none;
z-index: 0;
}
.test {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="initials">
<div class="bgImage"></div>
<div class="content">A</div>
</div>
<div class="test"></div>
Reference - Asychronously load images with jQuery.
.initials {
position:absolute;
background:black;
background-image: url("http://static.tumblr.com/lxn1yld/Hnxnxaqya/space.gif");
color:white;
margin-top:20px;
padding-top:20px;
padding-bottom:20px;
width:60px;
text-align:center;
margin-left:20px;
font-size:17px;
letter-spacing:5px;
box-shadow:0px 2px 3px rgba(0,0,0,.15);
overflow: hidden;
white-space: nowrap;
}
<div class="initials">A</div>