นี่คือวิธีแก้ปัญหาที่ใช้งานได้กับพื้นหลังคงที่หากคุณมีพื้นหลังคงที่และคุณมีองค์ประกอบที่ซ้อนทับและคุณต้องการพื้นหลังที่เบลอสำหรับพวกเขาวิธีนี้ใช้ได้:
รูปภาพเรามี HTML ง่ายๆนี้:
<body>
<div class="content">Some Texts</div>
</body>
พื้นหลังคงที่สำหรับ<body>
หรือองค์ประกอบของ wrapper:
body {
background-image: url(http://placeimg.com/640/360/any);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
ตัวอย่างเช่นเรามีองค์ประกอบซ้อนทับที่มีพื้นหลังโปร่งใสสีขาว:
.content {
background-color: rgba(255, 255, 255, 0.3);
position: relative;
}
ตอนนี้เราจำเป็นต้องใช้ภาพพื้นหลังเดียวกันของเสื้อคลุมของเราสำหรับองค์ประกอบการวางซ้อนของเราด้วยฉันใช้มันเป็น:before
คลาส psuedo:
.content:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
filter: blur(5px);
background-image: url(http://placeimg.com/640/360/any);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
เนื่องจากพื้นหลังคงที่ทำงานในลักษณะเดียวกันทั้งในองค์ประกอบกระดาษห่อหุ้มและองค์ประกอบที่ซ้อนทับเราจึงมีพื้นหลังอยู่ในตำแหน่งเลื่อนเดียวกันขององค์ประกอบที่ซ้อนทับและเราสามารถเบลอได้ นี่คือซอที่ใช้งานได้ซึ่งทดสอบใน Firefox, Chrome, Opera และ Edge: https://jsfiddle.net/0vL2rc4d/
หมายเหตุ:ใน firefox มีข้อผิดพลาดที่ทำให้หน้าจอกะพริบเมื่อเลื่อนและมีพื้นหลังเบลอคงที่ หากมีการแก้ไขโปรดแจ้งให้เราทราบ
CSS filter
ไม่รองรับ Firefox คุณไม่ควรใช้มัน