Off Canvas

Used to present secondary content or navigation which could be a part of the page but due to limited screen real-estate, or to focus user attention, sits just outside screen until triggered by the user.

An off canvas is a modal drawer that slides in from the right.

The page behind becomes frozen while an off canvas is open.

The browser scroll bar (or facsimile) controls the off canvas content while it's open instead of the page behind.

On larger breakpoints, an off canvas takes over a maximum of 10/12 columns, leaving a portion of the main screen visible.

On smaller breakpoints, the off canvas takes over the entire screen.

  • On smaller breakpoints, tabs become a vertical CTA list that each opens its own off-canvas.

The off canvas masthead is a fixed element that remains in its persistent location as the user scrolls.

To close an off canvas, either select the left-most CTA in its masthead (typically "< Back") or on a touchscreen swipe it to the right.

Do's and Don'ts

Types

Variants

Common Button Labels and Usage

Title case, 2-3 words maximum.
Do not combine actions in a label (exception: "Customize & Buy").
If standard labels don't fit the button's purpose, align label with the task the user is attempting.

Please refer to the Dell Technologies branding website, https://brand.delltechnologies.com/faq/#voice, for further information regarding call-to-action labels and usage.

Button Label:
Corresponding Action:
Add to Cart
Search
Cancel
Save
Edit
Delete
Continue
Next/Previous
Submit
Select
Sign In/Sign Out
View Details
Ok/Cancel
Learn More
Close
Takes users to Cart page, with item added
Used for search buttons
Takes users back to entry point for a task
Used to save an item
Navigates users to change an item
Deletes an item on the page, usually with a verification step
Used as progression
Used as forward and backward navigation (Next is primary, Previous is secondary)
Used to submit a task or info
Used for choosing items in a task flow
Authentication standard, for consistency do not use Log In/Log Out or Signin/Signout
Used instead of “Select” in cases of product details or within learn content
For use in modal verification steps when more specific CTAs will not fit due to space
Used to link users to more learning content or contextual help
Used within modal windows

Off Canvas

<div id="exampleModalOffcanvas" tabindex="-1" class="dds__modal dds__modal-offcanvas" role="dialog" aria-labelledby="dds__modal-title3"> <!-- <div class="dds__modal-dialog" role="document"> --> <div class="dds__modal-content"> <div class="dds__container-fluid dds__p-1"> <div class="dds__row"> <div class="dds__col-6"> <button class="dds__btn dds__btn-link" data-dismiss="dds__modal" aria-label="Back"> <i class="dds__icons dds__chevron-left" aria-hidden="true"></i> <span>Back</span> </button> </div> </div> </div> <div class="dds__modal-body"> <h2 id="dds__modal-title3">Offcanvas Header</h2> <p>Bacon ipsum dolor amet pork pig turkey prosciutto filet mignon. Landjaeger doner pork belly fatback, jerky porchetta ham filet mignon ribeye jowl short ribs beef ribs meatball. Prosciutto kevin venison ham biltong cupim landjaeger ribeye. Short ribs pig beef ribs biltong kielbasa tenderloin strip steak boudin shoulder bresaola. Hamburger alcatra chuck andouille prosciutto pancetta.</p> <p>Ham hock chicken jowl, strip steak landjaeger shoulder andouille pork chop fatback ham biltong brisket. Ribeye jerky cow porchetta shank turkey bacon tenderloin ham venison kevin biltong pig bresaola swine. Cupim prosciutto venison tri-tip fatback porchetta drumstick burgdoggen shank strip steak bresaola ham hock. Biltong landjaeger beef, short ribs drumstick bresaola fatback pork loin pork chop bacon kielbasa chuck brisket venison tail. Jowl swine shoulder brisket.</p> <p>T-bone kielbasa alcatra, frankfurter tri-tip swine ham hock rump cow pancetta cupim spare ribs ham leberkas tongue. Tenderloin landjaeger doner chicken strip steak burgdoggen. Ball tip meatball bacon, pig filet mignon t-bone ham hock kielbasa. Pork loin cupim ground round bresaola ribeye flank chicken. Flank tongue sausage andouille, spare ribs landjaeger pastrami shoulder. Frankfurter beef shank, meatball alcatra beef ribs jerky ribeye rump corned beef porchetta chuck cow.</p> <p>Lorem ipsum dolor amet narwhal mlkshk kale chips try-hard forage, gentrify copper mug four dollar toast tumeric chartreuse. Messenger bag listicle XOXO DIY, microdosing health goth semiotics palo santo pabst vape. Vape ennui cronut tbh ugh. Banjo marfa organic affogato. Organic venmo vinyl vaporware. Chillwave cold-pressed aesthetic, jean shorts godard celiac man bun twee banh mi raw denim keffiyeh lo-fi skateboard. Pickled air plant next level, woke DIY adaptogen cliche austin.</p> <p>Bicycle rights franzen keffiyeh ugh crucifix affogato pabst knausgaard austin scenester narwhal polaroid. Forage mlkshk prism air plant activated charcoal, lo-fi kitsch master cleanse unicorn squid PBR&B chillwave drinking vinegar iceland. Hoodie raw denim selfies drinking vinegar vegan jean shorts. Cray brunch narwhal live-edge edison bulb synth biodiesel you probably haven't heard of them offal. Shaman master cleanse venmo tumblr, kombucha flexitarian cornhole paleo forage air plant pug. Distillery intelligentsia salvia vice prism adaptogen small batch iceland gastropub scenester craft beer schlitz. Cardigan kogi distillery chartreuse.</p> <p>Distillery sartorial cliche iPhone twee vaporware. Health goth heirloom shabby chic taxidermy lomo. Tattooed fashion axe brunch portland heirloom. Pork belly neutra authentic fashion axe normcore, kombucha succulents poutine etsy. Man bun truffaut four dollar toast leggings. Disrupt gentrify freegan kale chips pour-over knausgaard post-ironic jianbing.</p> <p>Edison bulb typewriter helvetica, readymade kinfolk subway tile food truck. Sriracha locavore tumblr tofu cliche art party live-edge sartorial single-origin coffee man braid fashion axe. Coloring book aesthetic leggings keytar synth. Hashtag roof party irony, shaman gastropub photo booth hella bespoke iceland banh mi YOLO cardigan offal. Kitsch polaroid hexagon, freegan cliche locavore typewriter mumblecore air plant DIY edison bulb. Skateboard truffaut raw denim chillwave poutine, tacos banjo roof party pop-up blog tilde prism. Single-origin coffee fingerstache taiyaki gochujang art party copper mug literally fixie.</p> <p>Chambray trust fund listicle lo-fi gentrify cold-pressed beard echo park hashtag tofu banh mi try-hard. Actually meh selfies woke vaporware chambray. Actually vinyl hella meggings. Kogi tumblr 3 wolf moon, scenester distillery seitan franzen wolf +1 typewriter ennui tbh roof party unicorn vaporware. Hot chicken air plant PBR&B tofu trust fund pinterest mustache brooklyn.</p> <p>Narwhal taxidermy cliche gluten-free biodiesel small batch. Pour-over whatever fixie umami prism chillwave sartorial keffiyeh. Quinoa church-key lomo, pitchfork sustainable mixtape paleo YOLO ennui heirloom occupy forage meh beard. Sriracha helvetica glossier yuccie affogato copper mug church-key blue bottle tacos flannel yr. Farm-to-table heirloom truffaut cred wolf narwhal butcher keytar ugh.</p> <p>Next level post-ironic farm-to-table, direct trade gluten-free jean shorts wolf selvage twee lomo air plant etsy selfies glossier. Selfies meh artisan, brunch seitan forage succulents narwhal kale chips truffaut hoodie lumbersexual snackwave. Live-edge keytar affogato squid unicorn. Selvage plaid knausgaard twee brunch, franzen skateboard butcher VHS hoodie.</p> <p>Poutine +1 VHS direct trade cliche beard mustache church-key truffaut YOLO brooklyn bitters palo santo. YOLO tumeric shaman green juice, bushwick salvia meggings. Mixtape franzen post-ironic etsy semiotics irony single-origin coffee godard fixie selfies street art normcore next level yr. Keytar skateboard slow-carb kombucha godard. Kinfolk tattooed typewriter VHS man braid normcore crucifix kombucha celiac pabst schlitz. Man bun waistcoat prism air plant. Four loko af heirloom hammock locavore, cardigan etsy gluten-free.</p> <form data-toggle="dds__form-validation" novalidate> <div class="dds__form-group"> <label for="emailInput-validation">Email label</label> <input type="email" class="dds__form-control" maxlength="256" name="email" id="emailInput-validation" required aria-invalid="false" aria-describedby=""> <div class="dds__invalid-feedback" id="emailInput-validationFeedback"> Please enter your email. </div> </div> <div class="dds__form-row"> <div class="dds__col-md-4 dds__mb-3"> <label for="firstnameInput-validation">First name</label> <input type="text" class="dds__form-control" id="firstnameInput-validation" required aria-invalid="false" aria-describedby=""> <div class="dds__invalid-feedback" id="firstnameInput-validationFeedback"> Please enter your first name. </div> </div> <div class="dds__col-md-4 dds__mb-3"> <label for="lastnameInput-validation">Last name</label> <input type="text" class="dds__form-control" id="lastnameInput-validation" required aria-invalid="false" aria-describedby=""> <div class="dds__invalid-feedback" id="lastnameInput-validationFeedback"> Please enter your last name. </div> </div> <div class="dds__col-md-4 dds__mb-3"> <label for="usernameInput-validation">Username</label> <input type="text" class="dds__form-control" id="usernameInput-validation" required aria-invalid="false" aria-describedby=""> <div class="dds__invalid-feedback" id="usernameInput-validationFeedback"> Please choose a username. </div> </div> </div> <div class="dds__form-row"> <div class="dds__col-md-6 dds__mb-3"> <label for="cityInput-validation">City</label> <input type="text" class="dds__form-control" id="cityInput-validation" required aria-invalid="false" aria-describedby=""> <div class="dds__invalid-feedback" id="cityInput-validationFeedback"> Please provide a valid city. </div> </div> <div class="dds__col-md-3 dds__mb-3"> <label for="stateInput-validation">State</label> <input type="text" placeholder="texas" class="dds__form-control" id="stateInput-validation" required aria-invalid="false" aria-describedby=""> <div class="dds__invalid-feedback" id="stateInput-validationFeedback"> Please provide a valid state. </div> </div> <div class="dds__col-md-3 dds__mb-3"> <label for="zipcodeInput-validation">Zip</label> <input id="zipcodeInput-validation" type="text" placeholder="#####" pattern="[1-9]{1}[0-9]{4}" class="dds__form-control dds__input-masked" data-charset="XXXXX" required pattern="^[0-9]{5}(?:-9]{4})?$" aria-invalid="false" aria-describedby=""> <div class="dds__invalid-feedback" id="zipcodeInput-validationFeedback"> Please provide a valid zip. </div> </div> </div> <div class="dds__form-row"> <div class="dds__col-md-3 dds__mb-3"> <label for="phoneInput-validation">Phone</label> <input id="phoneInput-validation" type="text" placeholder="(___) ___-____" set-cursor="1" pattern="\([1-9]{1}[0-9]{2}\) [0-9]{3}-[0-9]{4}" class="dds__form-control dds__input-masked" data-charset="(XXX) XXX-XXXX" required/> <div class="dds__invalid-feedback" id="phoneInput-validationFeedback"> Please provide a valid phone. </div> </div> </div> <button class="dds__btn dds__btn-primary" type="submit">Submit form</button> </form> </div> </div>
</div>
<button role="button" class="dds__btn dds__btn-primary" data-toggle="dds__modal" data-target="#exampleModalOffcanvas">Launch demo modal</button>

No items found.

No items found.

No items found.

To be determined.

The W3C Web Accessibility Initiative (WAI) develops standards and support materials to help you understand and implement accessibility.

An off canvas is highly similar to a modal.

Please follow the best practices for modal dialogs from WAI-ARIA authoring practices 1.1.

Please also refer to these recommendations for dialogs from WAI-ARIA 1.1.

You may refer to these examples of modal dialogs from WAI-ARIA practices 1.1.