<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Ryan Ternier </title><subtitle type="html">Killer ASP.NET ninja coding monkeys do exist!</subtitle><id>http://weblogs.asp.net/rternier/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/rternier/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2007-10-25T16:21:22Z</updated><entry><title>The grass is greener where you water it.</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2008/03/28/the-grass-is-greener-where-you-water-it.aspx" /><id>http://weblogs.asp.net/rternier/archive/2008/03/28/the-grass-is-greener-where-you-water-it.aspx</id><published>2008-03-29T02:15:00Z</published><updated>2008-03-29T02:15:00Z</updated><content type="html">&lt;p&gt;I love watching people. I like to sit back, and watch peoples expressions, their body movements, their reactions to certain things. I don't really consider it eavesdropping, as I am not paying attention to the conversation, and I don't usually hear what's going on.&amp;nbsp; The other day I was watching a few developers from a larger company here in town bicker about something.. A friend of mine joined their group and saw I was drinking some coffee and invited me over.&amp;nbsp; The conversation soon turned towards working conditions, job satisfaction, salary, management etc... really whatever a group of developers talk about at a coffee shop. Now many would think we'd talk about games, however as "Geeks" we must maintain the persona that we have lives (note Geeks, not nerds... Geeks).&lt;/p&gt;&lt;p&gt;One person then mentioned the well coined phrase "Well the grass is always greener on the other side of the fence". At that point I had to but in and tell him to give his head a shake. The grass is greener where you water it! &lt;/p&gt;&lt;p&gt;As a working individual it is your duty, heck it's your God given duty to put 100% into your career / job. It doesn't matter if it's full time, part time, a "stepping stone", or whatever. If you are getting paid for a job, put your all into it because that's really what you're getting paid for. If you think the grass is greener on the other side, look at where you're at. Think of what makes the grass greener on the other side and bring it up with your manager / boss. Now there are some cases where the grass you're currently on was laid on a bed of concrete, in those rare occasions even the dirt looks greener (And you might want to either talk to your manager about buying an excavator if you're in this boat).&lt;br&gt;&lt;/p&gt;&lt;p&gt;Yes this is a bit of a rant, and it might be because I'm a new dad and my career is very important to my family. But wherever you are in your career, make it the best it can be. Put your all into it. Yes, the company across the street might have the newest computers, or the company across the way has lunch time gaming time... whatever it is, if you put your all into where you are, whenever you decide to move on you'll do it with integrity.&lt;/p&gt;&lt;p&gt;&amp;nbsp;I'm going to change my babies poopy diaper now.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6043783" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author></entry><entry><title>Acid 3 Test?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2008/03/16/acid-3-test.aspx" /><id>http://weblogs.asp.net/rternier/archive/2008/03/16/acid-3-test.aspx</id><published>2008-03-17T04:22:00Z</published><updated>2008-03-17T04:22:00Z</updated><content type="html">&lt;p&gt;Yes the &lt;a href="http://acid3.acidtests.org/" mce_href="http://acid3.acidtests.org/"&gt;Acid 3 &lt;/a&gt;test has been released. The &lt;a href="http://www.webstandards.org/press/releases/20080303/" mce_href="http://www.webstandards.org/press/releases/20080303/"&gt;official announcement is here&lt;/a&gt;, and because I loath copy/paste blog posts you will need to go there to read all the nitty/gritty about it. Pretty much Acid3 tests specifications for "web 2.0" (What the heck is web 2.0 anyways? When did the web get an update... I'm still waiting for my CD!). Too see exactly what's tested, check &lt;a href="http://www.webstandards.org/action/acid3/" mce_href="http://www.webstandards.org/action/acid3/"&gt;this &lt;/a&gt;out.&lt;/p&gt;&lt;p&gt;The cool this about this is that It shows the "Percent" on how good your browser is. Believe it or not, IE7 gets like 13%. FireFox 2.0 gets around 52%.&lt;/p&gt;&lt;p&gt;&amp;nbsp;I'm not even going to attempt to do this in IE8 beta.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5981082" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="XHTML" scheme="http://weblogs.asp.net/rternier/archive/tags/XHTML/default.aspx" /><category term="CSS" scheme="http://weblogs.asp.net/rternier/archive/tags/CSS/default.aspx" /><category term="HTML" scheme="http://weblogs.asp.net/rternier/archive/tags/HTML/default.aspx" /><category term="Acid Test" scheme="http://weblogs.asp.net/rternier/archive/tags/Acid+Test/default.aspx" /></entry><entry><title>IE8 is comming out, FireFox 3 is comming out, When's my duplicate comming out?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2008/03/16/ie8-is-comming-out-firefox-3-is-comming-out-when-s-my-duplicate-comming-out.aspx" /><id>http://weblogs.asp.net/rternier/archive/2008/03/16/ie8-is-comming-out-firefox-3-is-comming-out-when-s-my-duplicate-comming-out.aspx</id><published>2008-03-17T04:20:00Z</published><updated>2008-03-17T04:20:00Z</updated><content type="html">&lt;p&gt;Holy Cow! I know this isn't new news.&amp;nbsp; IE8 and FireFox 3.. Acid 2 tests, heck &lt;a href="http://weblogs.asp.net/rternier/archive/2008/03/16/acid-3-test.aspx" mce_href="http://weblogs.asp.net/rternier/archive/2008/03/16/acid-3-test.aspx"&gt;Acid 3&lt;/a&gt; tests. When is it going to stop?!?&lt;/p&gt;&lt;p&gt;&amp;nbsp;As some know, I'm writing a very complicated vehicle tracking system that is all web based. It can track up to 200 vehicles at once (in one browser instance), draw them on the map, and give you all the nice tid-bits of information about them. This application is very heavy CSS and JavaScript. I pretty much took most of .NET out of the application except for 3 web service calls.&lt;/p&gt;&lt;p&gt;&amp;nbsp;However, To make applications like the one I'm developing work in a real world environment, they need to be efficient. That means that if I'm going to be doing collision detection on vehicle labels (so they don't overlap) I would rather use a few extra bits of memory to remember the answers from complicated math (storing the values that are returned by using COS / SIN calculations) than to have to calculate them each time. If you didn't know anything done using COS, SIN, TAN etc.&amp;nbsp; are extremely expensive. &lt;/p&gt;&lt;p&gt;&amp;nbsp;So back on topic, I have my application, It's as efficient as I can make it, and now I have to test the efficiency in not 4, but SIX browsers. And to top it off, those browsers have tweaked Javascript engines. WHY WHY WHY! I already tried my app in these 2 new browsers, and they "do" work, but not as well as I would've hoped.&amp;nbsp; Come on, when can a Guy run a simple &amp;lt;div&amp;gt; collision detection script that checks over 100 divs and repositions them in a self expanding circle every second? Why does it need to take 3.2 seconds?&lt;br&gt;&amp;nbsp;&lt;br&gt;I know... to better humanity and all other species on this earth, new web browsers are pertinent in order to form an electronic self sustaining ecosystem. Anyways, WHY! I already have 4 browsers to test (IE7, FireFox 2.0, Opera, safari... stupid Safari), and now I need to test on 2 more? You know, the day when those 2 browsers (or days) get released I'll forget to test on them and I'll get over 100 emails in my inbox stating that my website broke the internet (if that were true then I'd really have something to blog about).&lt;/p&gt;&lt;p&gt;Can we invest more money in holograms like on Star Trek so I can get a duplicate to do the testing? I know testing is the bestest most funnestest thing ever and that programmers everywhere are running at the opportunity to test... but I'll sacrifice my ego and let my hologram clone do it for me.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;Ok I'll stop whining now.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5981158" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="JavaScript" scheme="http://weblogs.asp.net/rternier/archive/tags/JavaScript/default.aspx" /><category term="IE8" scheme="http://weblogs.asp.net/rternier/archive/tags/IE8/default.aspx" /><category term="IE7" scheme="http://weblogs.asp.net/rternier/archive/tags/IE7/default.aspx" /><category term="Whining" scheme="http://weblogs.asp.net/rternier/archive/tags/Whining/default.aspx" /><category term="FIreFox 3.0" scheme="http://weblogs.asp.net/rternier/archive/tags/FIreFox+3.0/default.aspx" /></entry><entry><title>Why I love Javascript, and Ie7 hates extra ,'s in prototyping</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2008/01/31/why-i-love-javascript-and-ie7-hates-extra-s-in-prototyping.aspx" /><id>http://weblogs.asp.net/rternier/archive/2008/01/31/why-i-love-javascript-and-ie7-hates-extra-s-in-prototyping.aspx</id><published>2008-01-31T18:04:00Z</published><updated>2008-01-31T18:04:00Z</updated><content type="html">&lt;p&gt;I've been working with javascript rather heavily for the past few... many months. Years ago when I started working with ASP.NET I was naive and thought everything should be done server side. I thought that the server should do all the work so the clients computers would be able to work fast.&amp;nbsp; It took only 1 year for me to turn that thinking around.&amp;nbsp; JavaScript rocks!&amp;nbsp; &lt;/p&gt;  &lt;p&gt;ASP.NET AJAX works great with JavaScript.&amp;nbsp; You can point to a web service (in your current domain), get the data you need,&amp;nbsp; and do all the XHTML/HTML Markup changes necessary without a postback to the server. (yes some postbacks are evil)&lt;/p&gt;  &lt;p&gt;So why do I love JavaScript? Aside from the Asynchronous nature of it (which can really screw with your mine sometimes), it makes the client computers do the work, and takes the load of your servers. It might be easy for your server to render a DataList of 100 rows. However, if you need that list updated every 10 seconds with the newest data, your server will start complaining when 1000-10,000 people are viewing that page.&amp;nbsp; You could cache the data, but you'll still be rendering the DataList in your presentation layer.&amp;nbsp; With JavaScript, you can create a simple object (note JavaScript is not an object based language, you use prototypes... but for the simple eye they look like objects) that can do this for you:&lt;/p&gt;  &lt;p&gt;DataItem = function(data)   &lt;br&gt;{    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.UserID = data.UserID;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.UserName = data.UserName;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.FullName = data.FullName;    &lt;br&gt;} &lt;/p&gt;  &lt;p&gt;DataItem.prototype = {   &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; toString = function()    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return '&amp;lt;div class="detail"&amp;gt;UserID: ' + this.UserID = ', UserName: ' + this.UserName = ', FullName: ' + this.FullName = '&amp;lt;/div&amp;gt;';    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; test = function()    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var d = "test";    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return d;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },    &lt;br&gt;}&lt;/p&gt;  &lt;p&gt;When you get the results back from your webservice, you can loop through them, creating this object (yea yea) from the data returned, and easily output the data you need.&amp;nbsp; Very simple, and you have full control. You don't need to rebuild your application if you want to change how a simple list works. &lt;/p&gt;  &lt;p&gt;This is where I left off last night with some script I was working on. I get to the office and I began testing it again, pulling my hair out.&amp;nbsp; FireFox was working fine, however IE7 was blowing up. I kept getting "&amp;lt;custom object&amp;gt; is Undefined".&amp;nbsp; After creating a few test prototypes I found the culprit... the trailing "&lt;b&gt;,&lt;/b&gt;" in the last function of my prototype. IE is expecting there to be a new function, FireFox ignores it.&lt;/p&gt;  &lt;p&gt;JavaScript is strict, and I love it!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5682776" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="JavaScript" scheme="http://weblogs.asp.net/rternier/archive/tags/JavaScript/default.aspx" /><category term="IE7" scheme="http://weblogs.asp.net/rternier/archive/tags/IE7/default.aspx" /></entry><entry><title>CSS - Sprites?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2008/01/17/css-sprites.aspx" /><id>http://weblogs.asp.net/rternier/archive/2008/01/17/css-sprites.aspx</id><published>2008-01-17T19:13:33Z</published><updated>2008-01-17T19:13:33Z</updated><content type="html">&lt;p&gt;Web Designers are always trying to find new and innovative (read:easier and better) ways of creating web sites. Today I stumbled across two sites that really push this.&lt;/p&gt;  &lt;p&gt;Remember back in the VB 6 days, or even the C and C++ days where you used Sprites? If any of you ever looked at old NES, SNES emulated games, you would see the graphics were all sprites.&lt;/p&gt;  &lt;p&gt;Now you can do this with CSS... well you've always been able to do it, but now it's been shown to really work.&amp;#160; Take a roll-over button for example. Instead of creating 2-3 images for this roll-over, why not have 1 image and you just use a bit of CSS (&lt;a href="http://weblogs.asp.net/rternier/archive/2007/10/18/a-table-some-text-and-css-pseudo-classes.aspx" target="_blank"&gt;pseudo classes&lt;/a&gt;)&amp;#160; and you're done. This is &lt;a href="http://wellstyled.com/css-nopreload-rollovers.html" target="_blank"&gt;explained&lt;/a&gt; on &lt;a href="http://wellstyled.com" target="_blank"&gt;WellStyled.com&lt;/a&gt; very well.&lt;/p&gt;  &lt;p&gt;Another great &lt;a href="http://www.alistapart.com/articles/sprites/" target="_blank"&gt;example&lt;/a&gt; of this was found on &lt;a href="http://www.alilstapart.com" target="_blank"&gt;A List Apart&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Gone are the days of creating massive images for everything. Aren't the old ways always best? &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5613675" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="CSS" scheme="http://weblogs.asp.net/rternier/archive/tags/CSS/default.aspx" /></entry><entry><title>VS 2008 - Crashing</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/12/27/vs-2008-crashing.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/12/27/vs-2008-crashing.aspx</id><published>2007-12-27T16:00:26Z</published><updated>2007-12-27T16:00:26Z</updated><content type="html">&lt;p&gt;For the past bit now I've been getting this when starting VS 2008:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/VS2008Crashing_7096/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="210" alt="image" src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/VS2008Crashing_7096/image_thumb.png" width="375" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This happens whenever I start VS 2008 from a shortcut / main application.&amp;#160; Even If I quickly close the start screen and load my project this happens. The only way to actually get into a project is to open in VS 2008 is to open it from the .SLN file. This will not crash VS 2008 and it will work fine.&lt;/p&gt;  &lt;p&gt;I'm not sure why this is happening - I'll probably re-install it... when I have time...&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5508515" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="Visual Studio 2008" scheme="http://weblogs.asp.net/rternier/archive/tags/Visual+Studio+2008/default.aspx" /><category term="VS 2008" scheme="http://weblogs.asp.net/rternier/archive/tags/VS+2008/default.aspx" /></entry><entry><title>IE8 Passes the Acid2 test</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/12/21/ie8-passes-the-acid2-test.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/12/21/ie8-passes-the-acid2-test.aspx</id><published>2007-12-21T18:29:56Z</published><updated>2007-12-21T18:29:56Z</updated><content type="html">&lt;p&gt;As many web developers know, Internet Explorer has always been behind the times for Web Standards.&amp;#160; Just last week IE8 (Which is still in development) passed the Acid2 test. The Acid2 Test's main website is &lt;a href="http://www.webstandards.org/action/acid2/" target="_blank"&gt;here&lt;/a&gt;, and you can view the actual &lt;a href="http://www.webstandards.org/files/acid2/test.html#top" target="_blank"&gt;test here&lt;/a&gt;.&amp;#160; The Acid2 test has correct CSS and incorrect CSS. The test is to determine how a browser handles CSS(correct and incorrect). The long list of standards that web browsers has to support (W3C is only one body of standards), you can imagine how great the IE team must feel.&lt;/p&gt;  &lt;p&gt;The ironic thing was as I was reading about this, I was told my new application needs to be supported by IE6 now... 10,000 lines of JS Script... 100+ images (alpha-transparent PNG...) oh the joy.&lt;/p&gt;  &lt;p&gt;Here's a &lt;a href="http://blogs.msdn.com/ie/archive/2007/12/19/internet-explorer-8-and-acid2-a-milestone.aspx" target="_blank"&gt;link&lt;/a&gt; to the IEBlog that talks more about this.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5484370" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="CSS" scheme="http://weblogs.asp.net/rternier/archive/tags/CSS/default.aspx" /><category term="IE8" scheme="http://weblogs.asp.net/rternier/archive/tags/IE8/default.aspx" /><category term="Web Standards" scheme="http://weblogs.asp.net/rternier/archive/tags/Web+Standards/default.aspx" /></entry><entry><title>First  look at VS 2008 - JavaScript intelisence.</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/12/19/first-look-at-vs-2008-javascript-intelisence.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/12/19/first-look-at-vs-2008-javascript-intelisence.aspx</id><published>2007-12-19T15:33:00Z</published><updated>2007-12-19T15:33:00Z</updated><content type="html">&lt;p&gt;Yesterday I downloaded and installed VS 2008 Professional (MSDN License). The process was mild and pretty easy... uninstall all the beta software, install the new software etc. The only problem I had was when I launched a 2005 application (under TFS Source control). VS 2008 (And Team Explorer 2008 by extension) didn't really like this. I got a lot of errors, so I went back to VS 2005, manually checked out the entire solution, then loaded it up in VS 2008.&amp;nbsp; This worked like a charm.&lt;/p&gt;&lt;p&gt;Once my app was loaded in VS 2008 I was eager to try the new JavaScript Intelisence.&amp;nbsp; This is actually the main reason for me installing this new release as my application is 80% JavaScript (approx 10,000 lines).&amp;nbsp; One thing I noticed is the Intelisence only worked for the JS file I was working on. It wouldn't map to the other 30 or so JS files I have in my folder (I'm not sure If I need to do anything special for this).&amp;nbsp; This really was a bit of a disapointment, but I understand why... the compiler doesn't know I'm using the other JS files... I wonder if there's an "include" command or something that would work... &lt;br&gt;&lt;/p&gt;&lt;p&gt;If anyone knows any ways of telling the complier to link JS files (without manually copying the script) let me know.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;So far I'm impressed. Good job Microsoft &amp;amp; the VS Team.&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5473344" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="JavaScript" scheme="http://weblogs.asp.net/rternier/archive/tags/JavaScript/default.aspx" /><category term="VS 2008" scheme="http://weblogs.asp.net/rternier/archive/tags/VS+2008/default.aspx" /></entry><entry><title>Ryan has become a Dad!</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/11/23/ryan-has-become-a-dad.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/11/23/ryan-has-become-a-dad.aspx</id><published>2007-11-23T17:29:00Z</published><updated>2007-11-23T17:29:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/RyanhasbecomeaDad_8576/Baby%20Aidan%20011_2.jpg" mce_href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/RyanhasbecomeaDad_8576/Baby%20Aidan%20011_2.jpg"&gt;&lt;img src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/RyanhasbecomeaDad_8576/Baby%20Aidan%20011_thumb.jpg" style="border: 0px none ;" alt="Baby Aidan 011" mce_src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/RyanhasbecomeaDad_8576/Baby%20Aidan%20011_thumb.jpg" align="left" border="0" height="184" width="244"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;It's been a long week. But I am very proud to announce that I have become a Dad and joined the elite.&amp;nbsp; Thursday 15 November 2007 at 9:38pm PST the little ninja on the left was born.&amp;nbsp; He was born at 7lb 10 ounces, 50cm long and was the most beautiful thing in the world.&lt;/p&gt;  &lt;p&gt;My wife and I agree on this: I never believed in true love at first site until I saw Aidan. Oh, my sons name?&amp;nbsp; Aidan George Alexander Ternier.&amp;nbsp; It's been an amazing week. He's kept us up at night, he's made us laugh with all of his facial expressions, and has made me appreciate my parents way more. He's also helped all the local coffee companies out there because I'm drinking more than usual now.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;My blogging will slow down a bit as I now have almost 0 time. I'm still alive... but just barely... need... coffee... green tea... pii...zza?&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5319761" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="Ninjas" scheme="http://weblogs.asp.net/rternier/archive/tags/Ninjas/default.aspx" /><category term="Personal" scheme="http://weblogs.asp.net/rternier/archive/tags/Personal/default.aspx" /></entry><entry><title>Full Screen web pages and browser resizing - keeping it looking good</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/11/23/full-screen-web-pages-and-browser-resizing-keeping-it-looking-good.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/11/23/full-screen-web-pages-and-browser-resizing-keeping-it-looking-good.aspx</id><published>2007-11-23T17:17:12Z</published><updated>2007-11-23T17:17:12Z</updated><content type="html">&lt;p&gt;I've noticed one thing that really gets some web developers going (and not the good going): Keeping a full screen web site looking good with different browser sizes. Those that know CSS inside-out will also have this problem as sometimes you just can't cut it with pure CSS.&amp;#xA0; This is why many sites us a set width - they have clear control over everything with just CSS. However, those that like to employ full screen web pages need to do a bit more. &lt;/p&gt;  &lt;p&gt;Note* this is only an issue with &amp;lt;div&amp;gt; based layouts. Table based layouts (die die die) don't have this.&amp;#xA0; &lt;/p&gt;  &lt;p&gt;Most Web Applications nowadays are full screen web apps - If they are not you should really re-think your design. I always develop my web apps for 800x600, but always allow them to work at resolutions like 1600x1050 (my resolution).&lt;/p&gt;  &lt;p&gt;I have a simple JavaScript function I use whenever I write full page web apps that have a lot of content areas that I need specifically sized.&amp;#xA0; here's a sample of my script that I am using for a program using mapping. This script runs every 250ms (4 times a second) and resizes my map width/Height and my sidebar height to take in the full height of the browser. My application never has any scrolling - except my right sidebar (overflow:auto;). This allows my application to remain clean of scrollbars and stay as large as possible for those using it.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="border-right: #cccccc 1pt solid; padding-right: 1pt; border-top: #cccccc 1pt solid; padding-left: 1pt; font-size: 11pt; background: #222215; padding-bottom: 1pt; overflow: auto; border-left: #cccccc 1pt solid; width: 86.92%; color: #dfdfbf; padding-top: 1pt; border-bottom: #cccccc 1pt solid; font-family: consolas; height: 774px"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #479445"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="font-weight: bold; color: #cccc37"&gt;var&lt;/span&gt; browserWidth = &lt;span style="color: #8acccf"&gt;0&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="font-weight: bold; color: #cccc37"&gt;var&lt;/span&gt; browserHeight = &lt;span style="color: #8acccf"&gt;0&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="font-weight: bold; color: #cccc37"&gt;function&lt;/span&gt; getSize() {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0; &lt;span style="font-weight: bold; color: #cccc37"&gt;if&lt;/span&gt;( &lt;span style="font-weight: bold; color: #cccc37"&gt;typeof&lt;/span&gt;( window.innerWidth ) == &lt;span style="color: #c89191"&gt;'number'&lt;/span&gt; ) &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #479445"&gt;//Non-IE&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; isIE = &lt;span style="font-weight: bold; color: #cccc37"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; browserWidth = window.innerWidth;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; browserHeight = window.innerHeight;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0; } &lt;span style="font-weight: bold; color: #cccc37"&gt;else&lt;/span&gt; &lt;span style="font-weight: bold; color: #cccc37"&gt;if&lt;/span&gt;( document.documentElement &amp;amp;&amp;amp; ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #479445"&gt;//IE 6+ in 'standards compliant mode'&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; browserWidth = document.documentElement.clientWidth;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; browserHeight = document.documentElement.clientHeight;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0; } &lt;span style="font-weight: bold; color: #cccc37"&gt;else&lt;/span&gt; &lt;span style="font-weight: bold; color: #cccc37"&gt;if&lt;/span&gt;( document.body &amp;amp;&amp;amp; ( document.body.clientWidth || document.body.clientHeight ) ) {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; alert(&lt;span style="color: #c89191"&gt;&amp;quot;You are using an outdated browser. Please upgrade to IE7 or FireFox 2.0&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #479445"&gt;//IE 4 compatible&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; browserWidth = document.body.clientWidth;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; browserHeight = document.body.clientHeight;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="font-weight: bold; color: #cccc37"&gt;function&lt;/span&gt; updateMapSize()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #479445"&gt;//IE7 is 21 pixels LESS than FireFox.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #479445"&gt;//Pretty much we want to keep the map to the maximum size alloted.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; getSize();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #479445"&gt;//Side bar is 200px, but we should take some px off of it for padding.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #479445"&gt;//header is 80px hight. take some px off for padding.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="font-weight: bold; color: #cccc37"&gt;var&lt;/span&gt; mapWidth;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="font-weight: bold; color: #cccc37"&gt;if&lt;/span&gt;(document.getElementById(&lt;span style="color: #c89191"&gt;&amp;quot;aToggleSideBar&amp;quot;&lt;/span&gt;).className == &lt;span style="color: #c89191"&gt;&amp;quot;collapse&amp;quot;&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; mapWidth = browserWidth - &lt;span style="color: #8acccf"&gt;290&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="font-weight: bold; color: #cccc37"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; mapWidth = browserWidth - &lt;span style="color: #8acccf"&gt;50&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="font-weight: bold; color: #cccc37"&gt;var&lt;/span&gt; mapHeight = browserHeight - &lt;span style="color: #8acccf"&gt;60&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="font-weight: bold; color: #cccc37"&gt;var&lt;/span&gt; sideBarHeight = browserHeight - &lt;span style="color: #8acccf"&gt;60&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; document.getElementById(&lt;span style="color: #c89191"&gt;&amp;quot;map&amp;quot;&lt;/span&gt;).style.width = mapWidth + &lt;span style="color: #c89191"&gt;&amp;quot;px&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; document.getElementById(&lt;span style="color: #c89191"&gt;&amp;quot;leftSide&amp;quot;&lt;/span&gt;).style.width = mapWidth + &lt;span style="color: #c89191"&gt;&amp;quot;px&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; document.getElementById(&lt;span style="color: #c89191"&gt;&amp;quot;map&amp;quot;&lt;/span&gt;).style.height = mapHeight + &lt;span style="color: #c89191"&gt;&amp;quot;px&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; document.getElementById(&lt;span style="color: #c89191"&gt;&amp;quot;rightSide&amp;quot;&lt;/span&gt;).style.height = sideBarHeight + &lt;span style="color: #c89191"&gt;&amp;quot;px&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; document.getElementById(&lt;span style="color: #c89191"&gt;&amp;quot;sideBar&amp;quot;&lt;/span&gt;).style.height = (sideBarHeight - &lt;span style="color: #8acccf"&gt;50&lt;/span&gt;)+ &lt;span style="color: #c89191"&gt;&amp;quot;px&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; setTimeout(&lt;span style="color: #c89191"&gt;&amp;quot;updateMapSize()&amp;quot;&lt;/span&gt;, &lt;span style="color: #8acccf"&gt;250&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5319687" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="JavaScript" scheme="http://weblogs.asp.net/rternier/archive/tags/JavaScript/default.aspx" /><category term="web design" scheme="http://weblogs.asp.net/rternier/archive/tags/web+design/default.aspx" /></entry><entry><title>Two ASP.NET features that are usually missed or misunderstood...T</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/10/30/two-asp-net-features-that-are-usually-missed-or-misunderstood.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/10/30/two-asp-net-features-that-are-usually-missed-or-misunderstood.aspx</id><published>2007-10-30T15:47:00Z</published><updated>2007-10-30T15:47:00Z</updated><content type="html">&lt;p&gt;&lt;b&gt;Enter the Tilde (~)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Browsing the asp.net forums I notice a lot of people putting the '~' (tilde) character on every control that has some sort src or href.&amp;nbsp; Many think that the tilde character is a regular character that deals with file locations. Much like: /, ../, ../../ etc.&lt;/p&gt;  &lt;p&gt;However, this little angle is actually an ASP.NET character that is a shortcut for"&amp;nbsp;&amp;nbsp; HttpRuntime.AppDomainAppVirtualPath. (say that 10x in a row). This property refers to the virtual application root - not the root of the web server.&amp;nbsp; Remember that a Virtual Directory is in fact an Application (Server 2000 / XP). You'll notice that in Vista that the IIS team has gone the better rout and actually calls them "Applications" while still having the ability to have a virtual directory that functions as a directory.&lt;/p&gt;  &lt;p&gt;So how do we use this character?&lt;/p&gt;  &lt;p&gt;here are some examples.&lt;/p&gt;  &lt;p&gt;If my Folder structure is as follow:    &lt;br&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Website      &lt;ul&gt;       &lt;li&gt;Images &lt;/li&gt;        &lt;li&gt;CSS &lt;/li&gt;        &lt;li&gt;Admin &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have a master page within my main website, and content pages in my Admin. One thing newer web developers will do is declare an image like:&lt;/p&gt;  &lt;p&gt;&lt;font face="courie"&gt;&amp;lt;img src="Images/MyImage.png" alt="my Image" /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;That works for everything in the root directory, however once you get into the Admin directory - all images are broken.&amp;nbsp; A way to resolve this is:&lt;/p&gt;  &lt;p&gt;&amp;lt;img src="http://weblogs.asp.net/Images/MyImage.png" alt="my Image" /&amp;gt;&lt;/p&gt;  &lt;p&gt;This can also lead into issues if you have a more complex structure. A quick way to resolve this is:&lt;/p&gt;  &lt;p&gt;&amp;lt;asp:image id="myImage" runat="server" ImageUrl="~/Images/MyImage.png" AlternateText="My Image" /&amp;gt;&lt;/p&gt;  &lt;p&gt;This will always go to the root of your application and then to the Images directory.&amp;nbsp; This is very useful with Hyperlinks when you are working with multiple directories.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Enter the ALT-SHIFT (Really... ALT-SHIFT)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I've heard about this but I've always just stored this away in the back of my mind. This little button combo allows you to select VERTICALLY in Visual Studio. &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/twoASP.NETfeaturesthatareusuallymissedo_7B37/Capture.png" mce_href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/twoASP.NETfeaturesthatareusuallymissedo_7B37/Capture.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/twoASP.NETfeaturesthatareusuallymissedo_7B37/Capture_thumb.png" id="id" style="border-width: 0px;" alt="Capture" mce_src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/twoASP.NETfeaturesthatareusuallymissedo_7B37/Capture_thumb.png" border="0" height="181" width="610"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;So, besides the nice little vertical line, what are the uses of this?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Easy way to remove a single line of characters (say Line numbers from an online post) without having to format a bunch of things &lt;/li&gt;    &lt;li&gt;Easy way to remove comments if you commented out lines (You can use the shortcuts: CTRL E+C to commend and CTRL E+U to uncommented) &lt;/li&gt;    &lt;li&gt;Quickly change values or remove values in XML. &lt;/li&gt;    &lt;li&gt;Many many more. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Needless to say it's a beautiful tool that exists in Visual Studio (not just ASP.NET).&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4838357" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="ASP.NET " scheme="http://weblogs.asp.net/rternier/archive/tags/ASP.NET+/default.aspx" /><category term=".NET" scheme="http://weblogs.asp.net/rternier/archive/tags/.NET/default.aspx" /><category term="web design" scheme="http://weblogs.asp.net/rternier/archive/tags/web+design/default.aspx" /></entry><entry><title>Fancy Button 2.0 (Not A Link button)</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/10/26/fancy-button-2-0-not-a-link-button.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/10/26/fancy-button-2-0-not-a-link-button.aspx</id><published>2007-10-26T22:18:25Z</published><updated>2007-10-26T22:18:25Z</updated><content type="html">&lt;p&gt;I got a shwack of feedback and comments from my recent post: &lt;a href="http://weblogs.asp.net/rternier/archive/2007/10/25/get-rid-of-regular-buttons-use-link-buttons.aspx" target="_blank"&gt;Get rid of regular buttons, use Link Buttons&lt;/a&gt;.&amp;#xA0; I actually thought my solution was a great one, apparently I was a bit off base. That's not to say that my solution was totally wrong - Yes I'm stubborn... but I do admit that I am &amp;quot;occasionally&amp;quot; wrong... occasionally...&lt;/p&gt;  &lt;p&gt;From the feedback, I decided to make a new &amp;quot;better looking&amp;quot; button. This one is about the same amount of work as the previous, but I believe this one is up to standards - which was the biggest subject from the feedback.&lt;/p&gt;  &lt;p&gt;Another comment I got was regarding users might be confused because it was a link, and not a button. If they look the same, the user will never be able to tell. (I have yet to see a user that looks at the markup of a web application and gets their underwear in a knot because something that is supposed to be an &amp;lt;input /&amp;gt; is an &amp;lt;a /&amp;gt;... though I'd really like to see it&amp;#xA0; :P ).&lt;/p&gt;  &lt;p&gt;So let's look at the markup of this new thing:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="border-right: #cccccc 1pt solid; padding-right: 1pt; border-top: #cccccc 1pt solid; padding-left: 1pt; font-size: 11pt; background: #222215; padding-bottom: 1pt; overflow: auto; border-left: #cccccc 1pt solid; width: 97.58%; color: #dfdfbf; padding-top: 1pt; border-bottom: #cccccc 1pt solid; font-family: consolas; height: 64px"&gt;   &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;lt;&lt;span style="color: #e1795f"&gt;button&lt;/span&gt; &lt;span style="color: #cccc37"&gt;id&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;btnTest&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;runat&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;Server&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;type&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;class&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;nButton&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;onserverclick&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;btnTest_ServerClick&amp;quot;&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;lt;&lt;span style="color: #e1795f"&gt;div&lt;/span&gt; &lt;span style="color: #cccc37"&gt;class&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color: #e1795f"&gt;div&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;lt;&lt;span style="color: #e1795f"&gt;div&lt;/span&gt;&amp;gt;This is my button&amp;lt;/&lt;span style="color: #e1795f"&gt;div&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;lt;/&lt;span style="color: #e1795f"&gt;button&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I have changed this to use the &amp;lt;button&amp;gt; element. The &amp;lt;button&amp;gt; element allows you to further style what the button looks like. &lt;/p&gt;  &lt;p&gt;I used &amp;lt;div&amp;gt; elements so I can control the vertical alignment of the text - as well as further styling if needed.&lt;/p&gt;  &lt;p&gt;Here's my CSS:&lt;/p&gt;  &lt;div style="border-right: #cccccc 1pt solid; padding-right: 1pt; border-top: #cccccc 1pt solid; padding-left: 1pt; font-size: 11pt; background: #222215; padding-bottom: 1pt; overflow: auto; border-left: #cccccc 1pt solid; width: 97.62%; color: #dfdfbf; padding-top: 1pt; border-bottom: #cccccc 1pt solid; font-family: consolas; height: 439px"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.nButton&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-color&lt;/span&gt;:#84A1D6;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;border&lt;/span&gt;:solid 2px #415D9B;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;min-width&lt;/span&gt;:70px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;height&lt;/span&gt;:23px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;padding-left&lt;/span&gt;:3px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;vertical-align&lt;/span&gt;:middle;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.nButton:hover&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-color&lt;/span&gt;: #a0bdf2;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.nButton&lt;/span&gt; &lt;span style="color: #e17962"&gt;div&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;float&lt;/span&gt;:left;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.nButton&lt;/span&gt; &lt;span style="color: #e17962"&gt;.login&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;vertical-align&lt;/span&gt;:middle;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-image&lt;/span&gt;:url(Images/save.png);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-repeat&lt;/span&gt;:no-repeat;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-position&lt;/span&gt;:left top;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;width&lt;/span&gt;:16px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;height&lt;/span&gt;:16px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Very similar to my last post.&amp;#xA0; This functions the same, and it has the same functionality as a regular &amp;lt;asp:button /&amp;gt;.&lt;/p&gt;  &lt;p&gt;Now let's see what it looks like: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/FancyButton2.0NotALinkbutton_D6EF/new%20button.png"&gt;&lt;img id="id" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="34" alt="new button" src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/FancyButton2.0NotALinkbutton_D6EF/new%20button_thumb.png" width="145" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That made my day... or did it....&amp;#xA0;&amp;#xA0;&amp;#xA0; Here is what I get when I surround ALL my markup with a &amp;lt;button&amp;gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/FancyButton2.0NotALinkbutton_D6EF/big%20button.png"&gt;&lt;img id="id" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="217" alt="big button" src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/FancyButton2.0NotALinkbutton_D6EF/big%20button_thumb.png" width="506" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now I wonder how many that read this are going to go to their websites and try it out....&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4769894" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="XHTML" scheme="http://weblogs.asp.net/rternier/archive/tags/XHTML/default.aspx" /><category term="CSS" scheme="http://weblogs.asp.net/rternier/archive/tags/CSS/default.aspx" /><category term="HTML" scheme="http://weblogs.asp.net/rternier/archive/tags/HTML/default.aspx" /><category term="web design" scheme="http://weblogs.asp.net/rternier/archive/tags/web+design/default.aspx" /></entry><entry><title>Vista and the annoying French characters</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/10/26/vista-and-the-annoying-french-characters.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/10/26/vista-and-the-annoying-french-characters.aspx</id><published>2007-10-26T16:43:00Z</published><updated>2007-10-26T16:43:00Z</updated><content type="html">&lt;p&gt;Since I've installed MS Vista I've been plauged with getting characters like: &lt;b&gt;É&lt;/b&gt;,&lt;b&gt; &amp;gt;&lt;/b&gt;,&lt;b&gt; ^^&lt;/b&gt;,&lt;b&gt;``&lt;/b&gt; when I wanted characters like &lt;b&gt;?&lt;/b&gt;,&lt;b&gt;|&lt;/b&gt;,&lt;b&gt;}&lt;/b&gt;,&lt;b&gt;"&lt;/b&gt; (note those are the exact same keys that did this, i just toggled my settings... keep reading).&lt;br&gt;&lt;/p&gt;&lt;p&gt;so what does this? &lt;br&gt;&lt;/p&gt;&lt;p&gt;Pressing the left CTRL + SHIFT keys at the same time toggles a weird setting that does this. I assume it's on canadian keyboard only who have the language set to Canadian English (because all know Canadian Enlish is proper English eh?).&lt;/p&gt;&lt;p&gt;So if you find yourself all of a sudden churning out weird characters when you're typing along, try pressing the left CTRL + SHIFT keys at the same time to switch it back over (You might need to press them a couple times).&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4768287" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="Vista" scheme="http://weblogs.asp.net/rternier/archive/tags/Vista/default.aspx" /></entry><entry><title>FireFox Add-on - ThumbStrips</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/10/25/firefox-add-on-thumbstrips.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/10/25/firefox-add-on-thumbstrips.aspx</id><published>2007-10-25T23:28:00Z</published><updated>2007-10-25T23:28:00Z</updated><content type="html">&lt;p&gt;I just noticed this amazing Add On for Firefox. Normally I would not blog about things like this, but this addon is very useful. How often have you been trying to find a site you went to yesterday, and you spend 10 minutes clicking through each entry in your browser history, trying to find the site you were on.&lt;/p&gt;&lt;p&gt;What &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/5045" mce_href="https://addons.mozilla.org/en-US/firefox/addon/5045"&gt;ThumbStrips &lt;/a&gt;does is take a quick snapshop of that site and save it so you have a visual history of that site. This is getting added right under &lt;a href="http://www.getfirebug.com/" mce_href="http://www.getfirebug.com/"&gt;FireBug &lt;/a&gt;for useful addons for Firefox.&lt;/p&gt;&lt;p&gt;Head on over to Firefox Addons to check &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/5045" mce_href="https://addons.mozilla.org/en-US/firefox/addon/5045"&gt;this addon&lt;/a&gt; out.&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4754356" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="Firefox" scheme="http://weblogs.asp.net/rternier/archive/tags/Firefox/default.aspx" /></entry><entry><title>Get rid of regular buttons, use link buttons</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rternier/archive/2007/10/25/get-rid-of-regular-buttons-use-link-buttons.aspx" /><id>http://weblogs.asp.net/rternier/archive/2007/10/25/get-rid-of-regular-buttons-use-link-buttons.aspx</id><published>2007-10-25T23:21:22Z</published><updated>2007-10-25T23:21:22Z</updated><content type="html">&lt;p&gt;For the past 3 years I have been pushing my managers and especially the teams I work with that the web applications we make need to be visually appealing. The graphics designers I know can do amazing things. My friend &lt;a href="http://www.boxdrinks.com/" target="_blank"&gt;Steve Sereda&lt;/a&gt; is an amazing graphics designer and he created some awesome skins for me for the time we worked together. &lt;/p&gt;  &lt;p&gt;I've done a few posts leading up to this one. It all started with my post on &lt;a href="http://weblogs.asp.net/rternier/archive/2007/10/17/updatepanel-firefox-and-the-defaultbutton.aspx" target="_blank"&gt;UpdatePanel, FireFox and the Default Button&lt;/a&gt;, where I talked about how to get the default button working in FireFox. At this point I was in the process of moving all buttons over to fancy LinkButtons. I then wrote about &lt;a href="http://weblogs.asp.net/rternier/archive/2007/10/18/a-table-some-text-and-css-pseudo-classes.aspx" target="_blank"&gt;CSS Pseudo Classes&lt;/a&gt; and their uses (which are many), and finally I finished my last post on &lt;a href="http://weblogs.asp.net/rternier/archive/2007/10/25/a-linkbutton-defaultbutton-updatepanel-and-firefox.aspx" target="_blank"&gt;A LinkButton, DefaultButton, UpdatePanel and FireFox&lt;/a&gt;, where I discuss how to get FireFox to use a LinkButton (Anchor tag) as a default button.&lt;/p&gt;  &lt;p&gt;So let's talk about Buttons. Buttons provide functionality, and 99% of users know when they click on a button that some sort of action is going to happen. Many buttons look like this:&amp;#xA0; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/Getridofregularbuttonsuselinkbuttons_E458/button.png"&gt;&lt;img height="27" alt="button" src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/Getridofregularbuttonsuselinkbuttons_E458/button_thumb.png" width="190" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, besides the ugly border my snipping tool puts in, that button isn't that great. But should that matter? Isn't a button there to tell the user that clicking it will invoke some sort of procedure? Correct. By general standards Buttons should invoke functions, while links should be directional. However, who said a button had to be grey and ugly?&lt;/p&gt;  &lt;p&gt;ASP.NET has the LinkButton. It gets rendered as an &amp;lt;a /&amp;gt; (anchor) tag, and because of that we can do something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/Getridofregularbuttonsuselinkbuttons_E458/3%20buttons_2.png"&gt;&lt;img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="36" alt="3 buttons" src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/Getridofregularbuttonsuselinkbuttons_E458/3%20buttons_thumb.png" width="337" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Wow, that looks way better than regular buttons. What about this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/Getridofregularbuttonsuselinkbuttons_E458/delete.png"&gt;&lt;img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="134" alt="delete" src="http://weblogs.asp.net/blogs/rternier/WindowsLiveWriter/Getridofregularbuttonsuselinkbuttons_E458/delete_thumb.png" width="312" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I've grown tired of using JavaScript confirm boxes. I've decided to switch to modal windows. (yes yes I know my spacing isn't right....). You can see the nice presentation, and notice the spacing... isn't that amazing?!&lt;/p&gt;  &lt;p&gt;There's a trick to these buttons, and unfortunately you do have to put more work into them. I could make a button like this a userControl/CompositeControl, but for what I need them for, that's too much work.&lt;/p&gt;  &lt;p&gt;Let's look at the markup I use for these buttons. This will give you more clarity when you see the CSS.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="border-right: #cccccc 1pt solid; padding-right: 1pt; border-top: #cccccc 1pt solid; padding-left: 1pt; font-size: 11pt; background: #222215; padding-bottom: 1pt; overflow: auto; border-left: #cccccc 1pt solid; width: 99.58%; color: #dfdfbf; padding-top: 1pt; border-bottom: #cccccc 1pt solid; font-family: consolas; height: 178px"&gt;   &lt;p style="margin: 0px"&gt;&amp;lt;&lt;span style="color: #e1795f"&gt;div&lt;/span&gt; &lt;span style="color: #cccc37"&gt;class&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0; &amp;lt;&lt;span style="color: #e1795f"&gt;asp&lt;/span&gt;:&lt;span style="color: #e1795f"&gt;LinkButton&lt;/span&gt; &lt;span style="color: #cccc37"&gt;ID&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;btnSave&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;runat&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;Server&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;CssClass&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;bSave&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;Text&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;Save User&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;OnClick&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;btnSave_Click&amp;quot;&lt;/span&gt;&amp;#xA0; &lt;span style="color: #cccc37"&gt;ValidationGroup&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;userDetails&amp;quot;&lt;/span&gt;&amp;#xA0; &lt;span style="color: #cccc37"&gt;UseSubmitBehavior&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;lt;/&lt;span style="color: #e1795f"&gt;div&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;lt;&lt;span style="color: #e1795f"&gt;div&lt;/span&gt; &lt;span style="color: #cccc37"&gt;class&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;lt;&lt;span style="color: #e1795f"&gt;asp&lt;/span&gt;:&lt;span style="color: #e1795f"&gt;LinkButton&lt;/span&gt; &lt;span style="color: #cccc37"&gt;ID&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;btnCancel&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;runat&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;Server&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;CssClass&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;bCancel&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;Text&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;Cancel&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;OnClick&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;btnCancel_Click&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;CausesValidation&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;False&amp;quot;&lt;/span&gt;&amp;#xA0;&amp;#xA0; &lt;span style="color: #cccc37"&gt;UseSubmitBehavior&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;lt;/&lt;span style="color: #e1795f"&gt;div&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;lt;&lt;span style="color: #e1795f"&gt;div&lt;/span&gt; &lt;span style="color: #cccc37"&gt;class&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;lt;&lt;span style="color: #e1795f"&gt;asp&lt;/span&gt;:&lt;span style="color: #e1795f"&gt;LinkButton&lt;/span&gt; &lt;span style="color: #cccc37"&gt;ID&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;btnDeleteUser&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;runat&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;Server&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;CssClass&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;bDelete&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;Text&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;Delete&amp;quot;&lt;/span&gt; &lt;span style="color: #cccc37"&gt;UseSubmitBehavior&lt;/span&gt;=&lt;span style="color: #c89191"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;lt;/&lt;span style="color: #e1795f"&gt;div&lt;/span&gt;&amp;gt;      &lt;br /&gt;&amp;lt;&lt;span style="color: #e1795f"&gt;div &lt;/span&gt;&lt;span style="color: #cccc37"&gt;class&lt;/span&gt;=&amp;quot;clear&amp;quot;&amp;gt;&amp;lt;/&lt;span style="color: #e1795f"&gt;div&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;You see that I have 3 div's, and in each div I have a LinkButton. Under the LinkButtons I have a single div with the &amp;quot;clear&amp;quot; class. My clear class does clear:both;. It clears the floats that all of these div's have. &lt;/p&gt;  &lt;p&gt;Here's the CSS&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="border-right: #cccccc 1pt solid; padding-right: 1pt; border-top: #cccccc 1pt solid; padding-left: 1pt; font-size: 11pt; background: #222215; padding-bottom: 1pt; overflow: auto; border-left: #cccccc 1pt solid; width: 99%; color: #dfdfbf; padding-top: 1pt; border-bottom: #cccccc 1pt solid; font-family: consolas; height: 769px"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.button&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-color&lt;/span&gt;:#84A1D6;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;border&lt;/span&gt;:solid 2px #415D9B;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;margin&lt;/span&gt;:5px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;min-width&lt;/span&gt;:70px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;height&lt;/span&gt;:20px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;float&lt;/span&gt;:left;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;padding-left&lt;/span&gt;:3px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.button&lt;/span&gt; &lt;span style="color: #e17962"&gt;a&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;display&lt;/span&gt;:block;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;padding&lt;/span&gt;:2px 5px 2px 20px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;min-width&lt;/span&gt;:70px;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.button:hover&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-color&lt;/span&gt;: #a0bdf2;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.button&lt;/span&gt; &lt;span style="color: #e17962"&gt;a:active&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;border-top&lt;/span&gt;:solid 1px black;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;/* Button Style */&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.button&lt;/span&gt; &lt;span style="color: #e17962"&gt;a.bLogin&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-image&lt;/span&gt;: url(Images/Login.png);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-position&lt;/span&gt;:left;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-repeat&lt;/span&gt;:no-repeat;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.button&lt;/span&gt; &lt;span style="color: #e17962"&gt;a.bSave&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-image&lt;/span&gt;: url(Images/Save.png);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-position&lt;/span&gt;:left;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-repeat&lt;/span&gt;:no-repeat;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #e17962"&gt;.button&lt;/span&gt; &lt;span style="color: #e17962"&gt;a.bCancel&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-image&lt;/span&gt;: url(Images/Cancel.png);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-position&lt;/span&gt;:left;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: #f0dfaf"&gt;background-repeat&lt;/span&gt;:no-repeat;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;You can notice that each .button class is floating left. I need to use Block elements for these buttons so I can apply padding, margin's etc. You cannot do that to an inline element. Seeing they're block, I want them line up, so I float them.&amp;#xA0; You can also see that my &lt;strong&gt;&lt;u&gt;.button a&lt;/u&gt;&lt;/strong&gt; contains the same width as the parent .&lt;strong&gt;&lt;u&gt;button&lt;/u&gt;&lt;/strong&gt;, this is because I want the entire button to be clickable, not just the link portion.&lt;/p&gt;  &lt;p&gt;I am also using pseudo classes for this. You can see the :hover and the :active. This gives my buttons &amp;quot;hover&amp;quot; and &amp;quot;click&amp;quot; styles without having to code any javascript. (IE7 and FF).&lt;/p&gt;  &lt;p&gt;And that is all you need to do.&lt;/p&gt;  &lt;p&gt;Like I said, it's a tiny bit more markup and some small CSS, however, the outcome of this work is well worth it. It gives a whole new presentation to your application.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4754236" width="1" height="1"&gt;</content><author><name>rternier</name><uri>http://weblogs.asp.net/members/rternier.aspx</uri></author><category term="ASP.NET " scheme="http://weblogs.asp.net/rternier/archive/tags/ASP.NET+/default.aspx" /><category term="CSS" scheme="http://weblogs.asp.net/rternier/archive/tags/CSS/default.aspx" /><category term="HTML" scheme="http://weblogs.asp.net/rternier/archive/tags/HTML/default.aspx" /><category term="Firefox" scheme="http://weblogs.asp.net/rternier/archive/tags/Firefox/default.aspx" /><category term="web design" scheme="http://weblogs.asp.net/rternier/archive/tags/web+design/default.aspx" /></entry></feed>