CSS фон-изображение-непрозрачность?



связано с тем, как я могу дать текст или изображение прозрачный фон с помощью CSS? но немного по-другому.



Я хотел бы знать, можно ли изменить Альфа-значение фона изображения, а не просто цвет. Очевидно, что я могу просто Сохранить Изображение с разными значениями Альфа, но я хотел бы иметь возможность динамически настраивать Альфа.



до сих пор лучшее, что у меня есть:



<div style="position: relative;">
<div style="position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px;
background-image: url(...); opacity: 0.5;"></div>
<div style="position: relative; z-index: 1;">
<!-- Rest of content here -->
</div>
</div>


он работает, но он громоздкий и уродливый, и портит вещи в более сложных макетах.

495   9  

9 ответов:

Если фон не должен повторяться, вы можете использовать технику спрайта (раздвижные двери), где вы помещаете все изображения с разной непрозрачностью в один (рядом друг с другом), а затем просто сдвигаете их с помощью background-position.

или вы можете объявить одно и то же частично прозрачное фоновое изображение несколько раз, если ваш целевой браузер поддерживает несколько фонов (Firefox 3.6+, Safari 1.0+, Chrome 1.3+, Opera 10.5+, Internet Explorer 9+). Непрозрачность этих несколько изображений должны складываться, тем больше фонов вы определяете.

вы можете сделать выцветший фон с CSS генерируемого контента

демо на http://jsfiddle.net/gaby/WktFm/508/

Html

<div class="container">
        contents
</div>

Css

.container{
    position: relative;
    z-index:1;
    overflow:hidden; /*if you want to crop the image*/
}
.container:before{
    z-index:-1;
    position:absolute;
    left:0;
    top:0;
    content: url('path/to/image.ext');
    opacity:0.4;
}

но вы не можете изменить непрозрачность, как нам не позволено изменять контент..

вы можете манипулировать им с помощью классов и событий css, хотя (но не уверен, подходит ли он вам потребности)

.container:hover:before{
    opacity:1;
}

обновление

вы можете использовать CSS-переходы для анимации непрозрачности (снова через классы)

демо на http://jsfiddle.net/gaby/WktFm/507/

добавлять

-webkit-transition: opacity 1s linear;
-o-transition: opacity 1s linear;
-moz-transition: opacity 1s linear;
transition: opacity 1s linear;

до .container:before правило сделает непрозрачность анимировать до 1 в одну секунду.

совместимость

  • FF 5 ( может быть, 4 также, но не устанавливайте его.)
  • IE 9 терпит неудачу..
  • браузеры на основе Webkit не работают (Chrome поддерживает его теперь v26-возможно, более ранние версии тоже, но только что проверил с моей текущей сборки), но они знают и работают над этим ( https://bugs.webkit.org/show_bug.cgi?id=23209)

.. так что только последний FF поддерживает его на данный момент.. а хорошая идея, нет ? :)

.class {
    /* Fallback for web browsers that doesn't support RGBa */
    background: rgb(0, 0, 0);
    /* RGBa with 0.6 opacity */
    background: rgba(0, 0, 0, 0.6);
}

скопировано из: http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/

попробуйте этот трюк .. используйте CSS shadow с опцией (inset) и сделайте глубокий 200px например

код:

box-shadow: inset 0px 0px 277px 3px #4c3f37;

.

также для всех браузеров:

-moz-box-shadow: inset 0px 0px 47px 3px #4c3f37;
-webkit-box-shadow: inset 0px 0px 47px 3px #4c3f37;
box-shadow: inset 0px 0px 277px 3px #4c3f37;

и увеличьте число, чтобы заполнить ваш ящик :)

наслаждайтесь!

вы можете поместить второй элемент внутри элемента, на котором вы хотите иметь прозрачный фон.

<div class="container">
    <div class="container-background"></div>
    <div class="content">
         Yay, happy content!
    </div>
</div>

затем сделать '.контейнер-фон ' позиционируется абсолютно для покрытия родительского элемента. На этом этапе вы сможете настроить его непрозрачность, не влияя на непрозрачность содержимого внутри ".контейнер'.

.container {
    position: relative;
}
.container .container-background {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: url(background.png);
    opacity: 0.5;
}
.container .content {
    position: relative;
    z-index: 1;
}

вы не можете редактировать изображение с помощью CSS. Единственное решение, которое я могу придумать, - это отредактировать изображение и изменить его непрозрачность или сделать разные изображения со всеми необходимыми непрозрачностями.

#id {
  position: relative;
  opacity: 0.99;
}

#id::before {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: -1;
  background: url('image.png');
  opacity: 0.3;
}

Hack с непрозрачностью 0.99 (менее 1) создает контекст z-индекса, поэтому вы можете не беспокоиться о глобальных значениях Z-индекса. (Попробуйте удалить его и посмотреть, что произойдет в следующей демонстрации, где родительская оболочка имеет положительный Z-индекс.)
Если ваш элемент уже имеет z-индекс, то вам не нужен этот хак.

демо.

вот еще один подход к настройке градиента и stransparency с помощью CSS. Вы должны играть вокруг с параметрами немного, хотя.

background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(100%, transparent)),url("gears.jpg"); /* Chrome,Safari4+ */
background-image: -webkit-linear-gradient(top, transparent, transparent),url("gears.jpg"); /* Chrome10+,Safari5.1+ */
background-image:    -moz-linear-gradient(top, transparent, transparent),url("gears.jpg"); /* FF3.6+ */
background-image:     -ms-linear-gradient(top, transparent, transparent),url("gears.jpg"); /* IE10+ */
background-image:      -o-linear-gradient(top, transparent, transparent),url("gears.jpg"); /* Opera 11.10+ */
background-image:         linear-gradient(to bottom, transparent, transparent),url("gears.jpg"); /* W3C */
body {
  ' css code that goes in your body'
}

body::after {
  background: url(yourfilename.jpg);
  content: "";
  opacity: 0.6;
  position: fixed;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  z-index: -1;   
  width:auto;
  height: 100%;
  }

так сказать свое тело::после того, как вы ищете. Таким образом, код для вашего тела не изменяется или изменяется только фон, где вы можете вносить изменения, когда это необходимо.

Comments

    Ничего не найдено.