I’ve been working with HTML5 and CSS3 since they came out. At first I remember being confused. I had spent some time getting my bearings in Flash when the buzz began touting HTML5 & CSS3 as the “simple” solution for the future. I’m all for the future of technology, but, I think any of us who have worked in HTML5 and CSS3 might take issue with the “simplicity” of this new cross-browser functionality. As a community we’ve stuck with it though many blogs and conference lectures on “What is HTML5”, and after a few years, most of the browsers have adopted it, and a few major players have used it.
Pandora, which had a beautiful user interface, wanted to stay at the forefront of technology and recently released it’s HTML5 version: http://www.pandora.com While some people may feel it lost some “crispness” I think they accomplished their goals of a light-weight and elegant solution that will work across platforms and devices.
The code I’ll show here will accomplish a very simple layout that shows off some of the things developers want: rounded corners and dropped shadows. I don’t understand why we like these two features so much, but we do. I rarely see a developer new to the technique not experience some sort of inner-glee. And business people think we’re “square”… pshaw!
Here’s a picture of the finished results:
This sort of layout is where I like to start for a website. It’s past all the irritating CSS3 layout annoyances and before dropping custom images in. Okay, here’s the code
<!doctype html> <html lang="en"> <head> <title>Some Title</title> <!-- <script type="text/javascript" src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>--> <link href="Version2.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="outsideBox"> <header> <table class="headerTbl"> <tr> <td> <h2> AwesomeSauce LLC.</h2> </td> <td style="text-align: right;"> Search <input type="text" maxlength="100" size="50" /> <img src="resources/images/smallSearch.png" alt="Search for DDA" /> </td> </tr> </table> </header> <nav> <ul> <li class="selected"><a href="#">Pending</a></li> <li><a href="#">Advances</a></li> <li><a href="#">Quick Entry</a></li> <li><a href="#">Commitments</a></li> <li><a href="#">Rates</a></li> </ul> </nav> <div id="alerts"> alerts go here</div> <div id="sideNav"> <ul class="top-level"> <li class="selected"><a href="#">Pending</a></li> <li><a href="#">Advances</a></li> <li><a href="#">Quick Entry</a></li> <li><a href="#">Commitments</a></li> <li><a href="#">Rates</a></li> </ul> </div> <div id="mainContent"> <table> <tr> <td> <div id="parentBox"> Top Level Grid here </div> </td> </tr> <tr> <td> <div id="childBox"> Bottom Level Grid here </div> </td> </tr> </table> </div> </div> </body> </html>
And here’s the CSS:
body { background: #fff; } .outsideBox { height: 100%; min-height: 650px; border: 1px solid black; border-radius: 1.6em; padding: 1em; margin: 2em; position: relative; display: block; box-shadow: 4px 4px 4px 4px #202e46; } .headerTbl { width: 100%; } /*------------------------------ = TOP NAVIGATION ------------------------------*/ nav { position: absolute; left: 0; width: 100%; background: #202e46; } nav ul { margin: 0 auto; width: 940px; list-style: none; } nav ul li { float: left; } nav ul li a { display: block; margin-right: 20px; width: 140px; font-size: 16px; line-height: 40px; text-align: center; text-decoration: none; color: #777; } nav ul li a:hover { background: #F0F0F0; color: #202e46; } nav ul li.selected a { background: #F0F0F0; color: #000; } /*------------------------------ = ALERTS ------------------------------*/ #alerts { width: 100%; display: block; width: 940px; background-color: Red; color: White; } /*------------------------------ = VERTICAL NAVIGATION ------------------------------*/ #sideNav { float: left; font-size: 1em; width: 150px; padding-top: 3em; } #sideNav ul { height: 100%; border-radius: 1.6em; margin: 0px; padding: 0px; } #sideNav li { list-style: none; } ul.top-level { background: #202e46; } #sideNav a { color: #777; cursor: pointer; display: block; line-height: 25px; text-indent: 25px; text-decoration: none; width: 100%; } #sideNav a:hover { background: #F0F0F0; color: #202e46; } #sideNav li:hover { background: #f90; position: relative; } /*------------------------------ = MAIN CONTENT ------------------------------*/ #mainContent { padding-top: 3em; display: block; float: right; height: 100%; min-height:500px; width: 80%; font-size: 1em; } #mainContent table { height: 100%; border: 1px solid black; width: 100%; }
If you have tried to do HTML5 and CSS3 like I have, you’ve probably come across some impressive kitchen sink solutions along the way. I personally don’t have 100 hours to put towards figuring it all out 🙂 I have about 10. If you have less than 10, here’s something for you.
Enjoy
Special thanks to (some of these were used in the final solution for JQuery & DataTables):
- http://jonraasch.com/blog/css-rounded-corners-in-all-browsers http://thany.nl/apps/boxshadows/
- http://html5shim.googlecode.com/
- http://dotnetspeaks.com/DisplayArticle.aspx?ID=68 http://www.dotnetspeaks.com/DisplayArticle.aspx?ID=67
- http://aspdotnetcodebook.blogspot.com/2010/01/page-languagec-autoeventwireuptrue.html