Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

วิธีสร้าง Image Overlay Icon Effect (ไอคอนทับรูปเมื่อ Hover) ด้วย CSS

สร้างเอฟเฟกต์ Hover บนรูปภาพ: รูปจางลง และแสดงไอคอนใหญ่ตรงกลาง (เช่น ไอคอนเท้าสุนัข) ใช้ Font Awesome และ Transition

ตัวอย่างโค้ด

<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> <style> *{    box-sizing: border-box; } .card-container {    display: inline-block;    position: relative;    width: 50%; } img {    opacity: 1;    display: block;    width: 100%;    transition: .5s ease;    backface-visibility: hidden; } .hoverText {    position: absolute;    top:0;    height: 100%;    transition: .5s ease;    opacity: 0;    width: 100%;    text-align: center; } .card-container:hover .hoverText {    opacity: 1; } .caption {    background-color: rgb(18, 53, 131);    color: white;    font-size: 30px;    padding-top:30%;    border-radius: 6px;    height: 100%;    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;    font-weight: bolder; } </style> </head> </head> <body> <h1>Image Overlay Icon Example</h1> <div class="card-container"> <img src="https://i.picsum.photos/id/237/536/354.jpg"> <div class="hoverText"> <div class="caption"> <i style="font-size:150px" class="fa fa-paw" aria-hidden="true"></i> </div> </div> </div> </body> </html>

รายละเอียด

  • .hoverText { top: 0; height: 100%; } - ครอบทั้งรูป ไม่ใช่แค่จุดกึ่งกลาง
  • .caption { padding-top: 30%; height: 100%; } - ดันไอคอนลงมาประมาณกึ่งกลาง
  • font-size: 150px - ไอคอนขนาดใหญ่
  • fa-paw - ไอคอนเท้าสัตว์ (Font Awesome)

ปรับปรุง: จัดกึ่งกลางแท้ด้วย Flexbox

.hoverText {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}
.caption { padding-top: 0; }

ผลลัพธ์

รูปสุนัข ปกติชัด Hover -> รูปจาง (opacity 0.4) แสดงไอคอนเท้าสุนัขขนาดใหญ่สีขาว พื้นหลังสีน้ำเงินม่วง