• 0

CSS Content String concatenation


Question

Is it possible to use string concatenation with the content property. I'm trying to display an image before every item in my list, but I want this image to be a link. Here's what I want to do, but I don't know how to do this. If anyone can help me out, that would be great. Thanks.

#side-nav ul li:before {
	position: relative;
	float:right;
	top: 15px;
	content: "<a href='http://url'>" + url('arrow.png') + "</a>";
}

Link to comment
https://www.neowin.net/forum/topic/1130684-css-content-string-concatenation/
Share on other sites

11 answers to this question

Recommended Posts

  • 0

No, you can't do it like this. CSS will not render the tags you input. Converts it to <

What is the actual URL you want to link to?

It might be "better" to add a new anchor element in script rather than use CSS. After all, you are adding function rather than style.

  • 0

Here's the script if you want it...


<script>

var figures = document.getElementsByTagName("li");
for (var counter = 0; counter < figures.length; counter++) {
var newLink = document.createElement("a");
newLink.setAttribute("href", "bob");
var txtNode = document.createTextNode("Hello. This is a new node.");
newLink.appendChild(txtNode);

figures[counter].insertBefore(newLink,figures[counter].firstChild)
}


</script>
[/CODE]

Ignore the naming convention, I had just written on my site and I have the figure element. You might have to extend the functionality so that other lists are ignored, but I can't be bothered to write that for free... :-)

  • 0
  On 14/01/2013 at 23:20, kman1985 said:

Well if I use jquery can't I just do it all in jquery? Add both the image and the link after the certain element list item? Thanks.

If you already have jQuery, you can change my code (which does the same thing) for jQuery. The selector part of it will be easier if you use jQuery.


var $newLink = $("<a />"),
$existingListItems = $("#side-nav ul li");
$newLink.attr("href","http://url
.text("Here's my new item")
.css({
position: "relative",
float:"right",
top: "15px"
});
$existingListItems.prepend($newLink)
[/CODE]

  • 0

Please don't use javascript for this. :s

Or if you do, at least consider what will happen if your user doesn't have js enabled. I don't see why


<ul>
<li><a href="somewhere"><img /></a><p>List element text</p></li>
...
</ul>
[/CODE]

Wouldn't work for you, though.

  • 0
  On 15/01/2013 at 19:10, threetonesun said:

Please don't use javascript for this. :s

Or if you do, at least consider what will happen if your user doesn't have js enabled. I don't see why


<ul>
<li><a href="somewhere"><img /></a><p>List element text</p></li>
...
</ul>
[/CODE]

Wouldn't work for you, though.

I was assuming he didn't have access to the code behind that renders these elements. Then again, I don't get why he would want a link in the side nav that isn't already there. It's a nav bar... why add an image link in there? If it's for visible purposes, then I would advise adding it as a background image.

Then again, it might help if he listed his actual problem rather than for just a solution to an isolation code issue.

  • 0
  On 15/01/2013 at 19:21, lunamonkey said:

I was assuming he didn't have access to the code behind that renders these elements. Then again, I don't get why he would want a link in the side nav that isn't already there. It's a nav bar... why add an image link in there? If it's for visible purposes, then I would advise adding it as a background image.

Then again, it might help if he listed his actual problem rather than for just a solution to an isolation code issue.

Fair enough. If there's already a link in a <li> and he can't get at the source, appending with js is probably the best way to go.

  • 0

Thanks guys. Got it working with jquery. Heres the code I used.

$(document).ready(function() {
	$('&lt;img src="/images/big-arrow.png" alt="Arrow" width="22" height="22" border="0" /&gt;').appendTo('#side-nav ul li');

	$('#side-nav ul li img').css ({
		position: 'relative',
		float: 'right',
		top: '-30px',
		left: '-5px'	  
	});

});

  • 0
  On 13/01/2013 at 21:09, kman1985 said:

Is it possible to use string concatenation with the content property.

 

Expand  

You don't use + with concatenation in CSS. An example of string concatenation would be

content: "foo" "bar";

Which would result simply in "foobar" on the screen.

A real world example of concatenation with the content property would be something like this

ol {
  li {
    :before {
      content: counter(li)".";
    }
  }
}

Which would result in numbers followed by periods (1. 2. 3. etc.)

This topic is now closed to further replies.
  • Posts

    • Since I watch on a lot of devices and use the music service, I enjoy it. Like if I was just on PC then yeah use adblock. But I'm on watching on my phone, iPad, and TV and not always on my WiFi. The price is getting a little nuts at this point though.
    • Happens EVERY TIME a new version of WMP-HC comes out and you download it in the first few days of release. Happens a lot with other program updates that get listed in the software section here as well.
    • Hitman maker's first showcase will reveal its new James Bond game this week by Pulasthi Ariyasinghe IO Interactive is well known for its development of the Hitman series of stealth and assassination games. In a fitting twist, it was revealed back in 2020 that the studio has begun work on a James Bond game, and after years in development, it seems fans are finally getting a look at the project. Announced today, the project now has a title: 007 First Light. The brand-new game will be revealed in an exclusive showcase event. Coming in as the first ever IOI Showcase, it will be held on June 6 at 6pm PDT on the studio's own YouTube channel. "Join us for the first ever IOI SHOWCASE," said the studio in a social media post today. "Set your reminders and don't miss out on the exclusive reveals and information straight from the team!" Aside from 007 First Light information, the showcase will feature new content reveals for Hitman World of Assassination, the IO Interactive-published title MindsEye developed by Build a Rocket Boy, and more. The game is set to follow James Bond in his start as the MI6 special operative that everyone now knows him as. The origin story is said to be inspired by novels of Ian Fleming as well as the movie franchise, but it will be an original narrative by the developer. While we haven't even seen the game in action yet, IO Interactive CEO Hakan Abrak has already said that he hopes the game is successful enough to spawn a trilogy. "I don't want to speak too big about it, but I just hope we'll do a thing that will define James Bond in gaming for years to come," said Abrak last year. "And that is not only one game, but that we create a universe for gamers to own for many years to come that we can grow with that next to the Bond on the movies." While the studio hasn't revealed much more about 007 First Light since its original announcement, it has already been confirmed as coming for the Nintendo Switch 2 console. Other platforms have not been announced just yet, but it should land for PC, Xbox Series X|S, and PlayStation 5 consoles like the studio's other projects.
    • good grief .... first brittney murphy in the first run now him
    • I do not think that Windows 11 will pick up pace as October 2025 draws near. Even though I was a Windows Vista fan back in the day, this really reminds me of the (lack of) transition between Windows XP to Windows Vista. In the end, Microsoft had to backtrack and extend Windows XP support until Windows 7 was adopted.
  • Recent Achievements

    • Week One Done
      Nullun earned a badge
      Week One Done
    • First Post
      sultangris earned a badge
      First Post
    • Reacting Well
      sultangris earned a badge
      Reacting Well
    • First Post
      ClarkB earned a badge
      First Post
    • Week One Done
      Epaminombas earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      160
    2. 2
      ATLien_0
      124
    3. 3
      Xenon
      120
    4. 4
      snowy owl
      109
    5. 5
      +Edouard
      97
  • Tell a friend

    Love Neowin? Tell a friend!