HTML preprocessors can make writing HTML more powerful or convenient. For instance, Markdown is designed to be easier to write and read for text documents and you could write a loop in Pug.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. So you don't have access to higher-up elements like the <html>
tag. If you want to add classes there that can affect the whole document, this is the place to do it.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. If you need things in the <head>
of the document, put that code here.
The resource you are linking to is using the 'http' protocol, which may not work when the browser is using https.
CSS preprocessors help make authoring CSS easier. All of them offer things like variables and mixins to provide convenient abstractions.
It's a common practice to apply CSS to a page that styles elements such that they are consistent across all browsers. We offer two of the most popular choices: normalize.css and a reset. Or, choose Neither and nothing will be applied.
To get the best cross-browser support, it is a common practice to apply vendor prefixes to CSS properties and values that require them to work. For instance -webkit-
or -moz-
.
We offer two popular choices: Autoprefixer (which processes your CSS server-side) and -prefix-free (which applies prefixes via a script, client-side).
Any URLs added here will be added as <link>
s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.
You can apply CSS to your Pen from any stylesheet on the web. Just put a URL to it here and we'll apply it, in the order you have them, before the CSS in the Pen itself.
You can also link to another Pen here (use the .css
URL Extension) and we'll pull the CSS from that Pen and include it. If it's using a matching preprocessor, use the appropriate URL Extension and we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
JavaScript preprocessors can help make authoring JavaScript easier and more convenient.
Babel includes JSX processing.
Any URL's added here will be added as <script>
s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.
You can apply a script from anywhere on the web to your Pen. Just put a URL to it here and we'll add it, in the order you have them, before the JavaScript in the Pen itself.
If the script you link to has the file extension of a preprocessor, we'll attempt to process it before applying.
You can also link to another Pen here, and we'll pull the JavaScript from that Pen and include it. If it's using a matching preprocessor, we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
Search for and use JavaScript packages from npm here. By selecting a package, an import
statement will be added to the top of the JavaScript editor for this package.
Using packages here is powered by esm.sh, which makes packages from npm not only available on a CDN, but prepares them for native JavaScript ESM usage.
All packages are different, so refer to their docs for how they work.
If you're using React / ReactDOM, make sure to turn on Babel for the JSX processing.
If active, Pens will autosave every 30 seconds after being saved once.
If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.
If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.
Visit your global Editor Settings.
#app
.left-pane(v-bind:class="phone")
h3.device-label.text--center {{phone}}
.device-container
.hamburger-menu
.modal-container
// Confirmation Modals
//- template(v-if="modalVersion === 'confirmation-modal'")
//- .modal-head-container
//- .modal-icon--xl
//- .icon--xl.icon-checkmark
//- h2.text--center Thanks for your order!
//- p.text--center We sent you an email confirmation.
//- hr.thin
//- p.text--small
//- span.text--strong 1 item will ship to Oscar Waczynski
//- | at 215 SE 8th Ave, Apt 2480, Fort Lauderdale FL 33301
//- .product-attribute-container
//- template
//- hr.thin
//- p.text--small We have set up an Autoship for you called
//- span.text--strong "Autoship #1"
//- | you can rename it if you prefer.
//- template
//- .label Your Order Contains:
//- hr.thin
//- template
//- .product-attribute-icon
//- .icon--m.icon-rx
//- .product-attribute-text
//- p.text--small.text--strong Prescription Item
//- p.text--small.text--muted Will ship after vet approval.
//- hr.thin
//- template
//- .product-attribute-icon
//- .icon--m.icon-frozen
//- .product-attribute-text
//- p.text--small.text--strong Frozen Food
//- p.text--small.text--muted Specially packaged and will ship separately.
.modal-footer
button Ok
// Failure Modals
template(v-if="modalVersion === 'upload-interupted'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-alert
h2.text--center Oops!
p.text--center We can't submit your review until all the images have been uploaded successfully. Please go back and reupload or remove them before continuing.
.modal-footer
button Ok
template(v-if="modalVersion === 'no-photo-access'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-camera-access
h2.text--center Please Allow Photo Access
p.text--center This allows you to share photos from your phone with Chewy.
.modal-footer
button.button-left.text--muted Cancel
button.button-right Allow Access
// Success Modals --------------------
// Autoship Ship Now
template(v-if="modalVersion === 'autoship-ship-now'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-checkmark
h2.text--center Autoship is on it's way!
p.text--center We'll get started on your order and email you when it's shipped.
.modal-footer
button Ok
// Frequency Change Modal
template(v-if="modalVersion === 'frequency-updated'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-checkmark
h2.text--center Frequency Updated!
p.text--center We'll get started on your order and email you when it's shipped.
.modal-footer
button Ok
// Review Submitted
template(v-if="modalVersion === 'review-submitted'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-checkmark
h2.text--center Thank You!
p.text--center Your review has been submitted. Please note that your review may take up to 48 hours to appear.
.modal-footer
button Ok
// NPS Submitted
template(v-if="modalVersion === 'nps-submitted'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-checkmark
h2.text--center Thank You!
p.text--center We appreciate you taking the time to let us know what you think.
.modal-footer
button Ok
// Confirmation Modals --------------------
// Sign Out Modal
template(v-if="modalVersion === 'sign-out'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-sign-out
h2.text--center Sign Out
p.text--center Are you sure you want to sign out?
.modal-footer
button.button-left.text--muted Cancel
button.button-right Sign out
// Touch ID
template(v-if="modalVersion === 'use-touch-id'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-touch-id
h2.text--center Sign in with Touch ID?
p.text--center Want to skip the password and use your fingerprint to sign in?
.modal-footer
button.button-left.text--muted Not Now
button.button-right Use Touch ID
// Enable Touch ID
template(v-if="modalVersion === 'enable-touch-id'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-touch-id
h2.text--center Enable Touch ID?
p.text--center Prefer to skip the password and use your fingerprint to sign in? Enable touch ID then sign in and you’ll be prompted in the future for your fingerprint.
.modal-footer
button.button-left.text--muted Not Now
button.button-right Use Touch ID
// Android Finger Print
template(v-if="modalVersion === 'use-finger-print'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-finger-print
h2.text--center Sign in with Fingerprint?
p.text--center Prefer to skip the password and use your fingerprint to sign in?
.modal-footer
button.button-left.text--muted Not Now
button.button-right Use Fingerprint
// Android Enable Finger Print
template(v-if="modalVersion === 'enable-finger-print'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-finger-print
h2.text--center Sign in with Fingerprint?
p.text--center Prefer to skip the password and use your fingerprint to sign in? Enable the touch sensor then sign in and you’ll be prompted in the future for your fingerprint.
.modal-footer
button.button-left.text--muted Not Now
button.button-right Use Fingerprint
// Android Finger Print Scan
template(v-if="modalVersion === 'scan-finger-print'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-finger-print
h2.text--center Fingerprint Sign in
p.text--center Use the touch sensor to log in.
.modal-footer
button Cancel
// Android Finger Error
template(v-if="modalVersion === 'error-finger-print'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-finger-print
h2.text--center Try Again
p.text--center Use the touch sensor to log in.
.modal-footer
button.button-left.text--muted Cancel
button.button-right Use Password
// Cancel Review
template(v-if="modalVersion === 'cancel-review'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-alert
h2.text--center Are you sure?
p.text--center If you cancel now, you'll lose what you've done so far.
.modal-footer
button.button-left.text--red Cancel
button.button-right Go Back
// Cancel Autoship
template(v-if="modalVersion === 'cancel-autoship'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-cancel-autoship
h2.text--center Are you sure?
p.text--center You have saved $38.24 so far. If you cancel this Autoship, you will no longer save on Autoship & Save items.
.modal-footer
button.button-left No
button.button-right.text--red Yes
// Delete Address
template(v-if="modalVersion === 'delete-address'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-delete-address
h2.text--center Are you sure?
p.text--center Do you want to delete your address of 215 SE 8th Ave?
.modal-footer
button.button-left.text--muted Cancel
button.button-right.text--red Delete
// Delete Payment Method
template(v-if="modalVersion === 'delete-payment-method'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-delete-payment
h2.text--center Are you sure?
p.text--center Do you want to delete your Discover ending in 0005?
.modal-footer
button.button-left.text--muted Cancel
button.button-right.text--red Delete
// Confirmation Modals ------------------
// Call Chewy
template(v-if="modalVersion === 'call-chewy'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-call-chewy
h2.text--center Call Chewy?
p.text--center 1-800-672-4399
.modal-footer
button.button-left.text--muted Cancel
button.button-right Call
// Reset Password
template(v-if="modalVersion === 'password-reset'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-email
h2.text--center Password Reset Emailed
p.text--center An email with instructions will be sent to
span.text--strong owaczynski@chewy.com
hr.thin
p.text--small For security reasons, it can take several minutes to receive this email.
.modal-footer
button Ok
// Order Processing
template(v-if="modalVersion === 'order-processing'")
.modal-head-container
.modal-icon--xl
.icon--xl.icon-chewy-box
h2.text--center Your order is on its way!
p.text--center Your current order is processing, so we’ll apply this change to future shipments.
.modal-footer
button Ok
.right-pane
// ---------------------------------------------
// Phone type
.input-container
label(for='phone-type') Phone Type
select(v-model='phone' name="phone-type")
option(v-for='phone in phones', :key='phone.value', :label='phone.label', :value='phone.value')
.input-container
label Question Modals
div
input#sign-out(type='radio', value='sign-out', v-model='modalVersion')
label(for="sign-out") Sign Out
div
input#cancel-review(type='radio', value='cancel-review', v-model='modalVersion')
label(for="cancel-review") Cancel Writing Review
div
input#cancel-autoship(type='radio', value='cancel-autoship', v-model='modalVersion')
label(for="cancel-autoship") Cancel Autoship
div
input#delete-address(type='radio', value='delete-address', v-model='modalVersion')
label(for="delete-address") Delete Address
div
input#delete-payment-method(type='radio', value='delete-payment-method', v-model='modalVersion')
label(for="delete-payment-method") Delete Payment Method
.input-container
label Touch ID/Fingerprint
div
input#use-touch-id(type='radio', value='use-touch-id', v-model='modalVersion')
label(for="use-touch-id") Use Touch ID
div
input#enable-touch-id(type='radio', value='enable-touch-id', v-model='modalVersion')
label(for="enable-touch-id") Enable Touch ID
div
input#use-finger-print(type='radio', value='use-finger-print', v-model='modalVersion')
label(for="use-finger-print") Use Fingerprint
div
input#enable-finger-print(type='radio', value='enable-finger-print', v-model='modalVersion')
label(for="enable-finger-print") Enable Fingerprint
div
input#scan-finger-print(type='radio', value='scan-finger-print', v-model='modalVersion')
label(for="scan-finger-print") Scan Fingerprint
div
input#error-finger-print(type='radio', value='error-finger-print', v-model='modalVersion')
label(for="error-finger-print") Scanning Fingerprint Error
// Success Modal Versions
.input-container
label Success Modals
div
input#autoship-ship-now(type='radio', value='autoship-ship-now', v-model='modalVersion')
label(for="autoship-ship-now") Autoship - Ship Now
div
input#frequency-updated(type='radio', value='frequency-updated', v-model='modalVersion')
label(for="frequency-updated") Frequency Updated
div
input#review-submitted(type='radio', value='review-submitted', v-model='modalVersion')
label(for="review-submitted") Review Submitted
div
input#nps-submitted(type='radio', value='nps-submitted', v-model='modalVersion')
label(for="nps-submitted") NPS Submitted
.input-container
label Error Modals
div
input#upload-interupted(type='radio', value='upload-interupted', v-model='modalVersion')
label(for="upload-interupted") Incomplete Image Upload
div
input#no-photo-access(type='radio', value='no-photo-access', v-model='modalVersion')
label(for="no-photo-access") No Photo Access
.input-container
label Misc
div
input#call-chewy(type='radio', value='call-chewy', v-model='modalVersion')
label(for="call-chewy") Call Chewy
div
input#password-reset(type='radio', value='password-reset', v-model='modalVersion')
label(for="password-reset") Reset Password
div
input#order-processing(type='radio', value='order-processing', v-model='modalVersion')
label(for="order-processing") Autoship Order Processing
$color__500: rgba(3,24,41,0.94);
$color__400: rgba(3,24,41,0.84);
$color__300: rgba(3,24,41,0.64);
$color__200: rgba(3,24,41,0.34);
$color__100: rgba(3,24,41,0.24);
$color__50: rgba(3,24,41,0.14);
$color__chewy-blue: #128CED;
$color__price: #D0011B;
$color__green: #4CAF50;
$font__weight--extra-bold: 600;
$font__weight--bold: 500;
$font__weight--light: 300;
$font__size--xxl: 36px;
$font__size--xl: 24px;
$font__size--l: 22px;
$font__size--m: 18px;
$font__size--s: 16px;
$font__size--xs: 13px;
$font__size--xxs: 11px;
$margin--xxl: 64px;
$margin--xl: 48px;
$margin--l: 34px;
$margin--m: 24px;
$margin--s: 16px;
$margin--xs: 8px;
$easeInOutCubic: 0.645, 0.045, 0.355, 1;
@mixin vertical-align($position: relative) {
position: $position;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
@mixin subtle-animation {
-webkit-transition: 0.2s cubic-bezier($easeInOutCubic);
-moz-transition: 0.2s cubic-bezier($easeInOutCubic);
transition: 0.2s cubic-bezier($easeInOutCubic);
}
body {
font-family: 'Roboto', sans-serif;
font-size: $font__size--s;
color: $color__300;
line-height: 24px;
-webkit-text-size-adjust: 100%;
margin: 0;
}
.input-container {
margin-bottom: $margin--s;
}
.device-container {
overflow-y: scroll;
border-radius: 2px;
margin: $margin--m auto 0;
position: relative;
background-color: black;
@include subtle-animation;
@media only screen and (max-width : 414px) {
border-radius: 0;
margin: 0;
}
}
.left-pane {
padding: 24px;
position: relative;
margin-right: 240px;
@media only screen and (max-width : 414px) {
margin-right: 0;
padding: 0;
height: 100vh;
width: 100vw;
}
}
.right-pane {
position: fixed;
width: 200px;
overflow-y: scroll;
background-color: #fcfcfc;
right: 0;
top: 0;
bottom: 0;
padding: 24px;
box-shadow: inset 0.5px 0 0 0 #C3C8CC;
@media only screen and (max-width : 414px) {
display: none;
}
}
@media only screen and (max-width : 414px) {
.device-label {
display: none;
}
}
h1, h2, h3, h4, h5, h6, p {
// margin-top: 0;
margin: 0;
}
h1, h2, h3 {
color: $color__500;
}
h4, h5, h6 {
color: $color__400;
}
h1 {
font-size: $font__size--xxl;
line-height: 40px;
margin-bottom: $margin--s;
font-weight: $font__weight--light;
}
h2 {
font-size: $font__size--xl;
line-height: 32px;
margin-bottom: $margin--s;
font-weight: $font__weight--extra-bold;
}
h3 {
font-size: $font__size--l;
line-height: 24px;
margin-bottom: $margin--xs;
font-weight: $font__weight--bold;
}
h4 {
font-size: $font__size--m;
line-height: 24px;
margin-bottom: $margin--xs;
}
h5 {
font-size: $font__size--s;
line-height: 24px;
margin-bottom: $margin--xs;
}
h6 {
font-size: $font__size--xs;
line-height: 16px;
margin-bottom: $margin--xs;
}
p + p {
margin-top: $margin--s;
}
.text--strong {
font-weight: $font__weight--extra-bold;
color: $color__400;
}
.text--blue {
color: $color__chewy-blue;
}
.text--red {
color: $color__price;
}
.text--muted {
color: $color__200;
}
.text--small {
line-height: 16px;
font-size: $font__size--xs;
}
.text--extra-small {
font-size: $font__size--xxs;
text-transform: uppercase;
}
.text--center {
text-align: center;
}
.text--right {
text-align: right;
}
.text--invert {
color: #fff;
}
.label {
@extend .text--small;
@extend .text--muted;
margin-top: $margin--s;
margin-bottom: $margin--xs;
& + hr {
margin-top: $margin--xs;
}
}
label {
@extend .text--muted;
font-size: $font__size--xs;
display: block;
}
select {
display: block;
width: 100%;
height: 32px;
font-size: $font__size--xs;
}
.modal-container {
@include vertical-align();
background: #FFFFFF;
box-shadow: 0 0 0 0 rgba(3,24,41,0.14), 0 0 0 0 rgba(3,24,41,0.19), 0 1px 2px 0 rgba(3,24,41,0.12), 0 5px 6px 0 rgba(3,24,41,0.16), 0 8px 14px 0 rgba(3,24,41,0.15);
border-radius: 5px;
margin: 0 8px;
.modal-head-container {
padding: 24px;
h2 {
margin-bottom: 4px;
}
}
.modal-footer {
box-shadow: inset 0 1px 0 0 #C3C8CC;
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
box-shadow: inset 0 .5px 0 0 #C3C8CC;
}
button {
border: 0 none;
background-color: transparent;
display: block;
width: 100%;
height: 56px;
font-size: $font__size--s;
&:focus {
outline: none;
}
&.button-left {
display: inline-block;
width: 50%;
float: left;
box-shadow: inset -1px 0 0 0 #C3C8CC;
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
box-shadow: inset -.5px 0 0 0 #C3C8CC;
}
}
&.button-right {
display: inline-block;
width: 50%;
}
}
}
}
button {
color: $color__chewy-blue;
}
.modal-icon--xl {
text-align: center;
display: block;
margin: 0;
height: 96px;
.icon-placeholder {
background-color: black;
display: inline-block;
height: 50px;
width: 50px;
margin: 0;
border-radius: 100%;
}
}
input[type="radio"] {
font-size: $font__size--s;
}
input[type="radio"] + label {
color: black;
display: inline-block;
}
hr {
margin: 16px 0 0;
border: none;
&.thin {
height: 16px;
box-shadow: inset 1px 0 0 0 #C3C8CC;
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
box-shadow: inset 0 .5px 0 0 #C3C8CC;
}
}
}
// Class Changes based off selection
// Phone classes
.iPhone-7-Plus {
.device-container {
width: 414px;
height: 736px;
}
}
.iPhone-7 {
.device-container {
width: 375px;
height: 667px;
}
}
.iPhone-5 {
.device-container {
width: 320px;
height: 568px;
}
}
.iPhone-SE {
.device-container {
width: 320px;
height: 480px;
}
}
.Galaxy-S5 {
.device-container {
width: 360px;
height: 640px;
}
}
.Nexus-5x {
.device-container {
width: 412px;
height: 700px;
}
}
.Nexus-6P {
.device-container {
width: 412px;
height: 732px;
}
}
@media only screen and (max-width : 414px) {
.device-container {
width: 100% !important;
height: 100% !important;
overflow-y: scroll;
}
}
// Modal classes
.modal-success {
.icon-placeholder {
background-color: $color__green;
}
}
.modal-fail {
.icon-placeholder {
background-color: $color__price;
}
}
.icon--xl {
height: 96px;
width: 96px;
display: inline-block;
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-size: 96px 96px;
}
&.icon-checkmark {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/checkmark--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/checkmark--xl%402x.png");
}
}
&.icon-sign-out {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/sign-out--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/sign-out--xl%402x.png");
}
}
&.icon-camera-access {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/camer-access--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/camer-access--xl%402x.png");
}
}
&.icon-chewy-box {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/chewy-box--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/chewy-box--xl@2x.png");
}
}
&.icon-email {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/email--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/email--xl%402x.png");
}
}
&.icon-call-chewy {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/call-chewy--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/call-chewy--xl%402x.png");
}
}
&.icon-cancel-autoship {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/cancel-autoship--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/cancel-autoship--xl@2x.png");
}
}
&.icon-delete-payment {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/delete-payment--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/delete-payment--xl@2x.png");
}
}
&.icon-delete-address {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/delete-address--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/delete-address--xl%402x.png");
}
}
&.icon-alert {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/exclimation--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/exclimation--xl%402x.png");
}
}
&.icon-touch-id {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/touch-id--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/touch-id--xl@2x.png");
}
}
&.icon-finger-print {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/fingerprint--xl.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/fingerprint--xl%402x.png");
}
}
}
.hamburger-menu {
display: none;
position: absolute;
top: 24px;
right: 24px;
height: 32px;
width: 32px;
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/hamburger.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/hamburger%402x.png");
background-size: 32px 32px;
}
}
.product-attribute-container {
.icon-m {
display: inline-block;
margin-right: 8px;
}
p + p {
margin-top: 0;
}
.product-attribute-icon {
display: inline-block;
width: 40px;
float: left;
}
.product-attribute-text {
display: inline-block;
width: calc(100% - 40px);
}
}
.icon--m {
display: inline-block;
height: 32px;
width: 32px;
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-size: 32px 32px;
}
&.icon-rx {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/rx--m.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/rx--m%402x.png");
}
}
&.icon-frozen {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/frozen--l.png");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/450463/frozen--l%402x.png");
}
}
}
new Vue({
el: '#app',
data() {
return {
// Phone Types
phones: [{
value: 'iPhone-7-Plus',
label: 'iPhone 7+'
}, {
value: 'iPhone-7',
label: 'iPhone 7'
}, {
value: 'iPhone-5',
label: 'iPhone 5'
}, {
value: 'iPhone-SE',
label: 'iPhone SE'
}, {
value: 'Galaxy-S5',
label: 'Galaxy S5'
}, {
value: 'Nexus-5x',
label: 'Nexus 5x'
}, {
value: 'Nexus-6P',
label: 'Nexus 6P'
}],
phone: 'iPhone-7',
modalVersion: 'sign-out',
}
}
})
Also see: Tab Triggers