I have got this html
<div id="slideMenu">
<div id="slideM1" onmouseover="colorM(1)">Something 1</div>
<div id="slideM2" onmouseover="colorM(2)">Something 2</div>
<div id="slideM3" onmouseover="colorM(3)">Something 3</div>
<div id="slideM4" onmouseover="colorM(4)">Something 4</div>
<div id="slideM5" onmouseover="colorM(5)">Something 5</div>
</div>
and this CSS
html, body{
font-family: "Century Gothic", "Apple Gothic", AppleGothic, "URW Gothic L", "Avant Garde", Futura, sans-serif;
}
#slideMenu {
float: right;
}
#slideM1:before, #slideM2:before, #slideM3:before, #slideM4:before, #slideM5:before {
content: "";
position: absolute;
top:0;
right:210px;
width: 0;
height: 0;
border-top: 32px solid transparent;
border-right: 30px solid #602F4F;
border-bottom: 32px solid transparent;
display:none;
}
#slideM1, #slideM2, #slideM3, #slideM4, #slideM5 {
background-color: silver;
height: 54px;
width: 200px;
text-align: right;
position:relative;
padding: 5px;
color: white;
margin-bottom: 2px;
}
and finally this Javascript
function colorM(n) {
document.getElementById("slideM"+n).style.backgroundColor="#602F4F";
document.getElementById("slideM"+n+":before").style.display="block";
}
Here is jsfiddle http://jsfiddle.net/xN6Da/ . As you can see CSS triangle has default value display: none;
. But after it's hovered I want to change it's value to be visible. I tried to use document.getElementById("slideM"+n+":before").style.display="block";
but it still hides the triangle, so how to remove that display: none;
from CSS with Javascript?
Thank you
::before
and::after
) are presentation-only, and are not (currently at least) available within the DOM. To adjust the styles you'd need to access the style rules in which the properties are defined and change those. Or add a class to the 'parent' element, and use that class to influence the colour. – David Thomas May 18 at 15:55