Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.06.2012, 23:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от melky
devote, абалденно. Не могли бы Вы пояснить, почему он работает?
Все очень просто, в реале z-index в ИЕ7 работает, это можно увидеть наполнив контентом красный квадрат, тоесть текст ляжет поверх зеленого квадрата, но вот заливку заднего фона ИЕ7 не сует под элемент, поэтому засчет экспрешенов я решил вопрос так.

У нас есть квадрат, размеры его мы знаем, позиции от верха и от низа родителя мы тоже знаем, то-есть в CSS это все прописано, тем самым за счет экспрешена мы убираем задний фон с элемента, и добавляем бордюр элементу с нужным нам цветом. Затем уменьшаем элемент на то значение что указано в top/left. Вся эта хрень не будет увы работать если фоном сделать не просто зеленый цвет а например картинку, тогда увы получим мы хреню.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #12 (permalink)  
Старый 06.06.2012, 23:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote
У нас есть квадрат, размеры его мы знаем, позиции от верха и от низа родителя мы тоже знаем, то-есть в CSS это все прописано, тем самым за счет экспрешена мы убираем задний фон с элемента, и добавляем бордюр элементу с нужным нам цветом. Затем уменьшаем элемент на то значение что указано в top/left.
То есть, сплющиваем элемент по width\height, и возвращаем ему размеры с помощью borderWidth? Я правильно понял?

Сообщение от devote
Вся эта хрень не будет увы работать если фоном сделать не просто зеленый цвет а например картинку, тогда увы получим мы хреню.
Не думаю, что у свойства box-shadow может быть картинка отличное решение.
Ответить с цитированием
  #13 (permalink)  
Старый 06.06.2012, 23:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от melky
То есть, сплющиваем элемент по width\height, и возвращаем ему размеры с помощью borderWidth? Я правильно понял?
ага все верно
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #14 (permalink)  
Старый 06.06.2012, 23:16
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от melky
Этот код относится к имплементации box-shadow для IE. Так "странно", потому что это единственный адекватный и нетормозящий способ.
В принципе box-shadow ваще самая тормозная операция во всех браузерах = тут приятель сделал размазку у box-shadow в 300-400 пиксел(типо фона, как в модальном окошке) дык окно гасло и всплывало с ужасным тормозом

Пришлось эмулировать gif- картинкой с прорезом центральной области по размеру вставленного блока и opacity
Ответить с цитированием
  #15 (permalink)  
Старый 06.06.2012, 23:18
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote Посмотреть сообщение
ага все верно
хм... дело дошло до обработки "тени" фильтрами.В IE 7 появляется уродливая обводка белым вокруг #above (красный).
http://jsbin.com/ekufop/6
мне что-то подсказывает, что нужно пооперировать с Chroma filter на #above (красном). Но успехом это не увенчалось.


Сообщение от Deff
В принципе box-shadow ваще самая тормозная операция во всех браузерах = тут приятель сделал размазку у box-shadow в 300-400 пиксел(типо фона, как в модальном окошке) дык окно гасло и всплывало с ужасным тормозом

Пришлось эмулировать gif- картинкой с прорезом центральной области по размеру вставленного блока и opacity
этот "элемент гламура" безбожно тормозит в Chrome при анимациях box-shadow. Не знаю, пофиксили, или нет, но тормоза в настройках Chrome я ощущал.
никогда такое размытие не применял максимум дело доходило до 50.

Последний раз редактировалось melky, 06.06.2012 в 23:20.
Ответить с цитированием
  #16 (permalink)  
Старый 06.06.2012, 23:28
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от melky
этот "элемент гламура" безбожно тормозит в Chrome при анимациях box-shadow. Не знаю, пофиксили, или нет, но тормоза в настройках Chrome я ощущал.
Везде тормозит -во всех браузах - делал галлерею на shadow -box - захотелось обвести бордеры фоток тенью, дык если тень более 6 пиксел на 5-8 фотках - то воспроизведение этих бордюров на секунды тормозит страницу
Ответить с цитированием
  #17 (permalink)  
Старый 06.06.2012, 23:53
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

ладно, вот немного иной говнокод:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
  <title>:)</title>
<style>
  * { margin:0; padding:0; }
  
  #above, #below {
    width: 300px;
    height: 300px;
  }
  
  #above {
    background-color: red;
    position: relative;
    
    top: 10px;
    left: 15px;
  }
  #below {
    background-color: green;
    position: absolute;
    
    top: 20px;
    left: 20px;
    
    z-index: -1;
    
    /*IE7*/
    filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=3);
    /*IE8*/
    -ms-filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=3);

    /* весь этот говнокод ради ИЕ7 */
    govnokod: expression(
		this.elAppended?(
			this.elAppended.style.backgroundImage=this.parentNode.currentStyle.backgroundImage,
			this.elAppended.style.backgroundColor=this.parentNode.currentStyle.backgroundColor
		):(
			this.elAppended=document.createElement('div'),
			this.nextSibling?this.parentNode.insertBefore(this.elAppended,this.nextSibling):
			this.parentNode.appendChild(this.elAppended),
			this.elAppended.style.position='absolute',
			this.elAppended.style.width='100%',
			this.elAppended.style.height='100%',
			this.elAppended.style.backgroundImage=this.parentNode.currentStyle.backgroundImage,
			this.elAppended.style.backgroundColor=this.parentNode.currentStyle.backgroundColor,
			this.elAppended.style.left=0,
			this.elAppended.style.top=0,
			this.elAppended.style.zIndex=-1
		)
	);
  }
</style>
</head>
<body>
  <div id="above">
    Hello World
    <div id="below"></div>
  </div>
</body>
</html>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 07.06.2012 в 00:11.
Ответить с цитированием
  #18 (permalink)  
Старый 06.06.2012, 23:56
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

поправил немного
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #19 (permalink)  
Старый 07.06.2012, 00:12
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вот даже проблему с задним фоном решил, тоесть если у родителя другой цвет будешь ставить скриптом, или вообще картинку, то все будет чики-поки.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #20 (permalink)  
Старый 07.06.2012, 00:20
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote Посмотреть сообщение
поправил немного
хм... теперь expression один раз создаёт "заготовку" - элемент с такими же размерами, но без содержимого, который перекрывает зелёный элемент (тень), и находится прямо за красным элементом (отбрасывающим тень).

хм.. три элемента вместо одного.. это всё-же лучше бажёного VML, где отваливается правая-нижняя часть у rect в IE8.

немного поигрался... но не понял, почему пропадает зеленый блок (т.е. скрывается за копией красного)

и зачем нужна эта строчка :
this.nextSibling?this.parentNode.insertBefore(this.elAppended,this.nextSibling):
			this.parentNode.appendChild(this.elAppended),


... и почему нельзя вынести свойства в таблицу стилей это меня удивило больше всего

Засейвил здесь:
http://jsbin.com/ekufop/8/


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


PS завтра докурю и добью box-shadow в IE. сейчас я уже начинаю тупить, и завтра рано вставать. спасибо за помощь.

Последний раз редактировалось melky, 07.06.2012 в 00:26. Причина: кривая ссылка № 2
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация Set и Map FINoM Ваши сайты и скрипты 5 22.02.2012 03:12
Помогите сверстать . Проблема с margin auto и z index 0931454574 (X)HTML/CSS 10 12.08.2011 20:32
Чем занимаются JS-программеры. JSTalker Оффтопик 69 02.02.2011 10:18