Jump to content

Inline hover


The Little Guy

Recommended Posts

I am building a css string using javascript, the string looks like the following code, and for readability I made it multi-line originally it is one line

 

{
right:26px;top:20px;
position:absolute;
width:16px;height:16px;
background-image:url(\'http://img.nebala.com/main/icons16x16.png\');
display:block;cursor:pointer;
}
:hover{
background-position:-16px 0;
}

 

The string is then added to an element using:

htmlElement.setAttribute('style', atts);

 

The string well doesn't work because the CSS is wrong, what can I do to make the css correct? I need to some how using an inline hover. What I am using above is what I read, but it doesn't work...

Link to comment
https://forums.phpfreaks.com/topic/190885-inline-hover/
Share on other sites

I know that, but the problem is that the css is dynamic, that is why I need to use JavaScript, because I want to set the background position of the image. I have one image that holds 2+ images, and each image has a hover image, by using javascript I can set where the image will start. Then using a hover effect I can change the image's x position when the user hover overs it. I am trying to avoid having to make 100 classes.

Link to comment
https://forums.phpfreaks.com/topic/190885-inline-hover/#findComment-1006947
Share on other sites

I figured out an answer to my problem :)

 

basically what I did was all JS

 

- First I created a link, with two attributes: class, content.

- Class has either "icon16x16" or "icon32x32" depending on the icon set I want to use.

- Content is formated like so: "B{background-color:#FFF;}"

- Content has regex used on it in the JS to get the value(s) before "{" and inside "{}" for this example "B" means "bold"

- Then we look at some if statements, and find "B" and set the image to the position and set it's onmouseover/onmouseout in the javascript

- Finally it is all added to the tag to make it look like an icon :)

 

Here is the full thing at the moment:

function setIcons(){
var icons = document.getElementsByTagName('a');
for(var i=0;i<icons.length;i++){
	if(icons[i].getAttribute('class') == 'icon16x16' ||
		icons[i].getAttribute('class') == 'icon32x32'){
		var content = icons[i].getAttribute('content');
		var patt1 = new RegExp("(.+?)|((.+?)\{.+\})");
		var value = patt1.exec(content)[0];
		var patt2 = new RegExp("\{(.+?)\}");
		var xtraStyle = patt2.exec(content);
		if(xtraStyle != null){
			xtraStyle = xtraStyle[1];
			var atts = xtraStyle;
		}else{
			var atts = '';
		}
		var backPos = '';
		var backPosH = '';
		if(value == 'X'){
			backPos += '0 0';
			backPosH += '-16px 0';
			atts += 'background-position:0 0;';
		}else if(value == '_'){
			backPos += '0 -16px';
			backPosH += '-16px -16px';
			atts += 'background-position:0 -16px;';
		}
		if(value == 'B'){
			backPos += '0 0';
			backPosH += '-32px 0';
			atts += 'background-position:0 0;';
		}
		if(value == 'U'){
			backPos += '0 -32px';
			backPosH += '-32px -32px';
			atts += 'background-position:0 -32px;';
		}
		if(value == 'I'){
			backPos += '0 -64px';
			backPosH += '-32px -64px';
			atts += 'background-position:0 -64px;';
		}
		if(value == '<'){
			backPos += '0 -96px';
			backPosH += '-32px -96px';
			atts += 'background-position:0 -96px;';
		}
		if(value == '^'){
			backPos += '0 -128px';
			backPosH += '-32px -128px';
			atts += 'background-position:0 -128px;';
		}
		if(value == '>'){
			backPos += '0 -160px';
			backPosH += '-32px -160px';
			atts += 'background-position:0 -160px;';
		}
		var url = '';
		var d = '';
		if(icons[i].getAttribute('class') == 'icon16x16'){
			url = 'http://img.nebala.com/main/icons16x16.png';
			d = 16;
		}else{
			url = 'http://img.nebala.com/main/icons32x32.png';
			d = 32;
		}
		atts += 'background-image:url(\''+url+'\');background-repeat:no-repeat;width:'+d+'px;height:'+d+'px;display:block;cursor:pointer;}';
//			:hover{background-position:-16px 0;}
		icons[i].setAttribute('style', atts);
		icons[i].setAttribute('onmouseover', 'this.style.backgroundPosition = "'+backPosH+'";this.style.backgroundColor = "#ddefff";');
		icons[i].setAttribute('onmouseout', 'this.style.backgroundPosition = "'+backPos+'";this.style.backgroundColor = "#FFFFFF";');
	}
}
}

Link to comment
https://forums.phpfreaks.com/topic/190885-inline-hover/#findComment-1007244
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.