PEOPLE.com Photo Archive

The initial page works perfectly fine as it is. I chose it, however, because the design called for several features that are doable via pure CSS, but are effects that we have traditionally done via images, including:

  • background gradient
  • border-radius
  • box-shadow

Using CSS3, CSS3 PIE, and IE Filters, I was able to remove all design images within the main content area.

Samples from Practical CSS3-ified CSS

.archive .more a .plus{float:left;width:14px;height:14px;margin-left:3px;padding-top:1px;background:#8c8c8c;color:#fff;font-family:'Trebuchet MS',sans-serif;font-size:16px;line-height:11px;text-align:center;
	border-radius: 3px;
	-moz-border-radius: 3px;
	-webkit-border-radius: 3px;
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
}
.archive #leftColumns .wrapper{float:left;width:994px;
	background:#151515;
	background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#0d0d0d), to(#171717), color-stop(.15,#2f2f2f));
	background:-moz-linear-gradient(0% 0% 270deg, #0D0D0D, #2F2F2F, #171717 70%);
	-pie-background:linear-gradient(0% 0% 270deg, #0D0D0D, #2F2F2F, #171717 70%);
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
}
.archive #leftColumn{float:left;display:inline;overflow:hidden;width:177px;margin-top:13px;padding:26px 0 186px;position:relative;z-index:2;background:#262626;border:1px solid #454545;border-left:0;
	box-shadow: 3px 0 10px #000;
	-moz-box-shadow: 3px 0 10px #000;
	-webkit-box-shadow: 3px 0 10px #000;
	border-radius: 0 12px 12px 0;
	-moz-border-radius: 0 12px 12px 0;
	-webkit-border-top-right-radius: 12px;
	-webkit-border-bottom-right-radius: 12px;
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
}
.archive #middleColumn .col .imgcont a img{border:1px solid #fff;
	box-shadow: 3px 4px 0 #E3E1E1, 6px 8px 0 #adadad;
	-moz-box-shadow: 3px 4px 0 #E3E1E1, 6px 8px 0 #adadad;
	-webkit-box-shadow: 3px 4px 0 #E3E1E1, 6px 8px 0 #adadad;
	-ms-filter: "progid:DXImageTransform.Microsoft.DropShadow(color='#E3E1E1',offX='3',offY='4')", "progid:DXImageTransform.Microsoft.DropShadow(color='#adadad',offX='6',offY='8')";
	filter: progid:DXImageTransform.Microsoft.DropShadow(color='#E3E1E1',offX='3',offY='4',positive='true'), progid:DXImageTransform.Microsoft.DropShadow(color='#adadad',offX='6',offY='8',positive='true');
}
.archive #middleColumn .col .imgcont a:hover img{border-color:#FDF89B;
	box-shadow: 3px 4px 0 #E3DA5A, 6px 8px 0 #ADA845;
	-moz-box-shadow: 3px 4px 0 #E3DA5A, 6px 8px 0 #ADA845;
	-webkit-box-shadow: 3px 4px 0 #E3DA5A, 6px 8px 0 #ADA845;
	-ms-filter: "progid:DXImageTransform.Microsoft.DropShadow(color='#E3DA5A',offX='3',offY='4')", "progid:DXImageTransform.Microsoft.DropShadow(color='#ADA845',offX='6',offY='8')";
	filter: progid:DXImageTransform.Microsoft.DropShadow(color='#E3DA5A',offX='3',offY='4',positive='true'),positive='true'), progid:DXImageTransform.Microsoft.DropShadow(color='#ADA845',offX='6',offY='8',positive='true');
}
.archive .modal{position:absolute;top:-9999px;left:-9999px;z-index:3;padding:9px;width:498px;height:504px;
	border-radius:20px;
	-moz-border-radius:20px;
	-webkit-border-radius:20px;
	background:rgba(207,207,207,.25);
	-ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#3FCFCFCF,endColorstr=#3FCFCFCF);
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#3FCFCFCF,endColorstr=#3FCFCFCF);
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
	zoom:1;
}
.archive .modal h3{float:left;padding:0 0 0 15px;width:483px;font-size:17px;line-height:38px;font-weight:bold;color:#f1fcff;text-transform:uppercase;
	border-radius:10px 10px 0 0;
	-moz-border-radius:10px 10px 0 0;
	-webkit-border-radius:10px 10px 0 0;
	background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#ED1B23), to(#BF161C), color-stop(.55,#ED1B23));
	background:-moz-linear-gradient(0% 0% 270deg, #ED1B23, #ED1B23 55%, #BF161C 55%, #BF161C 100%);
	-pie-background:linear-gradient(0% 0% 270deg, #ED1B23, #ED1B23 55%, #BF161C 55%, #BF161C 100%);
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
	zoom:1;
}
.archive .modal .close{position:absolute;top:18px;right:24px;width:64px;font-weight:bold;font-size:10px;line-height:17px;color:#fff;text-transform:uppercase;text-decoration:none;
	border-radius:10px;
	-moz-border-radius:10px;
	-webkit-border-radius:10px;
	background:#D17D80;
	background:rgba(190,190,190,0.6);
	box-shadow:-2px 3px 3px rgba(100,100,100,0.3);
	-moz-box-shadow:-2px 3px 3px rgba(100,100,100,0.3);
	-webkit-box-shadow:-2px 3px 3px rgba(100,100,100,0.3);
	text-shadow:0 0 2px #fff;
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
	zoom:1;
}
.archive .modal .close span{float:left;margin-right:4px;width:14px;line-height:14px;font-family:Verdana,Tahoma,sans-serif;text-align:center;border:2px solid #fff;
	box-shadow:0 0 6px rgba(0,0,0,.3);
	-moz-box-shadow:0 0 6px rgba(0,0,0,.3);
	-webkit-box-shadow:0 0 6px rgba(0,0,0,.3);
	border-radius:10px;
	-moz-border-radius:10px;
	-webkit-border-radius:10px;
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
	zoom:1;
}
.archive .modal .content{clear:both;float:left;border-width:30px 15px 15px;border-style:solid;border-color:#2C2B2B;width:468px;height:422px;overflow:hidden;overflow-y:auto;background:#2C2B2B;
	border-radius:0 0 10px 10px;
	-moz-border-radius:0 0 10px 10px;
	-webkit-border-radius:0 0 10px 10px;
	behavior: url('../../wp-content/themes/practicalcss3/css3-pie.htc');
	zoom:1;
}
				

The Results

Average after 5 loads with cleared cache and no ads:

  Requests Kb Seconds
Before 48 418.1 2.84
After 42 390.2 2.45

Obviously no huge savings anywhere in the results, thanks to the efficiency of the initial code, but if those numbers are multiplied by the 30-40k times that page is viewed each month, it could be meaningful. Additionally, if we were asked to, say, change the color of the drop-shadow effect on each of the images, it would be a simple CSS change as opposed to finding the sprite PSD, making the changes, then waiting for the image to clear cache on Akamai.

Leave a Reply

Your email address will not be published. Required fields are marked *