解決js控制元素背景圖片切換時的閃屏問題
解決js控制元素背景圖片切換時的閃屏問題
看一個例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.div1 {
width: 100vw;
height: 100vh;
background-position: center;
background-size: cover;
}
.bg1 {
background-image: url('./img/bg1.png');
}
.bg2 {
background-image: url('./img/bg2.png');
}
</style>
</head>
<body>
<div class="div1 bg1"></div>
<script>
window.onload = () => {
const div1 = document.querySelector('.div1');
const timer = setInterval( () => {
if(div1.classList.contains('bg1')) {
div1.classList.replace('bg1', 'bg2');
} else {
div1.classList.replace('bg2', 'bg1');
}
}, 1000);
}
</script>
</body>
</html>
我想實現的效果就是div1的背景圖片來回切換,時間間隔為1s。
效果實現了,但第一次進入頁面時會出現一下閃屏現象
原因為:我的bg2.png圖片沒有預載入,在js切換到它時它並沒有載入完成,所以出現閃屏
解決辦法:先預載入圖片,再新增效果
程式碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.div1 {
width: 100vw;
height: 100vh;
background-position: center;
background-size: cover;
}
.bg1 {
background-image: url('./img/bg1.png');
}
.bg2 {
background-image: url('./img/bg2.png');
}
</style>
</head>
<body>
<div class="div1 bg1"></div>
<script>
window.onload = () => {
const div1 = document.querySelector('.div1');
const img1 = new Image();
img1.src = './igm/bg2.png';
img1.onload = function () {
const timer = setInterval( () => {
if(div1.classList.contains('bg1')) {
div1.classList.replace('bg1', 'bg2');
} else {
div1.classList.replace('bg2', 'bg1');
};
}, 1000);
};
};
</script>
</body>
</html>
定義一個Image物件,併為它設定src屬性,就相當於為瀏覽器快取了一張圖片。
vw,vh不懂的參考文章:通俗易懂——css長度單位:px、em、rem、vh、vw、in、…
相關文章
- Android 解決表情皮膚和軟鍵盤切換時跳閃的問題Android
- js圖片切換例項JS
- 幻燈片放映模式切換windows terminal背景圖片模式Windows
- 完美解決setInterval在瀏覽器切換時加速的問題瀏覽器
- win10怎麼自定義背景圖切換_win10自定義背景圖片隨機切換的步驟Win10隨機
- css滑鼠浮劃過切換按鈕背景圖片CSS
- 使用雙快取解決 Canvas clearRect 引起的閃屏問題快取Canvas
- WPF 讀取圖片 賦值Image控制元件 解決圖片佔用問題賦值控制元件
- 解決Hexo關於圖片的問題Hexo
- js隨機切換背景音樂JS隨機
- vue渲染時閃爍{{}}的問題及解決方法Vue
- 解決圖片訪問403 Forbidden問題ORB
- IDEA更換背景圖片Idea
- jQuery 圖片垂直切換效果詳解jQuery
- 解決ImageView超出父控制元件(或螢幕邊界)時,圖片擠壓問題View控制元件
- nginx 解決圖片跨域問題Nginx跨域
- 解決webpack-dev-server代理常切換問題WebdevServer
- 用原生JS實現 圖片輪播切換 功能JS
- JavaScript動態設定元素背景圖片JavaScript
- [iOS]終極橫豎屏切換解決方案iOS
- vue-element-admin 解決壓縮打包之後背景圖片不顯示問題Vue
- 快速解決cmd中不同盤之間不能切換的問題
- js圖片 轉換JS
- pyinstaller閃退問題解決方法
- Qt QtCharts給QChartView換膚,換背景色新增背景圖片QTView
- JS實現動態瀑布流及放大切換圖片效果(js案例)JS
- 信創雲盤,解決雙系統切換的資料交換同步問題
- 給一個塊元素新增多張背景圖片
- 【問題解決】使用YYYY-MM-dd時間轉換問題
- 成功解決github無法顯示圖片問題Github
- 多行文字末尾新增圖片排版問題解決
- SceneKit-解決模型重疊時渲染畫面閃爍的問題模型
- Android Activity跳轉閃屏問題Android
- IOS下圖片不能顯示問題的解決辦法iOS
- pyinstaller 生成 exe 的閃退問題解決方案
- JAVA編輯word替換指定內容,解決插入圖片顯示不全問題Java
- 解決JS跨域訪問的問題JS跨域
- MySQL 主從切換延時高問題分析MySql