Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: прозрачность DIV и наследование
 
 автор: hk416   (12.11.2012 в 23:14)   письмо автору
 
 

Я вас категорически приветствую товарищи!!! В общем такая проблема. Есть див в диве. У дива отца стоит прозрачность 0.5( opacity: 0.5;), но к сожалению эта же прозрачность передается и дочерним дивам. Как сделать так что бы дочерним дивам прозрачность не передавалась? Просто по большому счёту зачем непрозрачные дивы, в полупрозрачном. Но вот понадобились, так как видеоплеер VK становится прозрачным в след за дивом в котором лежит, удивительное зрелище (((( Принудительное выставление нужных параметров в таблице стилей, к сожалению не помогло.

С уважением к вам, вашему опыту и труду!!!

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 10:15)   письмо автору
 
   для: hk416   (12.11.2012 в 23:14)
 

Хм.... А что, тут никто ничего не подскажет?
Я тоже сталкивался с такой бедой и как победить не нашел способа =(

  Ответить  
 
 автор: confirm   (14.11.2012 в 10:54)   письмо автору
 
   для: Sfinks   (14.11.2012 в 10:15)
 

Узнаете положение родителя, позиционируете дочерний элемент абсолютно на позицию родителя, плюс смещение элемента в родителе. По окончании необходимости сей операции возвращаете дочернему элементу относительное позиционирование.

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 11:56)   письмо автору
 
   для: confirm   (14.11.2012 в 10:54)
 

Ну да, так и приходилось выворачиваться - сменой родителя.

  Ответить  
 
 автор: confirm   (14.11.2012 в 12:08)   письмо автору
 
   для: Sfinks   (14.11.2012 в 11:56)
 

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

  Ответить  
 
 автор: ЯСА   (14.11.2012 в 11:31)   письмо автору
 
   для: Sfinks   (14.11.2012 в 10:15)
 

а "супротив лома нет приёма"- это давно известно :)

желание иметь "непрозрачного ребёнка" в "прозрачном родителе" равносильно желанию нырнуть с головой в воду, но так, чтобы трусы остались сухими
и это ни у кого ещё не получалось и никогда не получится

так что "беда" - она не в HTML+CSS+JS
эта "беда" - она в голове тех, кто такие "задачи/проблемы" перед собой ставит :(

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 12:01)   письмо автору
 
   для: ЯСА   (14.11.2012 в 11:31)
 

У меня такая "задача/проблема" возникла, когда я попытался на все окно браузера нарисовать полупрозрачную подложку, а в центре DIV-окошко с уведомлением. Решил, как и написали выше, сделав родителем обоих BODY.

А в чем принципиальная разница между свойством "прозрачность" и любым другим, например "цвет рамки"?
Почему метафора именно "нырнуть", а не, скажем, намазать кремом от загара?
И какие, тогда, еще свойства стиля невозможно не унаследовать?

  Ответить  
 
 автор: ЯСА   (14.11.2012 в 13:56)   письмо автору
 
   для: Sfinks   (14.11.2012 в 12:01)
 

>"И какие, тогда, еще свойства стиля невозможно не унаследовать?"

есть такое английское слово - inherited
по-русски оно звучит немного неприлично - "инхЕритед"
переводится как "наследование"

каждое свойство стиля - оно либо "инхЕрит", либо "НЕинхЕрит"
узнать о каждом свойстве стиля можно на сайте w3c
кликните там по интересующему вас свойству и в самой первой табличке четвёртой строкой будет написано:
либо Inherited: yes 
либо Inherited: no 

аналогичная информация по каждому CSS-свойству имеется у Мелкософта и у Мозиллы
------

но, в принципе, указанная выше информация - она при здравом и логичном уме не нужна
я как бы САМ могу догадаться, что если я дам внешнему <DIV>'у некий цвет фона - например, голубой - то абсолютно все входящие в этот <DIV> плайн-теги тоже будут... этой же нетрадиционной ориентации :)
а вот если я этот внешний <DIV> заключу в рамку (установлю ему бордер), то я опять же как бы САМ вполне догадаюсь, что на все внутренние теги это свойство распространяться не будет...

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 18:02)   письмо автору
 
   для: ЯСА   (14.11.2012 в 13:56)
 

Так ведь речь не о наследовании, а о невозможности изменить унаследованное свойство.
Вот код:
<!--<?--><html>
<
body style="background-color:#555">
<
div style="background-color:yellow;height:500px"></div>
<
div style="position:absolute;left:0;top:0;width:500px;height:200px;background-color:blue;">
  <
div style="position:absolute;left:100px;top:50px;width:300px;height:100px;border:solid red 1px;">
  </
div>  
</
div>  
<
div style="position:absolute;left:0;top:200px;width:500px;height:200px;background-color:blue;">
  <
div style="position:absolute;left:100px;top:50px;width:300px;height:100px;background-color:red;">
  </
div>  
</
div>  
<
div style="position:absolute;left:0;top:400px;width:500px;height:200px;background-color:black;opacity:0.5;">
  <
div style="position:absolute;left:200px;top:0px;width:100px;height:200px;background-color:green;opacity:1;"></div>  
  <
div style="position:absolute;left:100px;top:50px;width:300px;height:100px;background-color:white;opacity:1;"></div>  
</
div>  
</
body>
</
html>

Вы привели в качестве примера цвет фона...
Да, по умолчанию он наследуется. Видим это в первом диве.
Но если у дочернего дива изменить цвет фона, то он изменится, как мы видим во втором диве.
А прозрачность дочернего элемента изменяется и не просвечивается, но только по отношению к родителю.
А по отношению к прародителю еще и умножается на прозрачность родителя, в результате все равно просвечивает.
Забавно.

  Ответить  
 
 автор: hk416   (14.11.2012 в 14:30)   письмо автору
 
   для: Sfinks   (14.11.2012 в 10:15)
 

Сфинкс, я нашел решение, если тебе тоже интересно, скажи, я напишу решение. Оно гениальное и простое.

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 18:05)   письмо автору
 
   для: hk416   (14.11.2012 в 14:30)
 

Хорошим тоном на форуме считается показать решение своей проблемы, даже если вы нашли его сами. Вдруг еще кому-то пригодится. Тем более, если оно "гениальное и простое".

  Ответить  
 
 автор: DJ Paltus   (14.11.2012 в 17:26)   письмо автору
 
   для: hk416   (12.11.2012 в 23:14)
 

Можно использовать CSS3-значение цвета rgba для родителя вместо opacity. Не очень кроссбраузерно [url](http://htmlbook.ru/css/value/color[/url]), но альфа-канал таки не наследуется.

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 18:06)   письмо автору
 
   для: DJ Paltus   (14.11.2012 в 17:26)
 

Да, это хороший вариант. Мне нравится =)

  Ответить  
 
 автор: hk416   (14.11.2012 в 19:28)   письмо автору
 
   для: Sfinks   (14.11.2012 в 18:06)
 

Ну вообще то это и есть моё решение и оно кроссбраузерно если одно НО, для IE8 и ниже нужно дополнительно несколько строчек написать в условных комментариях. Вот сайт на котором это отлично рассказывается http://www.xiper.net/collect/html-and-css-tricks/css-tricks/rgba.html Так что теперь вы на будущее знаете как этим пользоваться. И то что это работает практически во всех браузерах, я лично проверил.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования