Replacing icons with CSS

Jump to: navigation, search

Note: You are currently viewing documentation for Moodle 1.9. Up-to-date documentation for the latest stable version is available here: Replacing icons with CSS.

It is possible to replace icons with CSS. You can also place alternate icon set files within your theme's folder but this has some drawbacks compared with the CSS approach.

  • you must use .gif files, which prevents you using alpha transparency available with .pngs
  • you can't send different images to different browsers (e.g. .gifs to IE, .png to everyone else)
  • the images must be the same size as the standard icons (in most cases at least), namely 16x16 pixels
  • you can't switch images via javascript/mouseover/rollovers/alternate stylesheets etc.
  • you can't make the images part of the clickable area of associated links

On the other hand, the drawbacks of the CSS approach are:

  • the old icons are still downloaded, and part of the HTML even though they are not displayed
  • it may not work in every case (a more complete method using CSS3 is available but only works in certain, newer browsers)

How to replace icons with CSS

Removing current icons

The first step to providing alternative icons via CSS, is to hide the current icons.

removing sideblock icons

   .sideblock .c0 {display: none;}

removing activity and resource icons

   .activity img.activityicon {display: none;}

icons that can't currently be replaced

  • course requires enrollment key icon
  • course allows guest access icon

oddities, problems, issues

  • you can't have different icons for each different resource type (e.g. pdf, weblink, text resource)

Applying new icons

The next stage is to apply new icons. These will be added as background images, that occupy the left hand side of the associated link tag, with the text moved along to the right.

adding sideblock icons

   .sideblock .c1 a {background-repeat: no-repeat; padding-left: 20px;}

Then each individual sideblock icon needs to be applied e.g.

    .block_course_list .c1 a {background-image: url(;}

adding activity and resource icons

   td.activity > a {background-repeat: no-repeat; padding-left: 20px;}

Then each individual activity icon needs to be applied e.g.

   td.activity.glossary > a {background-image: url(;}

(this code only works on Firefox and other browsers that support child selectors, there is a workaround but it's fairly ugly. I will add this once it is fine tuned)