วิธีลดความสว่างของภาพใน CSS


107

ฉันต้องการลดความสว่างของภาพใน CSS ฉันค้นหามามาก แต่สิ่งที่ฉันมีคือวิธีเปลี่ยนความทึบ แต่นั่นทำให้ภาพสว่างขึ้น ใครช่วยฉันได้บ้าง


คุณสามารถใช้ความทึบของแอตทริบิวต์
Satinder singh

ฉันใช้มัน แต่มันเพิ่มความสว่าง ...
Shadi

คำตอบที่ได้รับการยอมรับนั้นใช้งานได้ดี แต่ยังมีเอfilterฟเฟกต์มาตรฐาน CSS ใหม่ที่คุณจะต้องทราบในอนาคต ดูคำตอบของฉัน
Spudley

1
@shady คุณกรุณากลับมาทบทวนคำถามนี้เพื่อทำเครื่องหมายหนึ่งในคำตอบที่เสนอโซลูชันที่เกี่ยวข้องกับตัวกรองว่าถูกต้อง คำตอบที่คุณระบุว่าถูกต้องจะเป็นวิธีที่จะทำในปี 2549
โหมด Wes

คำตอบ:


177

filterคุณลักษณะที่คุณกำลังมองหาอยู่ สามารถทำเอฟเฟกต์ภาพได้หลายแบบรวมถึงความสว่าง:

#myimage {
    filter: brightness(50%);
}

คุณสามารถค้นหาบทความที่เป็นประโยชน์ได้ที่นี่: http://www.html5rocks.com/en/tutorials/filters/understand-css/

อีกอัน: http://davidwalsh.name/css-filters

และที่สำคัญที่สุดคือข้อกำหนด W3C: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html

โปรดทราบว่านี่เป็นสิ่งที่เพิ่งเข้ามาใน CSS เป็นฟีเจอร์ มันมีอยู่ แต่เป็นจำนวนมากของเบราว์เซอร์ออกมีจะไม่สนับสนุนมันยังและผู้ที่ทำการสนับสนุนจะต้องคำนำหน้าผู้ขาย (เช่น-webkit-filter:, -moz-filterฯลฯ )

นอกจากนี้ยังสามารถทำเอฟเฟ็กต์ฟิลเตอร์เช่นนี้ได้โดยใช้ SVG การสนับสนุน SVG สำหรับเอฟเฟกต์เหล่านี้ได้รับการยอมรับอย่างดีและได้รับการสนับสนุนอย่างกว้างขวาง (ข้อกำหนดตัวกรอง CSS ถูกนำมาจากข้อกำหนด SVG ที่มีอยู่)

นอกจากนี้โปรดทราบว่าสิ่งนี้ไม่ควรสับสนกับfilterรูปแบบที่เป็นกรรมสิทธิ์ที่มีอยู่ใน IE เวอร์ชันเก่า (แม้ว่าฉันจะสามารถคาดเดาปัญหาเกี่ยวกับการปะทะกันของเนมสเปซได้เมื่อสไตล์ใหม่ลดคำนำหน้าผู้ขาย)

ถ้าไม่มีผลงานที่สำหรับคุณคุณยังสามารถใช้ที่มีอยู่opacityคุณลักษณะ แต่ไม่ได้เป็นวิธีที่คุณกำลังความคิด: opacityเพียงแค่สร้างองค์ประกอบใหม่ที่มีสีเข้มแข็งวางไว้ด้านบนของภาพของคุณและจางหายไปมันออกมาใช้ เอฟเฟกต์จะทำให้ภาพด้านหลังมืดลง

ในที่สุดคุณสามารถตรวจสอบการสนับสนุนเบราว์เซอร์ของที่นี่filter


32

OP ต้องการลดความสว่างไม่ใช่เพิ่ม ความทึบทำให้ภาพดูสว่างขึ้นไม่มืดลง

คุณสามารถทำได้โดยการซ้อน div สีดำบนรูปภาพและตั้งค่าความทึบของ div นั้น

<style>
#container {
    position: relative;
}
div.overlay {
    opacity: .9;
    background-color: black;
    position: absolute;
    left: 0; top: 0; height: 256px; width: 256px;
}
</style>

Normal:<br />
<img src="http://i.imgur.com/G8eyr.png">
<br />
Decreased brightness:<br />
<div id="container">
    <div class="overlay"></div>
    <img src="http://i.imgur.com/G8eyr.png">
</div>

การสาธิต


24
ความทึบไม่ได้ทำให้อะไรสว่างขึ้นหรือมืดลง มันเปลี่ยนความโปร่งใสของวัตถุ สิ่งนี้จะมีผลในการทำให้บางสิ่งสว่างขึ้นหรือมืดลงหรือไม่นั้นขึ้นอยู่กับสีพื้นหลังที่อยู่ด้านหลังรายการที่คุณกำลังเปลี่ยนความทึบ ตรงกันข้ามกับสิ่งที่คุณพูดคุณสามารถทำให้บางสิ่งบางอย่างมืดลงได้โดยการเพิ่มความทึบหากคุณวางไว้บนพื้นหลังสีดำ ภาพโปร่งใส 99% บนพื้นหลังสีดำจะปรากฏเป็นสีดำเกือบทั้งหมด ฉันไม่เห็นว่าทำไมต้องมีการซ้อนทับแยกต่างหาก คุณสามารถตั้งค่าบน BG สีดำ เช่นjsbin.com/isemec/1/edit
NickG

@NickG ฉันบอกว่าสมมติว่าพื้นหลังสีขาว สิ่งที่คุณทำก็เหมือนกับรหัสของฉันเพียง แต่ฉันวางภาพซ้อนทับสีดำกึ่งโปร่งใสที่ด้านบนของภาพและคุณมีพื้นหลังสีดำทึบที่มีภาพกึ่งโปร่งใสอยู่ด้านบน
sachleen

17

ในระยะสั้นให้วางสีดำไว้ด้านหลังภาพและลดระดับความทึบลง คุณสามารถทำได้โดยการตัดภาพภายใน div แล้วลดความทึบของรูปภาพลง

ตัวอย่างเช่น:

<!DOCTYPE html>

<style>
    .img-wrap {
        background: black;
        display: inline-block;
        line-height: 0;
    }
        .img-wrap > img {
            opacity: 0.8;
        }
</style>

<div class="img-wrap">
    <img src="http://mikecane.files.wordpress.com/2007/03/kitten.jpg" />
</div>

นี่คือ JSFiddle


15

คุณสามารถใช้:

filter: brightness(50%);
-webkit-filter: brightness(50%);
-moz-filter: brightness(50%);
-o-filter: brightness(50%);
-ms-filter: brightness(50%);

9
นโยบาย "มาใส่คำนำหน้าในกรณี" นี้ผิด อันดับแรกถ้า Opera เคยสนับสนุนมันจะไม่มี-o-(Opera ใช้ Webkit / Blink ทันที) ประการที่สอง Firefox พุ่งตรงไปที่ไม่มีคำนำหน้าfilterสามคุณมีคำสั่งที่ไม่ถูกต้องไม่มีคำนำหน้าควรเป็นลำดับสุดท้ายที่สี่ ไวยากรณ์สำหรับ IE -ms-filterแตกต่างกัน ( progid:DXImageTransformฯลฯ ) ประการที่ห้าไวยากรณ์สำหรับ Firefox แตกต่างกันและต้องใช้ SVG ( ดูเอกสาร ) ประการที่หกคุณลักษณะใหม่ไม่น่าจะมีคำนำหน้าเนื่องจากผู้ขายตระหนักถึงความคิดที่ไม่ดี
Camilo Martin

5
@CamiloMartin คุณควรให้คำตอบที่สมบูรณ์ยิ่งขึ้นสำหรับคำถามนี้เนื่องจากยังไม่ได้รับคำตอบอย่างสมบูรณ์
Wes Modes

-webkit-filter: ความสว่าง () / -webkit-filter: contrast () ทำงาน นี่เป็นคำตอบที่เหมาะสมสำหรับคำถาม
Shilpa

คุณสามารถใช้ใน sass mixin เช่นนี้: gist.github.com/johnferrie/3836468
Erez Lieberman

6

ด้วย CSS3 เราสามารถปรับภาพได้อย่างง่ายดาย แต่จำไว้ว่าสิ่งนี้ไม่ได้เปลี่ยนภาพ จะแสดงเฉพาะภาพที่ปรับแล้ว

ดูรหัสต่อไปนี้สำหรับรายละเอียดเพิ่มเติม

ในการทำให้ภาพเป็นสีเทา:

img {
 -webkit-filter: grayscale(100%);
 -moz-filter: grayscale(100%);
}

เพื่อให้ดูซีเปีย:

    img {
     -webkit-filter: sepia(100%);
    -moz-filter: sepia(100%);
}

ในการปรับความสว่าง:

 img {
     -webkit-filter: brightness(50%);
     -moz-filter: brightness(50%);  
  }

ในการปรับความคมชัด:

 img {
     -webkit-filter: contrast(200%);
     -moz-filter: contrast(200%);    
}

ในการเบลอภาพ:

    img {
     -webkit-filter: blur(10px);
    -moz-filter: blur(10px);
  }

1
โปรดอย่าโพสต์คำตอบเดียวกันทุกข้อสำหรับคำถามหลายข้อเพราะอาจไม่เหมาะสมกับทุกคำถามหรือคำถามซ้ำกันซึ่งควรถูกตั้งค่าสถานะ / ปิดเช่นนี้
kleopatra


2

หากคุณมีภาพพื้นหลังคุณสามารถทำได้: ตั้งค่าการไล่ระดับสี rgba () บนภาพพื้นหลัง

.img_container {
  float: left;
  width: 300px;
  height: 300px;
  display: flex;
  justify-content: center;
  align-items: center;
  border : 1px solid #fff;
}

.image_original {
  background: url(https://i.ibb.co/GkDXWYW/demo-img.jpg);
}

.image_brighness {
  background: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), /* the gradient on top, adjust color and opacity to your taste */
  url(https://i.ibb.co/GkDXWYW/demo-img.jpg);
}

.img_container p {
  color: #fff;
  font-size: 28px;
}
<div class="img_container image_original">
  <p>normal</p>
</div>
<div class="img_container image_brighness ">
  <p>less brightness</p>
</div>


ยอดเยี่ยม. ฉันต้องการวิธีแก้เพื่อทำให้ภาพพื้นหลังมืดลงและคำตอบอื่น ๆ ทั้งหมดทำให้ div ทั้งหมดมืดลง
nuander



0

ลองทำเช่นนี้หากคุณต้องการแปลงภาพสีดำเป็นสีขาว:

.classname{
    filter: brightness(0) invert(1);
}

-3

ชอบ

.classname
{
 opacity: 0.5;
}

ขอบคุณที่เพิ่มความสว่างไม่ลดเลย !!
Shadi

ขึ้นอยู่กับสีพื้นหลัง
คัมภีร์ของศาสนาคริสต์

right @zgnilec ขึ้นอยู่กับสีพื้นหลัง ... ถ้าคุณใส่เป็นสีดำความสว่างของภาพจะลดลง
Shadi

สิ่งนี้ใช้ไม่ได้กับการเพิ่มความสว่างมากกว่า 100% ความทึบสามารถรับได้สูงสุด 1 เท่านั้น
Javis Perez

ในฐานะที่ไม่ใช่คนพูดภาษาอังกฤษจริงๆแล้วฉันต้องการค้นหาคำว่า "ทึบ" และได้เสนอคำตอบนี้ แต่อย่างใด แม้ว่าคำตอบนี้จะไม่ตอบคำถาม แต่ก็ควรรู้ว่าopacityเพิ่มความสว่าง ;)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.