亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 css 過渡應用于背景圖像更改?

如何將 css 過渡應用于背景圖像更改?

DIEA 2021-11-04 10:47:46
如果我使用下面的簡單 JS 來更改計時器上的背景圖像,我是否可以應用 CSS 過渡來使它們淡入而不是立即交換?var images = new Array(     '../images/pic1.jpg'    ,'../images/pic2.jpg'    ,'../images/pic3.jpg');var i = 0;function swap() {    var elm = document.querySelector('.myCSSClass');    if (i >= images.length) { i = 0 };    elm.style.backgroundImage = 'url(' + images[i] + ')';    i += 1;}window.onload = setInterval(swap, 2000);例如,我正在嘗試使用 CSS:.myCSSClass{      transition: background-image linear 0.3s;}但沒有得到任何結果。我覺得這是不可能的,因為 javascript 只是覆蓋圖像?
查看完整描述

1 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

您只需要確保最初加載所有圖像以進行轉換,或者每次調用新圖像時都會突然更改,因為它將加載或者您必須等待一個循環,因為您的腳本將加載該周期內的圖像。


var images = new Array(

  'https://picsum.photos/id/0/300/300', 

  'https://picsum.photos/id/10/300/300', 

  'https://picsum.photos/id/15/300/300'

);

var i = 0;


function swap() {

  var elm = document.querySelector('.box');

  if (i >= images.length) {

    i = 0

  };

  elm.style.backgroundImage = 'url(' + images[i] + ')';

  i += 1;

}


window.onload = setInterval(swap, 2000);

.box {

  transition: background-image linear 0.5s;

  width: 200px;

  height: 200px;

  background-size: cover;

  

  /* This will force the initial load of all the images*/

  background-image:

    url(https://picsum.photos/id/0/300/300),

    url(https://picsum.photos/id/10/300/300),

    url(https://picsum.photos/id/15/300/300);

}

<div class="box"></div>

在上面,您只會在某些瀏覽器(如 chrome)上褪色。這是我將考慮另一層并依賴不透明度變化的另一個想法:

var images = new Array(

  'https://picsum.photos/id/0/300/300', 

  'https://picsum.photos/id/10/300/300', 

  'https://picsum.photos/id/15/300/300'

);

var i = 0;


function swap() {

  var elm = document.querySelector('.box');

  if (i >= images.length) {

    i = 0

  };

  elm.style.backgroundImage = 'url(' + images[i] + ')';

  i += 1;

}


window.onload = setInterval(swap, 2000);

.box {

  width: 200px;

  height: 200px;

  background-size: 0 0;

  

  /* This will force the initial load of all the images*/

  background-image:

    url(https://picsum.photos/id/0/300/300),

    url(https://picsum.photos/id/10/300/300),

    url(https://picsum.photos/id/15/300/300);

  position:relative;

  z-index:0;

}

.box:before {

  content:"";

  position:absolute;

  z-index:-1;

  top:0;

  left:0;

  right:0;

  bottom:0;

  background-image:inherit;

  background-size:cover;

  animation:op 1s alternate linear infinite 1s;

}


@keyframes op {

   to {

     opacity:0;

   }

}

<div class="box"></div>


查看完整回答
反對 回復 2021-11-04
  • 1 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號