Janko is UI designer, software engineer, blogger, speaker and artist. Janko has posted 20 posts at DZone. You can read more from them at their website. View Full User Profile

CSS Message Boxes for different message types

  • submit to reddit

Can you believe this: Few days ago I went to my bank to check my credit score with the Credit Bureau. The bank official typed in my personal data and sent a request. Web application responded by displaying a yellow message box with an exclamation icon saying that data processing is still in progress. He checked several more times, but he didn't notice that at one moment the message changed to "Account available". But the message box hasn't changed. He continued to check a few more times and eventually he realized that the request was successful.

I don't know what was in the minds of developers and designers who created this application, but it certainly wasn't the user. This poor bank official was really frustrated. I can't imagine what the rest of the application looks like.

To prevent this, different message types should be displayed differently. My opinion is that every web application should handle four main message types: information, successful operation, warning and error. Each message type should be presented in a different color and different icon. A special message type represents validation messages.

I will show you a remake of CSS message boxes I used on my latest project. I changed them slightly just to make them simpler for this example. In next article, you will see how to create ASP.NET user control that can support different message types and how to style it using CSS. You will also see how to style ValidationSummary in a similar way.

Let's first take a quick look at message types.

1. Information messages

The purpose of information messages is to inform the user about something relevant. This should be presented in blue because people associate this color with information, regardless of content. This could be any information relevant to a user action.

Informational messagesInformational messages

For example, info message can show some help information regarding current user action or some tips.

2. Success messages

Success messages should be displayed after user successfully performs an operation. By that I mean a complete operation - no partial operations and no errors. For example, the message can say: "Your profile has been saved successfully and confirmation mail has been sent to the email address you provided". This means that each operation in this process (saving profile and sending email) has been successfully performed.

Success MessagesSuccess Messages

I am aware that many developers consider this as an information message type, but I prefer to show this message type using it's own colors and icons - green with a checkmark icon.

3. Warning messages

Warning messages should be displayed to a user when an operation couldn't be completed in a whole. For example "Your profile has been saved successfully, but confirmation mail could not be sent to the email address you provided.". Or "If you don't finish your profile now you won't be able to search jobs". Usual warning color is yellow and icon exclamation.

Warning MessagesWarning Messages

4. Error messages

Error messages should be displayed when an operation couldn't be completed at all. For example, "Your profile couldn't be saved." Red is very suitable for this since people associate this color with an alert of any kind.

Error MessagesError Messages

Design process

Now when we know the way to present messages to users, let's see how to implement a it using CSS. Let's take a quick look at the design process.

I will keep this as simple as I can. The goal is to have a single div that implements a single CSS class. So the HTML markup will look like this:

<div class="info">Info message</div>
<div class="success">Successful operation message</div>
<div class="warning">Warning message</div>
<div class="error">Error message</div>

CSS class will add a background image to the div that will be positioned top-left. It will also create a padding inside the div so that text can have enough white space around it. Note that left padding has to be wider to prevent text overlapping with the background image.

Design LayoutDesign Layout

And here are the CSS classes for all four (five with validation) different message types:

font-family:Arial, Helvetica, sans-serif;
.info, .success, .warning, .error, .validation {
border: 1px solid;
margin: 10px 0px;
padding:15px 10px 15px 50px;
background-repeat: no-repeat;
background-position: 10px center;
.info {
color: #00529B;
background-color: #BDE5F8;
background-image: url('info.png');
.success {
color: #4F8A10;
background-color: #DFF2BF;
.warning {
color: #9F6000;
background-color: #FEEFB3;
background-image: url('warning.png');
.error {
color: #D8000C;
background-color: #FFBABA;
background-image: url('error.png');

Note: Icons used in this example are from Knob Toolbar icons collection.

Validation messages

I noticed that many developers can't distinguish between validation and other message types (such as error or warning messages). I saw many times that validation message is displayed as error message and caused confusion in the user's mind.

Validation is all about user input and should be treated that way. ASP.NET has built in controls that enable full control over user input. The purpose of validation is to force a user to enter all required fields or to enter fields in the correct format. Therefore, it should be clear that the form will not be submitted if these rules aren't matched. That's why I like to style validation messages in a slightly less intensive red than error messages and use a red exclamation icon.

Validation ErrorsValidation Errors

CSS class for validation message is almost identical to others (note that in some attributes are defined in previous code sample):

.validation {
color: #D63301;
background-color: #FFCCBA;
background-image: url('validation.png');


Messages are an important part of the user experience that is often omitted. There are many articles that show nicely styled message boxes but it is not just a matter of design. It should provide a user with meaningful information, semantically and visually.

There are two other articles I would like to recommend you:

In my next article I will show you how to create ASP.NET user control that can wrap all of these message types and present it to a user. You will also see how to apply this style to a ValidationSummary control
Published at DZone with permission of its author, Janko Jovanovic. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Michael Updegraff replied on Wed, 2009/01/14 - 12:28pm

Thank you Janko - we use these in our web apps now.

Dementrio Macias replied on Fri, 2009/03/27 - 6:17pm

Excelente articulo! Muchas gracias, me fué muy útil, y me sirve de base para mejorarlo ;)


Thank you,

Domo arigato,

 Muchas gracias!

stalin boss replied on Mon, 2009/05/18 - 10:26am in response to: Dementrio Macias

ya great......... i need more and mouse coding..........

Federico Guzman replied on Fri, 2010/01/22 - 12:22pm

i have made some modifications. My needs are to put a long text message inside the boxes but as the icon appears at the middle of the vertical vector line i changed the css stye backgroung-position to alow me to place at the top left of the box.

here is the code:

.info-box, .success-box, .warning-box, .error-box { 

    border: 1px solid; 
    margin: 10px 0px; 
    padding:5px 5px 5px 30px; 
    background-repeat: no-repeat; 
    background-position: 10px center;
    font: normal 100% Helvetica, Arial, sans-serif;

.info-box { 
    color: #00529B; 
    background:#BDE5F8 url(/images/info.png) top left no-repeat;
    background-position: 5px 5px;

.success-box { 
    color: #4F8A10; 
    background:#DFF2BF url(/images/success.png) top left no-repeat;
    background-position: 5px 5px;

.warning-box { 
    color: #9F6000; 
    background:#FEEFB3 url(/images/warning.png) top left no-repeat;
    background-position: 5px 5px;

.error-box { 
    color: #D8000C;
    background:#FFBABA url(/images/error.png) top left no-repeat;
    background-position: 5px 5px;

Dan Rodgers replied on Mon, 2010/08/30 - 2:03pm

Did you modify the validation icon from the knob pack? Can you provide it?

Will Gordon replied on Fri, 2013/06/21 - 10:26am

I think the only modification I would recommend is to actually abstract the css further. Set up the combined css ".info, .success, .warning, .error, .validation" as ".message". This allows you to create many more arbitrary messages that look and act the same as all others without having to modify the combined css to include the new class name. And then double class the html, "<div class="info message">Info message</div>"

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.