2010-07-18 2 views
0

Хорошо, поэтому она заключает сделку. У меня есть страница, которую я создаю в html и css. У меня есть div, чей фон должен быть прозрачным. Однако, когда я использую opacity: .6; Все, что находится в div, проходит.Проблемы с прозрачностью в CSS

Есть ли способ исправить это, чтобы он работал в сафари, IE и firefox?

+1

возможный дубликат [Как дать прозрачность кросс браузера фона только элемента] (http://stackoverflow.com/questions/2757605/how -to-give-cross-browser-transparent-to-elements-background-only) – Sarfraz

ответ

0

должно быть

непрозрачности: 0,6

рядом с этой непрозрачности работает по-разному в зависимости от которых веб-браузер вы используете

0

вы должны использовать оба

непрозрачности в CSS и

фильтр: alpha (opacity = 60);

для т.е. и прочее

5

Нет, нет никакого реального способа решить эту проблему (хотя вы можете в CSS3). Есть два возможных подхода:

1) Используйте прозрачный PNG фон, а не делать это с помощью CSS (с хаки для IE6, который не позволяет прозрачно PNGs)

2) Используйте два отдельных дивы, и использовать абсолютное позиционирование в положение один поверх другого. Это требует знания определенных измерений, поэтому может не всегда применяться, но может работать в вашей ситуации.

+2

Я не понимаю, почему это ниспровергается, это был первый ответ, который даже указывал на базовое понимание проблемы, заданной вопросом. Я поддержал, чтобы компенсировать. – eyelidlessness

1

Просто используйте прозрачное изображение в качестве фона для этого элемента. Когда вы используете непрозрачность в css для данного элемента, все в этом элементе и включая этот элемент получает этот стиль. Посмотрите здесь:

http://jsfiddle.net/zV4BR/

2
.outer { 
    position: relative 
} 
.background { 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    background-color: #000; /* Or whatever */ 
    opacity: 0.6; 
    -moz-opacity: 0.6; 
    filter: alpha(opacity=60); 
} 

<div class="outer"> 
    <div class="background"></div> 
    Content 
</div> 

Обратите внимание, что иногда height: 100% правило .background не работает в IE 6, в этом случае вы должны попытаться применять hasLayout к первому .outer, и если это не удается, как .background ну (вы можете добавить hasLayout с правилом CSS zoom: 1 без побочных эффектов). Если ни один из них не работает, вам, скорее всего, понадобится значение expression для IE 6. Если вам нужна дополнительная помощь, оставьте комментарий.

Как smerriman said, это намного проще в браузерах, которые поддерживают CSS3 (точнее, rgba или hsla значений цвета). Это будет так же просто, как background-color: rgba(0, 0, 0, 0.6).

0

использование этого метода

How to give cross browser transparency to element's background only?

использование Rgba вместо непрозрачности. см. пример здесь: http://jsfiddle.net/ypaTH/

вам также необходимо установить фон на внутренние элементы.

Edit:, чтобы сделать код rgab для IE использовать этот http://kimili.com/journal/rgba-hsla-css-generator-for-internet-explorer/

+0

Вопросник требует кросс-браузерного решения. 'rgba' не поддерживается во всех широко используемых браузерах. – eyelidlessness

+0

u может дать supprot IE с фильтрами http://css3please.com/ –

+0

Хорошо справедливо, но стоит отметить, что правила 'filter' могут вызывать нежелательные побочные эффекты (в некоторых случаях ссылки не могут быть интерактивными, например), и что в качестве единственного правила CSS они должны быть соединены с запятыми, если их больше одного. Это может быть решением проблемы опроса, но у нее есть свои оговорки. – eyelidlessness

Смежные вопросы