Основний CSS - як накласти DIV на напівпрозорий DIV зверху


75

Я намагаюся зробити цей рендер прямо у своєму браузері (Chrome). У мене є обгортка, що вміщує всі елементи HTML, і я хочу мати DIV (давайте назвемо це div-1), який вміщує зображення, і має накладений div зверху ліворуч, як я накреслив у цьому малюнок ... якісь швидкі рішення?

з накладанням напівпрозорого

Відповіді:


153

Ось чисте рішення CSS, подібне до відповіді DarkBee, але без необхідності додаткового .wrapperdiv:

.dimmed {
  position: relative;
}

.dimmed:after {
  content: " ";
  z-index: 10;
  display: block;
  position: absolute;
  height: 100%;
  top: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.5);
}

Я використовую rgba тут, але, звичайно, ви можете використовувати інші методи прозорості, якщо хочете.


@marcvangend рішення працює, але якщо замість зображення є прокручуваний div, чи можемо ми все-таки дозволити прокрутці працювати?
— Онкар

2
@Onkar Можна спробувати додати pointer-events: none;до .dimmed:afterселектора. Див. Також stackoverflow.com/questions/1009753/… . Будь ласка, повідомте нас, якщо це працює у цьому конкретному випадку використання.
— marcvangend

4
Фантастично. Якщо ви хочете перейти до базового елемента, додайте правило pointer-events: none; до правил css after element
— Адам Діамент

25

Використовуючи CSS3, вам не потрібно робити власне зображення з прозорістю.

Просто створіть div із наступним

position:absolute;
left:0;
background: rgba(255,255,255,.5);

Останнім параметром у фоновому режимі (.5) є рівень прозорості (більша цифра є більш непрозорою).

Приклад Скрипка


16
.foo {
   position : relative;
}
.foo .wrapper {
    background-image : url('semi-trans.png');
    z-index : 10;
    position : absolute;
    top : 0;
    left : 0;
}

<div class="foo">
   <img src="example.png" />
   <div class="wrapper">&nbsp;</div>
</div>

1
Можливо, хочеться додати top:0; left: 0;до.wrapper
— Коллін Хендерсон

Це правда. Змінив
— DarkBee

1
Крім того, якщо зображення ще не прозоре,opacity:0.4; filter:alpha(opacity=40); /* For IE8 and earlier */
— ехолокація

1
PS - використання rgba недоцільно, я бачу, ви пішли з прозорим png ... це пов’язано з Internet Explorer, так?
— TM23

Так, для підтримки старих браузерів, які не можуть обробляти CSS3
— DarkBee,

10

Для елемента div ви можете просто встановити непрозорість за допомогою класу, щоб увімкнути або вимкнути ефект.

.mute-all {
   opacity: 0.4;
}

5

Як і попередня відповідь, але я б поклав :: before, лише для цілей укладання. Якщо ви хочете включити текст над накладанням (поширений випадок використання), за допомогою :: before will слід це виправити.

.dimmed {
  position: relative;
}

.dimmed:before {
  content: " ";
  z-index: 10;
  display: block;
  position: absolute;
  height: 100%;
  top: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.5);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.