Camillo
Новичок
Prototype.js, scriptaculous.js, прозрачность слоёв. Проблема.
Сразу прошу прощения, что запостил сюда тему, которая с PHP вообще никак не связана, но мне почему-то показалось, что ответ на этот вопрос будет интересно узнать всем, кто так или иначе в своей работе использует js фреймворк prototype.js и набор визуальных эффектов scriptaculous.js.
Задача: Имеется 2 слоя. Один слой с прозрачностью 0.4 (id="main_cotainer"); на нем лежит другой не прозрачный слой (id="sub_container"). Верхний слой "связан" с нижним с помощью position:relative. Необходимо орагнизовать drag & drop этой связки. При этом прозрачность нижнего и верхнего слоя на протяжении всего процесса drag & drop (onStart(), onDrag(), onEnd()) долны оставаться такими, какими они были до этого. Вот пример кода. Он очень простой.
Код работает - контейнер перетаскивается, но при этом прозрачность слоя меняется непонятным образом. И, что самое важное - меняется прозрачность слоя id="sub_container" на ту же прозрачность, что и у слоя с id="main_container". Хорошо... пусть это какие-то внутренние проблемы объекта Draggable. Допустим далее я хочу средставами prototype.js назначить слою "sub_container" необходимую прозрачность. Добавляю после создания объекта Draggable из-ие стиля для слоя id="sub_container"
Всё нормально - верхний слой становится 100% видимым, но при этом ___КОНТЕЙНЕР НЕВОЗМОЖНО ПЕРЕДВИГАТЬ___! Почему?
Если бы я смог решить этот вопрос, то проблему изм-ия прозрачности решилбы через назначение стилей через prototype.js и вызова соответствующих ф-ий onStart(), onDrag(), onEnd() объекта Draggable.
Возможно стиль для id="sub_container" нужно назначать при "регистрации" объекта Draggable?
Кто-нибудь сталкивался с похожей проблемой? Буду признателен любому совету.
Сразу прошу прощения, что запостил сюда тему, которая с PHP вообще никак не связана, но мне почему-то показалось, что ответ на этот вопрос будет интересно узнать всем, кто так или иначе в своей работе использует js фреймворк prototype.js и набор визуальных эффектов scriptaculous.js.
Задача: Имеется 2 слоя. Один слой с прозрачностью 0.4 (id="main_cotainer"); на нем лежит другой не прозрачный слой (id="sub_container"). Верхний слой "связан" с нижним с помощью position:relative. Необходимо орагнизовать drag & drop этой связки. При этом прозрачность нижнего и верхнего слоя на протяжении всего процесса drag & drop (onStart(), onDrag(), onEnd()) долны оставаться такими, какими они были до этого. Вот пример кода. Он очень простой.
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script src="js/prototype.js" type="text/javascript"></script>
<script src="js/scriptaculous.js" type="text/javascript"></script>
<style>
#main_container {
background-color:#CCCCCC;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);
-moz-opacity: 0.2;
opacity: 0.2;
padding:50px;
width:300px;
text-align:center;
}
#sub_container {
color:#FF00CC;
font-weight:bold;
position:relative;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);
-moz-opacity: 1;
opacity: 1;
z-index:1;
}
</style>
</head>
<body>
<div id="main_container">
<div id="sub_container">
HELLO WORLD!
</div>
</div>
<script type="text/javascript" language="javascript">
new Draggable('main_container');
</script>
</body>
</html>
Код:
<script type="text/javascript" language="javascript">
new Draggable('main_container');
$('sub_container').setStyle({
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100),
-moz-opacity: 1,
opacity: 1
});
</script>
Если бы я смог решить этот вопрос, то проблему изм-ия прозрачности решилбы через назначение стилей через prototype.js и вызова соответствующих ф-ий onStart(), onDrag(), onEnd() объекта Draggable.
Возможно стиль для id="sub_container" нужно назначать при "регистрации" объекта Draggable?
Кто-нибудь сталкивался с похожей проблемой? Буду признателен любому совету.