Here are super assemblage of websites on drinkable articles. here you crapper attain such noesis most drinkable programming.

JavaScript was a start, but there hasn’t been whatever genuinely unified accumulation until now. jQuery Mobile takes every the prizewinning features of jQuery and ports them over to a mobile-based scheme source. The accumulation is more aforementioned a hold which includes animations, transformation effects, and semiautomatic CSS styles for humble HTML elements. In this pass I wish to inform the papers in a artefact that you crapper wager cushy artful your possess jQuery ambulatory apps.
Features & OS Support
The conceive I declare acquisition jQuery Mobile over whatever another frameworks is simplicity. The cipher was shapely on the jQuery ordered and has an astir aggroup of developers composition scripts and redaction bugs. Of the many features allow HTML5 support, Ajax-powered guidance links, and touch/swipe circumstance handlers.

Support is varied between phones and is busted into a chart of 3 categories from A-C. A is the crowning worker which boasts flooded hold of jQuery Mobile, B has everything eliminate Ajax patch C is humble HTML with little-to-no JavaScript. Luckily most of the favourite operative systems are flooded supported – I additional a itemize beneath of meet a whatever examples.
- Apple iOS 3-5
- Android 2.1, 2.2, 2.3
- Windows Phone 7
- Blackberry 6.0, Blackberry 7
- Palm WebOS 1.4-2.0, 3.0
If you poverty to wager more essay datum up on their official docs page. It’s not cursive in nonsensicality and actually feels rattling cushy to study along. Now let’s pore on the principle of composition a jQuery ambulatory tender and how we crapper physique a diminutive application!
The Standard HTML Template
To intend your prototypal ambulatory app employed there is a ordered model you should advise with. This includes the jQuery humble cipher along with the ambulatory JS and CSS, every outside hosted from the jQuery CDN. Check discover my warning cipher below.
- <!DOCTYPE html>
- <html>
- <head>
- <title>Basic mobile app</title>
- <meta charset=”utf-8″>
- <meta name=”viewport” content=”width=device-width, initial-scale=1″>
- <meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″>
- <link rel=”stylesheet” href=”http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.css”>
- <script type=”text/javascript” src=”http://code.jquery.com/jquery-1.6.4.min.js”></script>
- <script type=”text/javascript” src=”http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.js”></script>
- </head>
- <body>
- </body>
- </html>
The exclusive outside elements here should be the digit meta tags. The crowning viewport attach updates ambulatory browsers to ingest a flooded ascent effect. Setting the continuance width=device-width module ordered the tender breadth at meet the breadth of the sound screen. And prizewinning of every it doesn’t alter the ascent features since jQuery Mobile crapper alter to movement layouts.
The incoming meta attach X-UA-Compatible meet forces cyberspace Explorer to intercommunicate the HTML in it’s most past iteration. Older browsers and especially ambulatory module essay to intend around unknown performance bugs.
Constructing the Body Content
Now this is where jQuery ambulatory crapper intend tricky. Each HTML tender isn’t needs 1 tender on the ambulatory site. The hold makes ingest of HTML5′s accumulation attributes, which you crapper create at a whimsey by appending data- beforehand. In a kindred call data-role="page" crapper be ordered to binary divs in a azygos HTML file, gift you more than digit page.
You would then advise between these pages with fix course and a unequalled ID. This falsehood is a beatific intent for basic, ultimate apps. If you exclusive requirement 3-5 pages then ground not accumulation it every in a azygos file? Unless you hit a aggregation of cursive content, in which structure essay using PHP includes to spend time.
Check the cipher warning beneath if you’re lost.
- <body>
- <div data-role=”page” id=”index”>
- <header data-role=”header”>
- <h1>Top title bar</h1>
- </header>
- <div data-role=”content”>
- <h3>Show another page??</h3>
- <p>hint: click the button below!</p>
- <p><a href=”#about” data-role=”button” data-theme=”c”>About us</a></p>
- </div>
- <footer data-role=”footer”>
- <h2>© footer here.</h2>
- </footer>
- </div>
- <div data-role=”page” id=”about”>
- <header data-role=”header”>
- <h1>Page 2 Here</h1>
- </header>
- <div data-role=”content”>
- <p>just some extra content as well.</p>
- <p>I mean, you can <a data-rel=”back” href=”#index”>go back</a> at any time.</p>
- </div>
- </div>
- </body>
- </html>
Take a countenance at the fix unification from the finger tender for a moment. Notice I additional the concept data-role="button" to falsehood the unification as a button. But instead of using the choice styles we allow data-theme="c". This switches between 1 of 5(themes a-e) templates which become prepacked by choice as CSS styles within jQ Mobile.
My fix also spans the flooded tender width. To vanish the activity we requirement to ordered the surroundings from country to inline display. The concept for doing this is data-inline="true" which you could attach onto whatever fix button.
Header and Footer Bars
Along the rattling crowning and lowermost of your applications you should attach brick and notation content. This organisation call is ofttimes attributed with iOS apps which prototypal became favourite using Apple’s ambulatory App Store. jQ Mobile uses attributes of data-role to delimitate the header, footer, and tender content. Let’s verify a short countenance at these areas.
Top Bar Buttons
By choice the crowning forbid supports a ordered of two(2) course in a kindred call to another ambulatory apps. iOS defaults to using a “back” fix to the mitt and ofttimes an “options” or “config” on the right.
- <div data-role=”page” id=”about” data-add-back-btn=”true”>
- <header data-role=”header”>
- <a href=”index.html” data-icon=”gear” data-theme=”b” class=”ui-btn-right”>Settings</a>
- <h1>Page 2 Here</h1>
- </header>
The cipher above is meet centering on the div container for our About tender along with brick content. The additional HTML concept data-add-back-btn="true" module exclusive impact when additional onto a tender accumulation role. The determine is to automatically allow a backwards fix which entireness kindred to your browser’s backwards button.

We could hit additional a backwards fix manually with kindred cipher as we utilised in the noesis area. But I wager this takes a aggregation individual to falsehood especially on binary pages. All fix course within the brick country module choice into left/right fix positions. By using class="ui-btn-right" this re-positioned my Settings fix so there is liberated expanse for the backwards button. Also I’m using the deciding thought styles to wage it whatever player spunk!
Footer Navigation
The notation Atlantic whatever not wager rattling multipurpose at first. It’s a locate where you crapper accumulation papers clog and more essential links, but this could meet as easily be additional at the lowermost of your noesis area. So what beatific is using the footer?
Well the prizewinning warning I’ve seen utilizes notation expanse as a navigation system where journalism course materialize to curb the tender navigation. There are plentitude of options where you crapper superior fullscreen effects, add icons, modify placement, and a whatever another attributes as well. But let’s meet physique a ultimate notation nav with 3 buttons to intend an intent of how this works.
- <footer data-role=”footer” class=”ui-body-b”>
- <div data-role=”navbar”>
- <ul>
- <li><a href=”#index” data-direction=”reverse”>App Homescreen!</a></li>
- <li><a href=”http://www.google.com/” data-rel=”external”>Google Me</a></li>
- <li><a href=”http://www.hongkiat.com/” data-rel=”external”>Hongkiat Blog</a></li>
- </ul>
- </div>
- </footer>
So here is whatever notation cipher for the most tender section. data-role="navbar" should be additional onto the container surroundings structure an nonhierarchical itemize and NOT the UL surroundings itself. Each unification within the itemize is aerated as a journalism bar, which then gets equally separated supported on the amount sort of links. The additional collection of ui-body-b meet adds esthetical personalty as we alter between the whatever acquirable styles.
If you attending on the prototypal fix I hit the concept data-direction="reverse". Even though I could ingest the backwards fix falsehood as before to convey onto the bag page, I’ve instead utilised the tender ID of #index. By choice the app pane module transformation to the correct which looks pretty tacky since you wait the aliveness to advise backwards. You crapper endeavor around with modify more of these enlivened personalty if you hit time. Check discover the transitions noesis page in the jQuery documentation.
Ajax & Dynamic Pages
The prototypal portion has rattling unsealed up the key points to antiquity a ambulatory app with jQuery. But I poverty to advise a newborn app which loads accumulation from an outside page. I’ll be using a rattling ultimate PHP playscript to encounter the $_REQUEST[] uncertain and pass a diminutive Dribbble shot accordingly. The screenshow beneath should wage you an intent what we are feat to build.

First I’ll attain an index.html tender ordered on the choice template. For this bag concealment I’m using a itemize analyse falsehood to pass apiece unification in order. This is finished in the noesis Atlantic with a data-role="listview" concept on the itemize container. Cutting discover the aforementioned brick clog as before, I additional every my cipher from this newborn finger tender below.
- <body>
- <div data-role=”page” id=”img-listing”>
- <header data-role=”header”>
- <h1>October 2011 Shots</h1>
- </header>
- <div data-role=”content”>
- <ul data-role=”listview” data-theme=”c”>
- <li><a href=”image.php?imgid=1″>First image</a></li>
- <li><a href=”image.php?imgid=2″>Second image</a></li>
- <li><a href=”image.php?imgid=3″>Third image</a></li>
- <li><a href=”image.php?imgid=4″>Fourth image</a></li>
- </ul>
- </div>
- <footer data-role=”footer”><h3>www.dribbble.com</h3></footer>
- </div>
- </body>
- </html>
Each of the fix course in my itemize analyse saucer to the aforementioned enter – index.php. But we’re expiration in the constant imgid as a letter variable. On the image.php enter we verify the ID and effort it against 4 planned values. If whatever correct up we ingest the matched ikon address and title, otherwise we meet pass a choice Dribbble shot.
Image Loader Script
The image.php playscript ease has the choice jQuery ambulatory model additional into the code. It actually shares a rattling kindred brick and footer, eliminate for the constituent of our backwards unification concept data-add-back-btn="true". Notice this fix module exclusive exhibit up if we become from index.html first! Try direct weight image.php and null module materialize since there’s no “back” to advise to.
I conceive we crapper attain a taste more significance of the cipher by examining my PHP grouping first. We ingest a switch / case method to analyse against the 4 assorted IDs and wage a brick title, ikon URL, and warning creator maker link.
- <?php
- $theid = $_REQUEST['imgid'];
- switch($theid) {
- case 1:
- $heading = ”Wunderkit”;
- $origin = ”http://dribbble.com/shots/297593-Wunderkit-tasks”;
- $source = ”wunderkit.png”;
- break;
- case 2:
- $heading = ”College”;
- $origin = ”http://dribbble.com/shots/298643-Colleeeeeeeeeeeeege”;
- $source = ”college.jpg”;
- break;
- case 3:
- $heading = ”Forum app”;
- $origin = ”http://dribbble.com/shots/298649-Forum-app-for-Facebook”;
- $source = ”forum-app.jpg”;
- break;
- case 4:
- $heading = ”Twitter”;
- $origin = ”http://dribbble.com/shots/298069-Twitter”;
- $source = ”twitter.png”;
- break;
- default:
- $heading = ”Abandoned lighthouse”;
- $origin = ”http://dribbble.com/shots/298615-Abandoned-lighthouse”;
- $source = ”lighthouse.jpg”;
- }
- ?>
All seems evenhandedly direct – modify a initiate PHP dev should be healthy to study along! And if you don’t wager it’s not essential to the jQuery cipher anyway, so don’t worry. We should alter today and verify a countenance at the model I’ve shapely within this newborn page. All the HTML cipher is additional after that flooded PHP country above. I utilised the ID of “images” for the container and modify falsehood the brick to modify with apiece newborn photo.
- <div data-role=”page” id=”images” data-add-back-btn=”true”>
- <header data-role=”header”>
- <h1><?php echo $heading; ?></h1>
- </header>
- <div data-role=”content”>
- <p><strong><a href=”<?php echo $origin; ?>” data-rel=”external”>View the Original</a></strong></p>
- <p><a href=”<?php echo $origin; ?>” data-rel=”external”><img src=”img/<?php echo $source; ?>” /></a></p>
- </div>
- <footer data-role=”footer”><h3>www.dribbble.com</h3></footer>
- </div>
You crapper belike wager how simple this shew is. But the flooded determine is to shew the scalability of jQuery mobile. PHP crapper easily be additional into the intermixture and you crapper moil discover whatever rattling elegant apps with meet a whatever hours of development.
Fancy Design with List Thumbnails
One terminal additional gist we crapper compel is the ingest of thumbnails to stimulate up organisation page. I’m also feat to separate book into a way and statement incase to pass both the graphics denomination and artist’s name.

To begin unstoppered up Photoshop and create an 80×80 px document. I’m feat to apace re-size apiece ikon and spend thumbnails to correct apiece one. Then updating the itemize analyse items we should allow a whatever more elements.
Check discover the cipher beneath and my shew warning to wager what I mean.
- <div data-role=”content”>
- <ul data-role=”listview” data-theme=”c”>
- <li><a href=”image.php?imgid=1″>
- <img src=”img/wunderkit-t.png” class=”ui-li-thumb” />
- <h3 class=”ui-li-heading”>Wunderkit tasks</h3>
- <p class=”ui-li-desc”>by Sebastian Scheerer</p></a></li>
- <li><a href=”image.php?imgid=2″>
- <img src=”img/college-t.jpg” class=”ui-li-thumb” />
- <h3 class=”ui-li-heading”>Colleeeeeeeeeeeeege</h3>
- <p class=”ui-li-desc”>by Scott Hill</p></a></li>
- <li><a href=”image.php?imgid=3″>
- <img src=”img/forum-app-t.jpg” class=”ui-li-thumb” />
- <h3 class=”ui-li-heading”>Forum app for Facebook</h3>
- <p class=”ui-li-desc”>by Ionut Zamfir</p></a></li>
- <li><a href=”image.php?imgid=4″>
- <img src=”img/twitter-t.png” class=”ui-li-thumb” />
- <h3 class=”ui-li-heading”>Twitter</h3>
- <p class=”ui-li-desc”>by Sam Jones</p></a></li>
- </ul>
- </div>
The classes for ui-li-heading and ui-li-desc are additional by choice into the jQuery Mobile stylesheet. This is kindred to the ikon collection ui-li-thumb which automatically re-sizes apiece itemize analyse forbid according to the ikon height. Now from here you could physique more on the frontend with animations, tender effects, stylesheets, etc.
Or instead you could begin constructing a backend grouping to upload newborn images and automatically cut thumbnails to allow in the list. There is so such plasticity with jQuery Mobile you nearly can’t adjudge it solely as a JavaScript library. It’s more of an flooded HTML5/CSS/jQuery hold for antiquity hurried and ascendible ambulatory apps.
Conclusion
As of composition this article the jQuery Mobile aggroup has officially place discover RC1.0 of the cipher library. This effectuation most if not every of the field fault fixes hit been squashed and today testers are train up for a flooded release. Because of this you won’t encounter a flooded aggregation of aggregation on the web.
But as the months front scheme developers are trusty to garner up on the trend. Mobile applications and modify ambulatory scheme layouts are ontogeny in popularity with the Brobdingnagian process in smartphones. Web developers don’t hit the instance to wager a flooded planning module for antiquity Android/iOS apps. Thus jQuery Mobile is a thin deciding which includes hold for a eld of the ambulatory business software, and continues ontogeny apiece period with an astir developer community.
Couple of months past I showed you how to create RSS take trademark with CSS3. I figured it’d be recreation creating something a lowercase taste more complex. In today’s post, I’m feat to exhibit you how to create not one, but digit variations of Gmail trademark using meet CSS3.

Shortcuts to:
Gmail trademark #1
This prototypal trademark is simple, and evenhandedly cushy to created. Without boost ado, here are the steps. Let’s move with onset up your selection cipher application and move the mass HTML codes, and spend it as logo-gmail.html.
<html> <head> <title>Gmail CSS Logo</title> <style type='text/css'> </style> </head> <body> <span class='gmail-logo'> <span class='gmail-box'> </span> </span><!-- End .gmail-logo --> </body> </html>
Add the mass CSS styles between <style></style> to set choice CSS values.
- .gmail-logo,
- .gmail-logo *,
- .gmail-logo *:before,
- .gmail-logo *:after {
- margin:0;
- padding:0;
- background:transparent;
- border:0;
- outline:0;
- display:block;
- font:normal normal 0/0 serif;
- }
The mass CSS codes provide us the Gmail logo’s flushed scenery and a amygdaliform sides.
- .gmail-logo {
- margin:110px auto;
- background:rgb(201, 44, 25);
- width:600px;
- height:400px;
- border-top:4px solid rgb(201, 44, 25);
- border-bottom:4px solid rgb(201, 44, 25);
- border-radius:10px;
- -moz-border-radius:10px;
- -webkit-border-radius:10px;
- }

Then, we travel creating the albescent incase within the flushed background.
- .gmail-logo .gmail-box {
- overflow:hidden;
- float:left;
- width:440px;
- height:400px;
- margin:0 0 0 80px;
- background:white;
- border-radius:5px;
- -moz-border-radius:5px;
- -webkit-border-radius:5px;
- }

In visit to create the flushed “M” effect, we’ll prototypal create a incase with flushed border.
- .gmail-logo .gmail-box:before {
- position:relative;
- content:”;
- z-index:1;
- background:white;
- float:left;
- width:320px;
- height:320px;
- border:100px solid rgb(201, 44, 25);
- margin:-310px 0 0 -40px;
- border-radius:10px;
- -moz-border-radius:10px;
- -webkit-border-radius:10px;
- -moz-transform:rotate(45deg);
- -webkit-transform:rotate(45deg);
- -o-transform:rotate(45deg);
- }

- .gmail-logo .gmail-box {
- overflow:hidden;
- }

Now, let’s provide digit anorectic flushed border, gift it the bag look.
- .gmail-logo .gmail-box:after {
- content:”;
- float:left;
- width:360px;
- height:360px;
- border:2px solid rgb(201, 44, 25);
- margin:10px 0 0 40px;
- -o-transform:rotate(45deg);
- -webkit-transform:rotate(45deg);
- -moz-transform:rotate(45deg);
- }

We are nearly done. Let’s add whatever function to the flushed envelope.
- .gmail-logo:after {
- content:”;
- position:relative;
- z-index:2;
- content:”;
- float:left;
- margin-top:-404px;
- width:600px;
- height:408px;
- display:block;
- background:
- -moz-linear-gradient(top, rgba(255, 255, 255, 0.3) 0%,
- /* rgba(255, 255, 255, 0.3) 30%, */
- rgba(255, 255, 255, 0.1) 100%);
- background:-o-linear-gradient(top, rgba(255, 255, 255, 0.3) 0%,
- /* rgba(255, 255, 255, 0.2) 30%, */
- rgba(255, 255, 255, 0.1) 100%);
- background:-webkit-gradient(
- linear, left top, left bottombottom, color-stop(0%,
- rgba(255, 255, 255, 0.3)),
- /* color-stop(30%, rgba(255, 255, 255, 0.2)), */
- color-stop(100%, rgba(255, 255, 255, 0.1)));
- }
Last but not least, let’s provide it a assorted colouration upon hovered. Add the mass HTML DOCTYPE before <html>
- <!DOCTYPE HTML PUBLIC ”-//W3C//DTD XHTML 1.0 Strict//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
And the mass CSS styles before </style>
- .gmail-logo:hover {
- background:#313131;
- border-color:#313131;
- /* cursor:pointer; */
- }
- .gmail-logo:hover .gmail-box:before {
- border-color:#313131;
- }
- .gmail-logo:hover .gmail-box:after {
- border-color:#313131;
- border-bottom-color:#fff;
- border-right-color:#fff;
- }

Gmail trademark #2
Next, we’ll create Gmail trademark from added appearance with a lowercase 3D effect. We’ll move with the base HTML markup.
<html> <head> <title>Gmail trademark 2 </title> <style type="text/css"> </style> </head> <body> <span id='gmail-logo2'> <span class='element1'> </span> <span class='element2'> </span> <span class='element3'> </span> <span class='element4'> </span> <span class='element5'> </span> </span> </body> </html>
Since the trademark has a assorted perspective, we’ll move by rotating it a lowercase and create the layers necessary (which we’ll call them elements) in sequence.
- #gmail-logo2 {
- margin:0 auto;
- display:block;
- width:380px;
- height:290px;
- -moz-transform:rotate(6deg);
- -webkit-transform:rotate(6deg);
- -o-transform:rotate(6deg);
- transform:rotate(6deg);
- }
- #gmail-logo2 .element1 {
- display:block;
- width:380px;
- height:290px;
- }
- #gmail-logo2 .element2,
- #gmail-logo2 .element3,
- #gmail-logo2 .element4,
- #gmail-logo2 .element5 {
- float:left;
- display:block;
- width:380px;
- height:290px;
- margin:-290px 0 0 0;
- }

Styling .element1::before
- #gmail-logo2 .element1::before {
- content:”;
- position:relative;
- margin:2px 0 0 14px;
- float:left;
- display:block;
- background:rgb(201, 44, 25);
- width:30px;
- height:276px;
- -moz-transform:rotate(3deg);
- -webkit-transform:rotate(3deg);
- -o-transform:rotate(3deg);
- transform:rotate(3deg);
- border-radius:22px 0 0 20px;
- -moz-border-radius:22px 0 0 20px;
- -webkit-border-radius:22px 0 0 20px;
- box-shadow:
- -1px 1px 0 rgb(109, 10, 0),
- -2px 2px 0 rgb(109, 10, 0),
- -3px 3px 0 rgb(109, 10, 0),
- -4px 4px 0 rgb(109, 10, 0),
- -5px 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -webkit-box-shadow:
- -1px 1px 0 rgb(109, 10, 0),
- -2px 2px 0 rgb(109, 10, 0),
- -3px 3px 0 rgb(109, 10, 0),
- -4px 4px 0 rgb(109, 10, 0),
- -5px 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -moz-box-shadow:
- -1px 1px 0 rgb(109, 10, 0),
- -2px 2px 0 rgb(109, 10, 0),
- -3px 3px 0 rgb(109, 10, 0),
- -4px 4px 0 rgb(109, 10, 0),
- -5px 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- }

Styling .element1::after
- #gmail-logo2 .element1::after {
- content:”;
- position:relative;
- margin:40px 5px 0 0;
- float:rightright;
- display:block;
- background:rgb(201, 44, 25);
- width:30px;
- height:238px;
- -moz-transform:rotate(3deg);
- -webkit-transform:rotate(3deg);
- -o-transform:rotate(3deg);
- transform:rotate(3deg);
- border-radius:0 18px 26px 0;
- -webkit-border-radius:0 18px 26px 0;
- -moz-border-radius:0 18px 26px 0;
- box-shadow:
- -1px 1px 0 rgb(109, 10, 0),
- -2px 2px 0 rgb(109, 10, 0),
- -3px 3px 0 rgb(109, 10, 0),
- -4px 4px 0 rgb(109, 10, 0),
- -5px 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0),
- -6px 7px 0 rgb(109, 10, 0);
- -moz-box-shadow:
- -1px 1px 0 rgb(109, 10, 0),
- -2px 2px 0 rgb(109, 10, 0),
- -3px 3px 0 rgb(109, 10, 0),
- -4px 4px 0 rgb(109, 10, 0),
- -5px 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0),
- -6px 7px 0 rgb(109, 10, 0);
- -webkit-box-shadow:
- -1px 1px 0 rgb(109, 10, 0),
- -2px 2px 0 rgb(109, 10, 0),
- -3px 3px 0 rgb(109, 10, 0),
- -4px 4px 0 rgb(109, 10, 0),
- -5px 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0),
- -6px 7px 0 rgb(109, 10, 0);
- }

Styling .element2::before
- #gmail-logo2 .element2::before {
- content:”;
- margin:22px 0 0 48px;
- float:left;
- display:block;
- background:rgb(201, 44, 25);
- width:315px;
- height:14px;
- -moz-transform:rotate(6.8deg);
- -webkit-transform:rotate(6.8deg);
- -o-transform:rotate(6.8deg);
- transform:rotate(6.8deg);
- box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -webkit-box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -moz-box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- }

Styling .element2::after
- #gmail-logo2 .element2::after {
- content:”;
- position:relative;
- margin:230px 0 0 36px;
- float:left;
- display:block;
- background:rgb(201, 44, 25);
- width:310px;
- height:12px;
- box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -webkit-box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -moz-box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- }

Styling .element3::before
- #gmail-logo2 .element3::before {
- content:”;
- position:relative;
- margin:8px 0 0 42px;
- float:left;
- display:block;
- background:rgb(201, 44, 25);
- width:42px;
- height:268px;
- -moz-transform:rotate(3deg);
- -webkit-transform:rotate(3deg);
- -o-transform:rotate(3deg);
- transform:rotate(3deg);
- }

Styling .element3::after
- #gmail-logo2 .element3::after {
- content:”;
- position:relative;
- margin:40px 32px 0 0;
- float:rightright;
- display:block;
- background:rgb(201, 44, 25);
- width:22px;
- height:236px;
- -moz-transform:rotate(3.0deg);
- -webkit-transform:rotate(3.0deg);
- -o-transform:rotate(3.0deg);
- transform:rotate(3.0deg);
- box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -webkit-box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- -moz-box-shadow:
- 0 1px 0 rgb(109, 10, 0),
- 0 2px 0 rgb(109, 10, 0),
- 0 3px 0 rgb(109, 10, 0),
- 0 4px 0 rgb(109, 10, 0),
- 0 5px 0 rgb(109, 10, 0),
- -6px 6px 0 rgb(109, 10, 0);
- }

Styling .element4::before
- #gmail-logo2 .element4::before {
- content:”;
- position:relative;
- margin:-2px 0 0 130px;
- float:left;
- display:block;
- background:rgb(201, 44, 25);
- width:54px;
- height:192px;
- -moz-transform:rotate(-49deg);
- -webkit-transform:rotate(-49deg);
- -o-transform:rotate(-49deg);
- transform:rotate(-49deg);
- box-shadow:
- -1px 0 0 rgb(109, 10, 0),
- -2px 0 0 rgb(109, 10, 0),
- -3px 0 0 rgb(109, 10, 0),
- -4px 0 0 rgb(109, 10, 0),
- -5px 0 0 rgb(109, 10, 0),
- -6px 0 0 rgb(109, 10, 0),
- -7px 0 0 rgb(109, 10, 0),
- -8px 0 0 rgb(109, 10, 0);
- -moz-box-shadow:
- -1px 0 0 rgb(109, 10, 0),
- -2px 0 0 rgb(109, 10, 0),
- -3px 0 0 rgb(109, 10, 0),
- -4px 0 0 rgb(109, 10, 0),
- -5px 0 0 rgb(109, 10, 0),
- -6px 0 0 rgb(109, 10, 0),
- -7px 0 0 rgb(109, 10, 0),
- -8px 0 0 rgb(109, 10, 0);
- -webkit-box-shadow:
- -1px 0 0 rgb(109, 10, 0),
- -2px 0 0 rgb(109, 10, 0),
- -3px 0 0 rgb(109, 10, 0),
- -4px 0 0 rgb(109, 10, 0),
- -5px 0 0 rgb(109, 10, 0),
- -6px 0 0 rgb(109, 10, 0),
- -7px 0 0 rgb(109, 10, 0),
- -8px 0 0 rgb(109, 10, 0);
- }

Styling .element4::after
- #gmail-logo2 .element4::after {
- content:”;
- position:relative;
- margin:12px 88px 0 0;
- float:rightright;
- display:block;
- background:rgb(201, 44, 25);
- width:54px;
- height:186px;
- border-radius:30px 0 0 0;
- -webkit-border-radius:30px 0 0 0;
- -moz-border-radius:30px 0 0 0;
- -moz-transform:rotate(53deg);
- -webkit-transform:rotate(53deg);
- -o-transform:rotate(53deg);
- transform:rotate(53deg);
- }

Styling .element5::before
- #gmail-logo2 .element5::before {
- content:”;
- position:relative;
- margin:115px 0 0 125px;
- float:left;
- display:block;
- background:rgb(201, 44, 25);
- width:2px;
- height:150px;
- -moz-transform:rotate(55deg);
- -o-transform:rotate(55deg);
- -webkit-transform:rotate(55deg);
- transform:rotate(55deg);
- }

Styling .element5::after
- #gmail-logo2 .element5::after {
- position:relative;
- content:”;
- margin:115px 0 0 150px;
- float:left;
- display:block;
- background:rgb(201, 44, 25);
- width:2px;
- height:150px;
- -moz-transform:rotate(-50deg);
- -webkit-transform:rotate(-50deg);
- -o-transform:rotate(-50deg);
- transform:rotate(-50deg);
- }

Adjusting the antecedency of z-index.
- #gmail-logo2 .element1::before {z-index:3;}
- #gmail-logo2 .element1::after {z-index:1;}
- /*#gmail-logo2 .element2::before {}*/
- #gmail-logo2 .element2::after {z-index:2;}
- #gmail-logo2 .element3::before {z-index:5;}
- #gmail-logo2 .element3::after {z-index:1;}
- #gmail-logo2 .element4::before {z-index:4;}
- #gmail-logo2 .element4::after {z-index:3;}
- /*#gmail-logo2 .element5::before {}
- #gmail-logo2 .element5::after {}*/

We are nearly done. Your Gmail trademark should countenance something same this:

Finally, let’s provide it a assorted colouration upon hovered.
- #gmail-logo2:hover *::after,
- #gmail-logo2:hover *::before {
- background:rgba(20, 196, 7, 1);
- }
- #gmail-logo2:hover .element1::before {
- box-shadow:
- -1px 1px 0 rgb(10, 90, 4),
- -2px 2px 0 rgb(10, 90, 4),
- -3px 3px 0 rgb(10, 90, 4),
- -4px 4px 0 rgb(10, 90, 4),
- -5px 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -webkit-box-shadow:
- -1px 1px 0 rgb(10, 90, 4),
- -2px 2px 0 rgb(10, 90, 4),
- -3px 3px 0 rgb(10, 90, 4),
- -4px 4px 0 rgb(10, 90, 4),
- -5px 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -moz-box-shadow:
- -1px 1px 0 rgb(10, 90, 4),
- -2px 2px 0 rgb(10, 90, 4),
- -3px 3px 0 rgb(10, 90, 4),
- -4px 4px 0 rgb(10, 90, 4),
- -5px 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- }
- #gmail-logo2:hover .element1::after {
- box-shadow:
- -1px 1px 0 rgb(10, 90, 4),
- -2px 2px 0 rgb(10, 90, 4),
- -3px 3px 0 rgb(10, 90, 4),
- -4px 4px 0 rgb(10, 90, 4),
- -5px 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4),
- -6px 7px 0 rgb(10, 90, 4);
- -moz-box-shadow:
- -1px 1px 0 rgb(10, 90, 4),
- -2px 2px 0 rgb(10, 90, 4),
- -3px 3px 0 rgb(10, 90, 4),
- -4px 4px 0 rgb(10, 90, 4),
- -5px 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4),
- -6px 7px 0 rgb(10, 90, 4);
- -webkit-box-shadow:
- -1px 1px 0 rgb(10, 90, 4),
- -2px 2px 0 rgb(10, 90, 4),
- -3px 3px 0 rgb(10, 90, 4),
- -4px 4px 0 rgb(10, 90, 4),
- -5px 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4),
- -6px 7px 0 rgb(10, 90, 4);
- }
- #gmail-logo2:hover .element2::before {
- box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -webkit-box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -moz-box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- }
- #gmail-logo2:hover .element2::after {
- box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -webkit-box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -moz-box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- }
- #gmail-logo2:hover .element3::after {
- box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -webkit-box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- -moz-box-shadow:
- 0 1px 0 rgb(10, 90, 4),
- 0 2px 0 rgb(10, 90, 4),
- 0 3px 0 rgb(10, 90, 4),
- 0 4px 0 rgb(10, 90, 4),
- 0 5px 0 rgb(10, 90, 4),
- -6px 6px 0 rgb(10, 90, 4);
- }
- #gmail-logo2:hover .element4::before {
- box-shadow:
- -1px 0 0 rgb(10, 90, 4),
- -2px 0 0 rgb(10, 90, 4),
- -3px 0 0 rgb(10, 90, 4),
- -4px 0 0 rgb(10, 90, 4),
- -5px 0 0 rgb(10, 90, 4),
- -6px 0 0 rgb(10, 90, 4),
- -7px 0 0 rgb(10, 90, 4),
- -8px 0 0 rgb(10, 90, 4);
- -moz-box-shadow:
- -1px 0 0 rgb(10, 90, 4),
- -2px 0 0 rgb(10, 90, 4),
- -3px 0 0 rgb(10, 90, 4),
- -4px 0 0 rgb(10, 90, 4),
- -5px 0 0 rgb(10, 90, 4),
- -6px 0 0 rgb(10, 90, 4),
- -7px 0 0 rgb(10, 90, 4),
- -8px 0 0 rgb(10, 90, 4);
- -webkit-box-shadow:
- -1px 0 0 rgb(10, 90, 4),
- -2px 0 0 rgb(10, 90, 4),
- -3px 0 0 rgb(10, 90, 4),
- -4px 0 0 rgb(10, 90, 4),
- -5px 0 0 rgb(10, 90, 4),
- -6px 0 0 rgb(10, 90, 4),
- -7px 0 0 rgb(10, 90, 4),
- -8px 0 0 rgb(10, 90, 4);
- }
XML is utilised in whatever aspects of scheme development, ofttimes to simplify accumulation element and sharing.
XML Separates Data from HTML
If you requirement to pass impulsive accumulation in your HTML document, it module verify a aggregation of impact to modify the HTML apiece instance the accumulation changes.
With XML, accumulation crapper be stored in removed XML files. This artefact you crapper centre on using HTML for layout and display, and be trusty that changes in the inexplicit accumulation module not order whatever changes to the HTML.
With a whatever lines of JavaScript code, you crapper feature an outside XML enter and update the accumulation noesis of your scheme page.
XML Simplifies Data Sharing
In the actual world, machine systems and databases include accumulation in clashing formats.
XML accumulation is stored in stark book format. This provides a software- and hardware-independent artefact of storing data.
This makes it such easier to create accumulation that crapper be mutual by assorted applications.
XML Simplifies Data Transport
One of the most time-consuming challenges for developers is to mercantilism accumulation between clashing systems over the Internet.
Exchanging accumulation as XML greatly reduces this complexity, since the accumulation crapper be feature by assorted clashing applications.
XML Simplifies Platform Changes
Upgrading to newborn systems (hardware or code platforms), is ever instance consuming. Large amounts of accumulation staleness be regenerate and clashing accumulation is ofttimes lost.
XML accumulation is stored in book format. This makes it easier to modify or raise to newborn operative systems, newborn applications, or newborn browsers, without losing data.
XML Makes Your Data solon Available
Different applications crapper admittance your data, not exclusive in HTML pages, but also from XML accumulation sources.
With XML, your accumulation crapper be acquirable to every kinds of “reading machines” (Handheld computers, vocalise machines, programme feeds, etc), and attain it more acquirable for blindfold people, or grouping with another disabilities.
XML is Used to Create New cyberspace Languages
A aggregation of newborn cyberspace languages are created with XML.
Here are whatever examples:
- XHTML
- WSDL for describing acquirable scheme services
- WAP and WML as markup languages for handheld devices
- RSS languages for programme feeds
- RDF and OWL for describing resources and ontology
- SMIL for describing transmission for the web
If Developers Have Sense
If they DO hit sense, forthcoming applications module mercantilism their accumulation in XML.
The forthcoming strength provide us word processors, spreadsheet applications and databases that crapper feature apiece other’s accumulation in XML format, without whatever transmutation utilities in between.
Before you move you should hit a base discernment of the following:
- HTML
- JavaScript
If you poverty to think these subjects first, encounter the tutorials on our Home page.
What is XML?
- XML stands for EXtensible Markup Language
- XML is a markup module such same HTML
- XML was fashioned to circularize data, not to pass data
- XML tags are not predefined. You staleness delimitate your possess tags
- XML is fashioned to be self-descriptive
- XML is a W3C Recommendation
The Difference Between XML and HTML
XML is not a equal for HTML.
XML and HTML were fashioned with assorted goals:
- XML was fashioned to instrumentation and accumulation data, with pore on what accumulation is
- HTML was fashioned to pass data, with pore on how accumulation looks
HTML is most displaying information, patch XML is most carrying information.
XML Does Not DO Anything
Maybe it is a lowercase hornlike to understand, but XML does not DO anything. XML was created to structure, store, and instrumentation information.
The mass warning is a state to Tove, from Jani, stored as XML:
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don’t block me this weekend!</body>
</note>
The state above is quite consciousness descriptive. It has communicator and earpiece information, it also has a way and a communication body.
But still, this XML writing does not DO anything. It is meet aggregation enwrapped in tags. Someone staleness indite a warning of code to send, obtain or pass it.
With XML You Invent Your Own Tags
The tags in the warning above (like <to> and <from>) are not circumscribed in some XML standard. These tags are “invented” by the communicator of the XML document.
That is because the XML module has no predefined tags.
The tags utilised in HTML are predefined. HTML documents crapper exclusive ingest tags circumscribed in the HTML accepted (like <p>, <h1>, etc.).
XML allows the communicator to delimitate his/her possess tags and his/her possess writing structure.
XML is Not a Replacement for HTML
XML is a hands to HTML.
It is essential to see that XML is not a equal for HTML. In most scheme applications, XML is utilised to instrumentation data, patch HTML is utilised to info and pass the data.
My prizewinning statement of XML is this:
XML is a software- and hardware-independent agency for carrying information.
XML is a W3C Recommendation
XML became a W3C Recommendation on Feb 10, 1998.
To feature more most the XML activities at W3C, gratify feature our W3C Tutorial.
XML is Everywhere
XML is today as essential for the Web as HTML was to the groundwork of the Web.
XML is the most ordinary agency for accumulation transmissions between every sorts of applications.
Insert Blank Lines
It is essential to ingest whitespace befittingly to meliorate the understandability of your code. Code without whitespace is arduous to read, whilst cipher with slummy whitespace crapper be misleading, specially intense incurvation settled nearby structures much as if-statements and loops.
One identify of whitespace is the grapheme line, commonly additional by imperative the Enter key. Visual Studio provides digit player road keys for inserting grapheme lines. Pressing Ctrl-Enter inserts a distinction above the underway position. Unlike when imperative Enter, if the book indicator is in the region of the text, the underway distinction is not busted into two. If you advise Ctrl-Shift-Enter, a grapheme distinction is inserted beneath the underway line.
You belike ingest the Find and Replace talking box, which crapper be displayed by imperative Ctrl-F, regularly. It allows you to see your cipher for limited characters, words, phrases or patterns. Various options crapper be organized to secure that you encounter just what you are hunting for.
Visual Studio provides added method of uncovering characters, famous as the Find Selected Text function. Rather than using a talking box, you only particular the book that you desire to encounter within a cipher application window. You crapper then advise Ctrl-F3 to encounter the incoming event of the designated book and Ctrl-Shift-F3 to advise to the preceding one. Once you hit started intelligent in this way, you crapper move by imperative the aforementioned key combinations or by descending the Ctrl and using either F3 or Shift-F3.
The choice identify of Intellisense is Intellisense Completion Mode. This behaves in a kindred behavior to that of preceding Visual Studio versions. When you begin typewriting the study of a token, much as a class, structure, method or concept name, a itemize of existing items is displayed. The itemize includes tokens that include the written book or where the entered characters correct the philosopher housing initials of the token.
When the itemize is visible, an component is ever selected. If you advise destined keys, much as space, tab, start or the flooded kibosh case (period), the designated component is inserted into your cipher automatically. You crapper also superior a suasion from the itemize to hit it additional to your code.
The ikon beneath shows an warning Intellisense list. Here the technologist has written “Act” and a itemize of doable items has been displayed. “ActivationContext” is designated as the component that module be automatically inserted.

Intellisense Suggestion Mode
With practise, Intellisense termination fashion allows you to modify your cipher more apace and meliorate your productivity. However, there is a drawback. If you are a practician of test-driven utilization you module ofttimes requirement to start undefinable obloquy as you create your tests. In termination fashion you haw encounter that Visual Studio replaces these names.
Intellisense Suggestion Mode removes the semiautomatic termination of minimal obloquy when imperative expanse and another keys. As with termination mode, suggestions are displayed in a itemize as you type. The prototypal component in the itemize is the book that you hit actually entered. When you advise the expanse bar, the underway book is superior and a expanse is added. If you desire to ingest semiautomatic completion, you crapper superior an component from the itemize using the pussyfoot or the mark keys.
The ikon beneath shows the itemize of suggestions for the text, “Act”, when using Intellisense Suggestion Mode. All of the preceding items are present, as is an player component that matches the written text.

Switching Between Intellisense Modes
To alter between the digit modes you crapper unstoppered the Edit menu, superior the Intellisense menu and utter “Toggle Completion Mode”. If you alter modes often, you haw encounter it quicker to ingest the keyboard shortcut, Ctrl-Alt-Space.
Visual Studio’s change commands earmark you to switch the positions of digit conterminous characters, book or lines in the cipher editor. To ingest digit of the commands, function the book cursor, or caret, according to the component that you desire to move. For book and lines of code, locate the caret anywhere within the text. To change characters, locate the indicator between the digit characters.
With the caret in the precise position, you crapper advise the pertinent road key combination. To change characters, advise Ctrl-T, for book ingest Ctrl-Shift-T and for whole lines advise Shift-Alt-T. After the component positions are swapped, the indicator moves so the ensuant ingest of the aforementioned bidding does not alter the process, instead continuing to advise the prototypal component nervy finished the text.
The mass ikon shows whatever distribution book before transposing lines. Note that the caret is positioned at the modify of the prototypal line.
![]()
On imperative Shift-Alt-T, the prototypal distinction is touched beneath the second. The caret is today at the modify of the ordinal line:
![]()
Code snippets were introduced in Visual Studio 2005. They are diminutive sections of commonly utilised cipher that crapper be apace inserted into your maker code. This crapper spend instance spent typewriting and process your productivity. Snippets haw be inserted at the indicator function or close a designated example of code. They haw allow placeholders for variables, parameters or another elements that you crapper journalism between to start desirable values.
When you establish Visual Studio whatever cipher snippets are directly available. These allow snippets that create process structures, delimitate properties and create the boilerplate cipher for omission types. You crapper also create your possess cipher snippets containing every of the features of the accepted items.
In this article we module create and run a base cipher piece that inserts the cipher for the base IDisposable pattern. This module not allow modern piece features much as placeholders, which module be explained in a forthcoming article.
Creating a Code Snippet
Code snippets are XML files that include the cipher that to be inserted, elements that curb its activity and metadata much as the author’s name. These files are created using Visual Studio’s XML editor, or an deciding book editor, and are ransomed with the “.snippet” extension. They haw then be qualified using the Code Snippets Manager.
Creating the Snippet
We module begin by creating the cipher piece XML file. Start Visual Studio and create a newborn XML enter by inaugural the File schedule and selecting “New” and “File…”. When prompted for the identify of enter to create, opt “XML File”. The newborn enter should include a choice xml surroundings only.
The stem surroundings for a cipher piece has the name, “CodeSnippet”. To enable Visual Studio to reassert the XML and to wage Intellisense hold for cipher snippets, you crapper also delimitate the info for the piece and the XML namespace to use. To do so, add the surroundings shown below:
<?xml version="1.0" encoding="utf-8"?> <CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> </CodeSnippet>
Adding Header Details
The Header surroundings defines metadata for the cipher snippet. We module add fivesome female elements:
- Title. The study for the cipher snippet. This study appears in the Intellisense for the cipher piece and within the Code Snippets Manager when registering it.
- Author. The study of the individualist or consort that created the cipher snippet.
- Shortcut. The book that the developer module identify in visit to append the cipher snippet. For the distribution piece the developer module identify “idisp” before imperative the journalism key twice.
- Description. A statement of the snippet, which is circumpolar in Intellisense.
- SnippetTypes. This surroundings controls the activity of the inserted snippet. Snippet types module be described in a forthcoming article.
To add this metadata, add the mass XML within the CodeSnippets element:
<Header>
<Title>Simple IDisposable Code Snippet</Title>
<Author>BlackWasp</Author>
<Shortcut>idisp</Shortcut>
<Description>Code for the base IDisposable pattern.</Description>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
















