|
задать hover для элемента
Допустим есть элемент <a id="some">
Так вот возможно ли задать средствами JS ему :hover как этот в css #some:hover {color:#---} |
Конечно можно. Вот один из вариантов:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html><head><title>New</title>
<script type="text/javascript">
window.onload = function(){
var style = document.createElement('style');
style.type = 'text/css';
var h = '#some:hover{color:#f00}';
var hover = document.createTextNode(h);
var head = document.getElementsByTagName('head')[0];
style.appendChild(hover);
head.appendChild(style);
}
</script>
</head><body>
<h1><a id="some" href="#">test</a></h1>
</body></html>
|
ясно, значит нужно добавить стиль в Head
спасибо! |
<script type="text/javascript">
//можно сымитировать :hover c помощью событий onmouseover и onmouseout
window.onload = function(){
var some = document.getElementById('some');
some.style.color = 'lightblue';//задаем цвет по умолчанию
some.onmouseover = function(){
some.style.color = '#f00';
}
some.onmouseout = function(){
some.style.color = 'lightblue';
}
}
</script>
|
Я сделал может и криво но по-своему :)
<a id="some" onmouseover="hover('some','c14141')" onmouseout="nohover()"> Наведи на меня </a>
function hover(id,c){
// узнаем цвет до наведения и запоминаем
var color=document.getElementById(id).style.color;
if (color=="unfefined" || color==""){
var par=document.getElementById(id)
while(color=="undefined" || color==""){par=par.parentNode; color=par.style.color}
colorBefore=color}
else {colorBefore=color}
document.getElementById(id).style.color="#"+c
Hovered=id
}
function nohover(){
if (colorBefore==""){colorBefore="#000000"}
document.getElementById(Hovered).style.color=colorBefore
Hovered=""
}
тока если ни у одного из родителей не будет задан в стилях color будет плохо :) еще бы улучшить чтобы не передовать id элемента а вычислять в самой функции :) |
bushstas,
можно и без id <a onmouseover="hover(this,'c14141')" onmouseout="nohover()"> Наведи на меня </a> |
спасибо Skipp мне вот этот this пока с трудом дается оказывается все просто :)
|
bushstas,
В данном случае this передаёт ссылку на элемент <a> А вообще интересно, что этой функцией вы хотите сделать, вникать в код не хочется, суть в чём. Может что попроще подскажу. |
этой функцией я хочу изменять цвет шрифта элементов <a> при наведении на них, чтобы не прописывать в css для каждого hover, просто передовать цвет в функцию hover().
та узнает цвет текста до наведения из стиля, если не указан из стиля родителя и так далее вверх по дереву, запомнит, перекрасит текст в переданный цвет функция nohover() перекрасит текст обратно в цвет до наведения :) |
bushstas,
Похимичте с этим <a id="some" onmouseover="this.style.color='#c14141'" onmouseout="..."> Наведи на меня </a> |
| Часовой пояс GMT +3, время: 09:55. |
|