06.06.2012, 23:02
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от melky
|
devote, абалденно. Не могли бы Вы пояснить, почему он работает?
|
Все очень просто, в реале z-index в ИЕ7 работает, это можно увидеть наполнив контентом красный квадрат, тоесть текст ляжет поверх зеленого квадрата, но вот заливку заднего фона ИЕ7 не сует под элемент, поэтому засчет экспрешенов я решил вопрос так.
У нас есть квадрат, размеры его мы знаем, позиции от верха и от низа родителя мы тоже знаем, то-есть в CSS это все прописано, тем самым за счет экспрешена мы убираем задний фон с элемента, и добавляем бордюр элементу с нужным нам цветом. Затем уменьшаем элемент на то значение что указано в top/left. Вся эта хрень не будет увы работать если фоном сделать не просто зеленый цвет а например картинку, тогда увы получим мы хреню.
|
|
06.06.2012, 23:06
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от devote
|
У нас есть квадрат, размеры его мы знаем, позиции от верха и от низа родителя мы тоже знаем, то-есть в CSS это все прописано, тем самым за счет экспрешена мы убираем задний фон с элемента, и добавляем бордюр элементу с нужным нам цветом. Затем уменьшаем элемент на то значение что указано в top/left.
|
То есть, сплющиваем элемент по width\height, и возвращаем ему размеры с помощью borderWidth? Я правильно понял?
Сообщение от devote
|
Вся эта хрень не будет увы работать если фоном сделать не просто зеленый цвет а например картинку, тогда увы получим мы хреню.
|
Не думаю, что у свойства box-shadow может быть картинка отличное решение.
|
|
06.06.2012, 23:07
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от melky
|
То есть, сплющиваем элемент по width\height, и возвращаем ему размеры с помощью borderWidth? Я правильно понял?
|
ага все верно
|
|
06.06.2012, 23:16
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от melky
|
Этот код относится к имплементации box-shadow для IE. Так "странно", потому что это единственный адекватный и нетормозящий способ.
|
В принципе box-shadow ваще самая тормозная операция во всех браузерах = тут приятель сделал размазку у box-shadow в 300-400 пиксел(типо фона, как в модальном окошке) дык окно гасло и всплывало с ужасным тормозом
Пришлось эмулировать gif- картинкой с прорезом центральной области по размеру вставленного блока и opacity
|
|
06.06.2012, 23:18
|
sinistral
|
|
Регистрация: 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.
|
|
06.06.2012, 23:28
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от melky
|
этот "элемент гламура" безбожно тормозит в Chrome при анимациях box-shadow. Не знаю, пофиксили, или нет, но тормоза в настройках Chrome я ощущал.
|
Везде тормозит -во всех браузах - делал галлерею на shadow -box - захотелось обвести бордеры фоток тенью, дык если тень более 6 пиксел на 5-8 фотках - то воспроизведение этих бордюров на секунды тормозит страницу
|
|
06.06.2012, 23:53
|
что-то знаю
|
|
Регистрация: 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>
Последний раз редактировалось devote, 07.06.2012 в 00:11.
|
|
06.06.2012, 23:56
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
поправил немного
|
|
07.06.2012, 00:12
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
вот даже проблему с задним фоном решил, тоесть если у родителя другой цвет будешь ставить скриптом, или вообще картинку, то все будет чики-поки.
|
|
07.06.2012, 00:20
|
sinistral
|
|
Регистрация: 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
|
|
|
|