Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2011, 05:37
Аватар для mat_ppc
Аспирант
Отправить личное сообщение для mat_ppc Посмотреть профиль Найти все сообщения от mat_ppc
 
Регистрация: 29.04.2010
Сообщений: 31

Доступ к свойствам стилей CSS3
Всем привет! Решил оживить дизайн анимацией, но никак не получается прочитать значения таких свойств как: box-shadow, border-radius... Пытался следущим образом:
window.getComputedStyle(elem,null).getPropertyValue("box-shadow"); //возвращает ноль

Не подскажите как мне вычленить из стиля нужного мне элемента например box-shadow?
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2011, 09:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от mat_ppc
никак не получается прочитать значения таких свойств
А "составные" (т.е. с минусом/дефисом) свойства ЦСС2 так читаются?
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2011, 09:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Если не читает - значит его нет.
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
html, body {height:132px}
body {
-moz-box-shadow:#f00 0 0 20px 10px inset;
-webkit-box-shadow:#0f0 0 0 20px 10px inset;
-o-box-shadow:#00f 0 0 20px 10px inset;
box-shadow:#000 0 0 20px 10px inset;
}
</style>
</head>
<body>   

<script type="text/javascript">
var s=getComputedStyle(document.body,null);
alert(
s.getPropertyValue('box-shadow') ||
s.getPropertyValue('-moz-box-shadow') ||
s.getPropertyValue('-webkit-box-shadow') ||
s.getPropertyValue('-o-box-shadow') ||
false
)
</script>
  
</body>
</html>

Последний раз редактировалось Aetae, 17.02.2011 в 09:41.
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2011, 13:31
Аватар для mat_ppc
Аспирант
Отправить личное сообщение для mat_ppc Посмотреть профиль Найти все сообщения от mat_ppc
 
Регистрация: 29.04.2010
Сообщений: 31

Спасибо! =) Но Opera11 возвращает false... хотя она уже корректно работает именно с box-shadow.
Ответить с цитированием
  #5 (permalink)  
Старый 17.02.2011, 22:01
Аватар для mat_ppc
Аспирант
Отправить личное сообщение для mat_ppc Посмотреть профиль Найти все сообщения от mat_ppc
 
Регистрация: 29.04.2010
Сообщений: 31

Всем спасибо за ответы, зацените замут:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shadow Animation by mat.twg</title>
<script>

var shadow = function()
{
	this.r=0;
	this.g=0;
	this.b=0;
	this.a=0;
	this.s=0;
	
	this.timer_pointer;
	
	this.clear = function(){clearInterval(this.timer_pointer);}
}

//------------------------

function box_init(box_obj)
{
		box_obj.shadow = new shadow();
		
		box_obj.shadow.r = 128;
		box_obj.shadow.g = 129;
		box_obj.shadow.b = 255;
		box_obj.shadow.a = 0.3;
		box_obj.shadow.s = 6;
		

		box_obj.onmouseover = function()
		{	
			box_obj.shadow.clear();
			change_shadow(10,0,0,0,0.4, 10, 10, box_obj);
		}
		
		box_obj.onmouseout = function()
		{
			box_obj.shadow.clear();
			change_shadow(6,128,129,255,0.3, 50, 10, box_obj);
		}
		
		box_obj.onmouseover();
}

//------------------------

	function change_shadow(size, r,g,b,alpha, step,timeInterval, box_obj)
	{
		var increment=0;
		var obj = box_obj;
		
		var r_coff=(r-obj.shadow.r)/step;
		var g_coff=(g-obj.shadow.g)/step;
		var b_coff=(b-obj.shadow.b)/step;
		var a_coff=(alpha-obj.shadow.a)/step;
		var s_coff=(size-obj.shadow.s)/step;
		
		var const_r = obj.shadow.r;
		var const_g = obj.shadow.g;
		var const_b = obj.shadow.b;
		var const_a = obj.shadow.a;
		var const_s = obj.shadow.s;
		
		//if(ch_interval){clearInterval(ch_interval);}
		
		//if(box_obj.style.shadow.show)

		
		obj.shadow.timer_pointer = setInterval(function()
		{
			_n_s = (const_s*1+s_coff*increment);
			_n_r = Math.round(const_r*1+r_coff*increment);
			_n_g = Math.round(const_g*1+g_coff*increment);
			_n_b = Math.round(const_b*1+b_coff*increment);
			_n_a = (const_a*1+a_coff*increment);
			
			
			obj.shadow.s = _n_s;
			obj.shadow.r = _n_r;
			obj.shadow.g = _n_g;
			obj.shadow.b = _n_b;
			obj.shadow.a = _n_a;
			
			
			obj.style.cssText="box-shadow: rgba("+_n_r+","+_n_g+","+_n_b+","+_n_a+") 0pt 0pt "+_n_s+"pt 0pt;"+
			"-webkit-box-shadow:rgba("+_n_r+","+_n_g+","+_n_b+","+_n_a+") 0pt 0pt "+_n_s+"pt 0pt;"+
			"-moz-box-shadow: rgba("+_n_r+","+_n_g+","+_n_b+","+_n_a+") 0pt 0pt "+_n_s+"pt 0pt;";
			
			if(increment<step){	increment++; }
			else{clearInterval(obj.shadow.timer_pointer); }
			
			
		}, timeInterval);
		
		
	}
	
//------------------------

</script>

<style>

	html
	{
		margin: 0;
		padding: 0;
		height:100%;
	}
	body
	{
		margin: 0;
		padding: 0;
		height: 100%;
		min-height: 100%;
		overflow: hidden;
		cursor: default;
		background-repeat: no-repeat;
		background-position: center top;
		font-size: 14px;
		
		background-color:#CCC;
		
		background-attachment: fixed;
	
		font-family:Arial, Helvetica, sans-serif;
	}
	
	.test
	{

		width: 100px;
		height: 100px;
		margin:auto;

		border: 1px solid rgba(0,128,128,0.3);
		
		border-radius: 6px;
		
		-moz-border-radius: 6px;
		
		box-shadow: rgba(128,129,255, 0.3) 0pt 0pt 6pt 0pt;
		
		-webkit-box-shadow: rgba(128,129,255, 0.3) 0pt 0pt 6pt 0pt;
		-moz-box-shadow: rgba(128,129,255, 0.3) 0pt 0pt 6pt 0pt;		
	}
	
</style>

</head>

<body>

		  <table width="100%" border="0" style="height:100%" align="center">
		    <tr>
		      <td><div class="test" onmouseover="box_init(this);"></div></td>
		      <td><div class="test" onmouseover="box_init(this);"></div></td>
		      <td><div class="test" onmouseover="box_init(this);"></div></td>
              <td><div class="test" onmouseover="box_init(this);"></div></td>
		      <td><div class="test" onmouseover="box_init(this);"></div></td>
		      <td><div class="test" onmouseover="box_init(this);"></div></td>
              <td><div class="test" onmouseover="box_init(this);"></div></td>
	        </tr>
	      </table>

</body>

</html>


ps: тестировал в опере11, Хорме, FF3.6, сафари5.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в jQuery получить доступ к фрейму или самому верхнему окну? Neokortex jQuery 7 20.12.2010 10:38
CSS3 3 примера flash и сss3 mycoding Оффтопик 4 25.07.2010 15:15
Доступ к локальному котексту Aleko Общие вопросы Javascript 2 28.04.2010 12:46
Изменение путей к таблицам стилей и скриптам в скрипете галереи lightbox 2.04 Flashton Элементы интерфейса 1 01.02.2010 10:10