HTML
CSS
Result
Skip Results Iframe
EDIT ON
Live
Live
This Pen is owned by
web.dev
on
CodePen
.
See more by @web-dot-dev on CodePen
External CSS
https://codepen.io/web-dot-dev/pen/XWqWYgB.css
https://codepen.io/web-dot-dev/pen/ZExZWBQ.css
External JavaScript
https://codepen.io/web-dot-dev/pen/XWqWYgB.js
https://codepen.io/web-dot-dev/pen/ZExZWBQ.js
{"__browser":{"country":"US","device":"unknown_device","mobile":false,"name":"unknown browser","platform":"unknown_platform","version":"0"},"__constants":{},"__CPDATA":{"domain_iframe":"https://cdpn.io","environment":"production","host":"codepen.io","iframe_allow":"accelerometer; ambient-light-sensor; camera; display-capture; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr; web-share","iframe_sandbox":"allow-forms allow-modals allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-top-navigation-by-user-activation allow-downloads allow-presentation"},"__graphql":{"data":{"data":null,"errors":[{"message":"Cannot return null for non-nullable field Query.sessionUser"}]},"url":"https://codepen.io/graphql","api":"cprails"},"__pay_stripe_public_key":"pk_live_2GndomDfiklqpSNQn8FrGuwZSMIMzha7DkLJqlYe7IR0ihKAlKdiHg68JJc5eVPt68rzAjzAAVXcUwjySHRCsgjQQ00gtRBUFNH","__pay_braintree_env":"production","__boomboom":{"serve_url":"https://cdpn.io/cpe/boomboom","store_url":"https://codepen.io/cpe/boomboom/store"},"__pageType":"embed","__item":"{\"editor_settings\":{\"auto_run\":true,\"autocomplete\":false,\"code_folding\":true,\"css_pre_processor\":\"none\",\"css_prefix\":\"neither\",\"css_starter\":\"neither\",\"emmet_active\":true,\"font_size\":14,\"font_type\":\"system\",\"format_on_save\":true,\"html_pre_processor\":\"none\",\"indent_with\":\"spaces\",\"js_pre_processor\":\"none\",\"key_bindings\":\"normal\",\"line_numbers\":true,\"line_wrapping\":true,\"match_brackets\":true,\"snippets\":{\"markupSnippets\":{},\"stylesheetSnippets\":{}},\"tab_size\":2,\"theme\":\"twilight\",\"id\":\"XWEQjRL\",\"auto_save\":true},\"hashid\":\"XWEQjRL\",\"itemType\":\"pen\",\"resources\":[{\"url\":\"https://codepen.io/web-dot-dev/pen/XWqWYgB.css\",\"order\":0,\"resource_type\":\"css\",\"par_content\":\"\"},{\"url\":\"https://codepen.io/web-dot-dev/pen/XWqWYgB.js\",\"order\":0,\"resource_type\":\"js\",\"par_content\":\"\"},{\"url\":\"https://codepen.io/web-dot-dev/pen/ZExZWBQ.css\",\"order\":1,\"resource_type\":\"css\",\"par_content\":\"\"},{\"url\":\"https://codepen.io/web-dot-dev/pen/ZExZWBQ.js\",\"order\":1,\"resource_type\":\"js\",\"par_content\":\"\"}],\"tags\":[],\"id\":62719204,\"user_id\":5928893,\"html\":\"<main>\\n <button class=\\\"blue button fill elevated\\\" popovershowtarget=\\\"blue-one\\\">\\n Take Blue Candy\\n </button>\\n <div id=\\\"blue-one\\\" class=\\\"blue\\\" popover>\\n <div class=\\\"card elevated\\\">\\n <svg class=\\\"sweet\\\" width=\\\"80\\\" role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" aria-labelledby=\\\"sweetTitle\\\">\\n <title id=\\\"sweetTitle\\\">Sweet in twist wrapper</title>\\n <path fill=\\\"currentColor\\\" d=\\\"M15.54 8.46c1.96 1.96 1.96 5.12 0 7.08s-5.12 1.96-7.07 0-1.97-5.12 0-7.08 5.11-1.96 7.07 0m3.93-3.91s-.97.12-2.04.81a5.243 5.243 0 0 0-1.5-2.94 4.027 4.027 0 0 0-1.1 3.92c1.39.36 2.47 1.44 2.83 2.83 1.12.3 2.68.15 3.92-1.1a5.247 5.247 0 0 0-2.9-1.49c.39-.58.7-1.25.79-2.03M4.53 19.45s.97-.12 2.04-.81c.15 1.04.65 2.09 1.5 2.94 1.25-1.24 1.4-2.8 1.1-3.92a3.939 3.939 0 0 1-2.83-2.83c-1.12-.3-2.68-.15-3.92 1.1.84.84 1.87 1.34 2.9 1.49-.39.58-.7 1.26-.79 2.03Z\\\" />\\n </svg>\\n <button popovershowtarget=\\\"red-one\\\" class=\\\"button ripple\\\">\\n Take first red candy\\n </button>\\n <button popovershowtarget=\\\"blue-two\\\" class=\\\"button ripple\\\">\\n Take another blue candy\\n </button>\\n <button popoverhidetarget=\\\"blue-one\\\" class=\\\"button ripple\\\">\\n Put this candy back\\n </button>\\n <button popoverhidetarget=\\\"blue-one\\\" class=\\\"button ripple\\\">\\n Put back blue candies\\n </button>\\n </div>\\n </div>\\n <div id=\\\"blue-two\\\" class=\\\"blue\\\" popover>\\n <div class=\\\"card elevated\\\">\\n <svg class=\\\"sweet\\\" width=\\\"80\\\" role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" aria-labelledby=\\\"sweetTitle\\\">\\n <title id=\\\"sweetTitle\\\">Sweet in twist wrapper</title>\\n <path fill=\\\"currentColor\\\" d=\\\"M15.54 8.46c1.96 1.96 1.96 5.12 0 7.08s-5.12 1.96-7.07 0-1.97-5.12 0-7.08 5.11-1.96 7.07 0m3.93-3.91s-.97.12-2.04.81a5.243 5.243 0 0 0-1.5-2.94 4.027 4.027 0 0 0-1.1 3.92c1.39.36 2.47 1.44 2.83 2.83 1.12.3 2.68.15 3.92-1.1a5.247 5.247 0 0 0-2.9-1.49c.39-.58.7-1.25.79-2.03M4.53 19.45s.97-.12 2.04-.81c.15 1.04.65 2.09 1.5 2.94 1.25-1.24 1.4-2.8 1.1-3.92a3.939 3.939 0 0 1-2.83-2.83c-1.12-.3-2.68-.15-3.92 1.1.84.84 1.87 1.34 2.9 1.49-.39.58-.7 1.26-.79 2.03Z\\\" />\\n </svg>\\n <button popovershowtarget=\\\"red-one\\\" class=\\\"button ripple\\\">\\n Take first red candy\\n </button>\\n <button popovershowtarget=\\\"blue-three\\\" class=\\\"button ripple\\\">\\n Take another blue candy\\n </button>\\n <button popoverhidetarget=\\\"blue-two\\\" class=\\\"button ripple\\\">\\n Put this candy back\\n </button>\\n <button popoverhidetarget=\\\"blue-one\\\" class=\\\"button ripple\\\">\\n Put back blue candies\\n </button>\\n </div>\\n </div>\\n <div id=\\\"blue-three\\\" class=\\\"blue\\\" popover>\\n <div class=\\\"card elevated\\\">\\n <svg class=\\\"sweet\\\" width=\\\"80\\\" role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" aria-labelledby=\\\"sweetTitle\\\">\\n <title id=\\\"sweetTitle\\\">Sweet in twist wrapper</title>\\n <path fill=\\\"currentColor\\\" d=\\\"M15.54 8.46c1.96 1.96 1.96 5.12 0 7.08s-5.12 1.96-7.07 0-1.97-5.12 0-7.08 5.11-1.96 7.07 0m3.93-3.91s-.97.12-2.04.81a5.243 5.243 0 0 0-1.5-2.94 4.027 4.027 0 0 0-1.1 3.92c1.39.36 2.47 1.44 2.83 2.83 1.12.3 2.68.15 3.92-1.1a5.247 5.247 0 0 0-2.9-1.49c.39-.58.7-1.25.79-2.03M4.53 19.45s.97-.12 2.04-.81c.15 1.04.65 2.09 1.5 2.94 1.25-1.24 1.4-2.8 1.1-3.92a3.939 3.939 0 0 1-2.83-2.83c-1.12-.3-2.68-.15-3.92 1.1.84.84 1.87 1.34 2.9 1.49-.39.58-.7 1.26-.79 2.03Z\\\" />\\n </svg>\\n <button popovershowtarget=\\\"red-one\\\" class=\\\"button ripple\\\">\\n Take first red candy\\n </button>\\n <button class=\\\"button ripple\\\" disabled>\\n Take another blue candy\\n </button>\\n <button popoverhidetarget=\\\"blue-three\\\" class=\\\"button ripple\\\">\\n Put this candy back\\n </button>\\n <button popoverhidetarget=\\\"blue-one\\\" class=\\\"button ripple\\\">\\n Put back blue candies\\n </button>\\n </div>\\n </div>\\n <button class=\\\"red button fill elevated\\\" popovershowtarget=\\\"red-one\\\">\\n Take Red Candy\\n </button>\\n <div id=\\\"red-one\\\" class=\\\"red\\\" popover>\\n <div class=\\\"card elevated\\\">\\n <svg class=\\\"sweet\\\" width=\\\"80\\\" role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" aria-labelledby=\\\"sweetTitle\\\">\\n <title id=\\\"sweetTitle\\\">Sweet in twist wrapper</title>\\n <path fill=\\\"currentColor\\\" d=\\\"M15.54 8.46c1.96 1.96 1.96 5.12 0 7.08s-5.12 1.96-7.07 0-1.97-5.12 0-7.08 5.11-1.96 7.07 0m3.93-3.91s-.97.12-2.04.81a5.243 5.243 0 0 0-1.5-2.94 4.027 4.027 0 0 0-1.1 3.92c1.39.36 2.47 1.44 2.83 2.83 1.12.3 2.68.15 3.92-1.1a5.247 5.247 0 0 0-2.9-1.49c.39-.58.7-1.25.79-2.03M4.53 19.45s.97-.12 2.04-.81c.15 1.04.65 2.09 1.5 2.94 1.25-1.24 1.4-2.8 1.1-3.92a3.939 3.939 0 0 1-2.83-2.83c-1.12-.3-2.68-.15-3.92 1.1.84.84 1.87 1.34 2.9 1.49-.39.58-.7 1.26-.79 2.03Z\\\" />\\n </svg>\\n <button popovershowtarget=\\\"blue-one\\\" class=\\\"button ripple\\\">\\n Take first blue candy\\n </button>\\n <button popovershowtarget=\\\"red-two\\\" class=\\\"button ripple\\\">\\n Take another red candy\\n </button>\\n <button popoverhidetarget=\\\"red-one\\\" class=\\\"button ripple\\\">\\n Put this candy back\\n </button>\\n <button popoverhidetarget=\\\"red-one\\\" class=\\\"button ripple\\\">\\n Put back red candies\\n </button>\\n </div>\\n </div>\\n <div id=\\\"red-two\\\" class=\\\"red\\\" popover>\\n <div class=\\\"card elevated\\\">\\n <svg class=\\\"sweet\\\" width=\\\"80\\\" role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" aria-labelledby=\\\"sweetTitle\\\">\\n <title id=\\\"sweetTitle\\\">Sweet in twist wrapper</title>\\n <path fill=\\\"currentColor\\\" d=\\\"M15.54 8.46c1.96 1.96 1.96 5.12 0 7.08s-5.12 1.96-7.07 0-1.97-5.12 0-7.08 5.11-1.96 7.07 0m3.93-3.91s-.97.12-2.04.81a5.243 5.243 0 0 0-1.5-2.94 4.027 4.027 0 0 0-1.1 3.92c1.39.36 2.47 1.44 2.83 2.83 1.12.3 2.68.15 3.92-1.1a5.247 5.247 0 0 0-2.9-1.49c.39-.58.7-1.25.79-2.03M4.53 19.45s.97-.12 2.04-.81c.15 1.04.65 2.09 1.5 2.94 1.25-1.24 1.4-2.8 1.1-3.92a3.939 3.939 0 0 1-2.83-2.83c-1.12-.3-2.68-.15-3.92 1.1.84.84 1.87 1.34 2.9 1.49-.39.58-.7 1.26-.79 2.03Z\\\" />\\n </svg>\\n <button popovershowtarget=\\\"blue-one\\\" class=\\\"button ripple\\\">\\n Take first blue candy\\n </button>\\n <button popovershowtarget=\\\"red-three\\\" class=\\\"button ripple\\\">\\n Take another red candy\\n </button>\\n <button popoverhidetarget=\\\"red-two\\\" class=\\\"button ripple\\\">\\n Put this candy back\\n </button>\\n <button popoverhidetarget=\\\"red-one\\\" class=\\\"button ripple\\\">\\n Put back red candies\\n </button>\\n </div>\\n </div>\\n <div id=\\\"red-three\\\" class=\\\"red\\\" popover>\\n <div class=\\\"card elevated\\\">\\n <svg class=\\\"sweet\\\" width=\\\"80\\\" role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" aria-labelledby=\\\"sweetTitle\\\">\\n <title id=\\\"sweetTitle\\\">Sweet in twist wrapper</title>\\n <path fill=\\\"currentColor\\\" d=\\\"M15.54 8.46c1.96 1.96 1.96 5.12 0 7.08s-5.12 1.96-7.07 0-1.97-5.12 0-7.08 5.11-1.96 7.07 0m3.93-3.91s-.97.12-2.04.81a5.243 5.243 0 0 0-1.5-2.94 4.027 4.027 0 0 0-1.1 3.92c1.39.36 2.47 1.44 2.83 2.83 1.12.3 2.68.15 3.92-1.1a5.247 5.247 0 0 0-2.9-1.49c.39-.58.7-1.25.79-2.03M4.53 19.45s.97-.12 2.04-.81c.15 1.04.65 2.09 1.5 2.94 1.25-1.24 1.4-2.8 1.1-3.92a3.939 3.939 0 0 1-2.83-2.83c-1.12-.3-2.68-.15-3.92 1.1.84.84 1.87 1.34 2.9 1.49-.39.58-.7 1.26-.79 2.03Z\\\" />\\n </svg>\\n <button popovershowtarget=\\\"blue-one\\\" class=\\\"button ripple\\\">\\n Take first blue candy\\n </button>\\n <button class=\\\"button ripple\\\" disabled>Take another red candy</button>\\n <button popoverhidetarget=\\\"red-three\\\" class=\\\"button ripple\\\">\\n Put this candy back\\n </button>\\n <button popoverhidetarget=\\\"red-one\\\" class=\\\"button ripple\\\">\\n Put back red candies\\n </button>\\n </div>\\n </div>\\n</main>\",\"css\":\"@layer normalize, open-props, base, mdl, demo;\\n\\n@layer demo {\\n [popover] {\\n padding: var(--size-4);\\n }\\n [popover] {\\n transform: translate(-50%, -50%) translateX(calc(var(--offset-x, 0) * 50%))\\n translate(calc(var(--x, 0) * 2vmin), calc(var(--y, 0) * 2vmin))\\n translateX(calc(var(--slide-x, 0) * -10%));\\n position: fixed;\\n top: 50%;\\n left: 50%;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n background: none;\\n overflow: visible;\\n }\\n\\n @media (prefers-reduced-motion: no-preference) {\\n .red[popover]:has(~ .red[popover]:open),\\n .blue[popover]:has(~ .blue[popover]:open) {\\n transition: transform 0.2s;\\n }\\n }\\n\\n .card > * + * {\\n margin-top: var(--size-2);\\n }\\n\\n .blue {\\n --offset-x: -1;\\n }\\n\\n .red {\\n --offset-x: 1;\\n }\\n\\n #blue-two,\\n #red-two {\\n --x: 1;\\n --y: -1;\\n }\\n\\n #blue-three,\\n #red-three {\\n --x: 2;\\n --y: -2;\\n }\\n\\n [popover]::backdrop {\\n background: hsl(0 10% 10%/ 0.35);\\n opacity: 0;\\n transition: all 250ms;\\n backdrop-filter: blur(2px);\\n }\\n\\n .red[popover]:has(~ .red[popover]:open):hover,\\n .blue[popover]:has(~ .blue[popover]:open):hover {\\n --slide-x: 1;\\n }\\n\\n .blue.button {\\n background: var(--blue-4);\\n color: var(--gray-0);\\n }\\n\\n .red.button {\\n background: var(--red-4);\\n color: var(--gray-0);\\n }\\n\\n .blue svg {\\n color: var(--blue-4);\\n }\\n\\n .red svg {\\n color: var(--red-4);\\n }\\n\\n main {\\n display: flex;\\n gap: var(--size-4);\\n }\\n\\n .card.elevated {\\n justify-content: center;\\n align-items: center;\\n flex-direction: column;\\n box-shadow: var(--shadow-5);\\n min-width: auto;\\n padding: var(--size-4);\\n background: var(--gray-0);\\n }\\n\\n .card .button {\\n width: 100%;\\n }\\n}\\n\\n@layer base {\\n *,\\n *:after,\\n *:before {\\n box-sizing: border-box;\\n }\\n\\n body {\\n display: grid;\\n place-items: center;\\n min-height: 100vh;\\n font-family: \\\"Google Sans\\\", sans-serif, system-ui;\\n align-content: center;\\n overflow: auto;\\n }\\n\\n :where([popover]) {\\n margin: auto;\\n border-width: initial;\\n border-style: solid;\\n }\\n}\\n\",\"js\":\"\",\"html_pre_processor\":\"none\",\"css_pre_processor\":\"none\",\"js_pre_processor\":\"none\",\"html_classes\":\"popup-support\",\"css_starter\":\"neither\",\"js_library\":null,\"created_at\":\"2022-08-23T19:36:00.105Z\",\"updated_at\":\"2022-11-04T11:40:06.170Z\",\"title\":\"8. popup=auto candy\",\"description\":\"\",\"slug_hash\":\"XWEQjRL\",\"head\":\"\",\"private\":false,\"has_animation\":false,\"team_id\":0,\"css_prefix\":\"neither\",\"template\":false,\"parent_id\":0,\"comments_count\":0,\"custom_screenshot_filename\":null,\"loves_count\":0,\"pick\":false,\"popularity_score\":0,\"views_count\":0,\"pick_visible_at\":null,\"cpid\":\"0182cc34-5d69-7c8d-a45e-83b2ce08113f\",\"is_new_editor_pen\":false,\"pen_hash\":null}","__processorsMap":{"autoprefixer":"autoprefixer-10","babel":"babel-7","coffeescript":"coffeescript-2","format-1":"format-1","flutter":"flutter-1","haml":"haml-4","less":"less-3","lint-1":"lint-1","livescript":"livescript-1","markdown":"markdown-11","postcss":"postcss-7","pug":"pug-2","sass":"sass-1","scss":"sass-1","sass-ruby-3":"sass-ruby-3","sass-ruby-compass-3":"sass-ruby-compass-3","slim":"slim-3","stylus":"stylus-0","typescript":"typescript-4","vue":"vue-2","vue3":"vue-3"},"__favicon_mask_icon":"https://cpwebassets.codepen.io/assets/favicon/logo-pin-b4b4269c16397ad2f0f7a01bcdf513a1994f4c94b8af2f191c09eb0d601762b1.svg","__favicon_shortcut_icon":"https://cpwebassets.codepen.io/assets/favicon/favicon-aec34940fbc1a6e787974dcd360f2c6b63348d4b1f4e06c77743096d55480f33.ico","__path_to_iframe_console_runner":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeConsoleRunner-6d8bf8b4b479137260842506acbb12717dace0823c023e08b96360e60b0840d9.js","__path_to_iframe_refresh_css":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeRefreshCSS-44fe83e49b63affec96918c9af88c0d80b209a862cf87ac46bc933074b8c557d.js","__path_to_iframe_runtime_errors":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeRuntimeErrors-4f205f2c14e769b448bcf477de2938c681660d5038bc464e3700256713ebe261.js","__path_to_processor_worker":"https://cpwebassets.codepen.io/assets/packs/router.js","__path_to_stop_execution_on_timeout":"https://cpwebassets.codepen.io/assets/common/stopExecutionOnTimeout-2c7831bb44f98c1391d6a4ffda0e1fd302503391ca806e7fcc7b9b87197aec26.js","__pen_normalize_css_url":"https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css","__pen_prefix_free_url":"https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js","__pen_reset_css_url":"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css","__path_to_infinite_loop_detection":"https://cpwebassets.codepen.io/assets/packs/js/infiniteLoopDetection-f0d5935eb4c2121dfc41.js"}