HTML
SCSS
JS
Result
Skip Results Iframe
EDIT ON
Live
Live
Live
This Pen is owned by
Kreig Durham
on
CodePen
.
See more by @kreigd on CodePen
External CSS
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/css/bootstrap.css
External JavaScript
https://code.jquery.com/jquery-1.12.4.min.js
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/js/bootstrap.min.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 *; serial *; xr-spatial-tracking *","iframe_sandbox":"allow-downloads allow-forms allow-modals allow-pointer-lock allow-popups-to-escape-sandbox allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation"},"__graphql":{"data":{"errors":[{"message":"Cannot return null for non-nullable field Query.sessionUser"}],"data":null},"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\":false,\"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\":\"ybYNoN\",\"auto_save\":true},\"hashid\":\"ybYNoN\",\"itemType\":\"pen\",\"resources\":[{\"url\":\"https://code.jquery.com/jquery-1.12.4.min.js\",\"order\":0,\"resource_type\":\"js\",\"par_content\":\"\"},{\"url\":\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/css/bootstrap.css\",\"order\":0,\"resource_type\":\"css\",\"par_content\":\"\"},{\"url\":\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/js/bootstrap.min.js\",\"order\":1,\"resource_type\":\"js\",\"par_content\":\"\"}],\"tags\":[\"bootstrap\",\"carousel\",\"multi-item\",\"card\",\"one\"],\"id\":14378532,\"user_id\":743009,\"html\":\"<div class=\\\"container-fluid\\\">\\n <h1 class=\\\"text-center mb-3\\\">Bootstrap Multi-Card Carousel</h1>\\n <div id=\\\"myCarousel\\\" class=\\\"carousel slide\\\" data-ride=\\\"carousel\\\">\\n <div class=\\\"carousel-inner row w-100 mx-auto\\\">\\n <div class=\\\"carousel-item col-md-4 active\\\">\\n <div class=\\\"card\\\">\\n \\n </div>\\n </div>\\n </div>\\n <div class=\\\"carousel-item col-md-4\\\">\\n <div class=\\\"card\\\">\\n <img class=\\\"card-img-top img-fluid\\\" src=\\\"https://picsum.photos/seed/2/800/600\\\" alt=\\\"Card image cap\\\">\\n <div class=\\\"card-body\\\">\\n <h4 class=\\\"card-title\\\">Card 2</h4>\\n <p class=\\\"card-text\\\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>\\n <p class=\\\"card-text\\\"><small class=\\\"text-muted\\\">Last updated 3 mins ago</small></p>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"carousel-item col-md-4\\\">\\n <div class=\\\"card\\\">\\n <img class=\\\"card-img-top img-fluid\\\" src=\\\"https://picsum.photos/seed/3/800/600\\\" alt=\\\"Card image cap\\\">\\n <div class=\\\"card-body\\\">\\n <h4 class=\\\"card-title\\\">Card 3</h4>\\n <p class=\\\"card-text\\\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>\\n <p class=\\\"card-text\\\"><small class=\\\"text-muted\\\">Last updated 3 mins ago</small></p>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"carousel-item col-md-4\\\">\\n <div class=\\\"card\\\">\\n <img class=\\\"card-img-top img-fluid\\\" src=\\\"https://picsum.photos/seed/4/800/600\\\" alt=\\\"Card image cap\\\">\\n <div class=\\\"card-body\\\">\\n <h4 class=\\\"card-title\\\">Card 4</h4>\\n <p class=\\\"card-text\\\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>\\n <p class=\\\"card-text\\\"><small class=\\\"text-muted\\\">Last updated 3 mins ago</small></p>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"carousel-item col-md-4\\\">\\n <div class=\\\"card\\\">\\n <img class=\\\"card-img-top img-fluid\\\" src=\\\"https://picsum.photos/seed/5/800/600\\\" alt=\\\"Card image cap\\\">\\n <div class=\\\"card-body\\\">\\n <h4 class=\\\"card-title\\\">Card 5</h4>\\n <p class=\\\"card-text\\\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>\\n <p class=\\\"card-text\\\"><small class=\\\"text-muted\\\">Last updated 3 mins ago</small></p>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"carousel-item col-md-4\\\">\\n <div class=\\\"card\\\">\\n <img class=\\\"card-img-top img-fluid\\\" src=\\\"https://picsum.photos/seed/6/800/600\\\" alt=\\\"Card image cap\\\">\\n <div class=\\\"card-body\\\">\\n <h4 class=\\\"card-title\\\">Card 6</h4>\\n <p class=\\\"card-text\\\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>\\n <p class=\\\"card-text\\\"><small class=\\\"text-muted\\\">Last updated 3 mins ago</small></p>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"carousel-item col-md-4\\\">\\n <div class=\\\"card\\\">\\n <img class=\\\"card-img-top img-fluid\\\" src=\\\"https://picsum.photos/seed/7/800/600\\\" alt=\\\"Card image cap\\\">\\n <div class=\\\"card-body\\\">\\n <h4 class=\\\"card-title\\\">Card 7</h4>\\n <p class=\\\"card-text\\\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>\\n <p class=\\\"card-text\\\"><small class=\\\"text-muted\\\">Last updated 3 mins ago</small></p>\\n </div>\\n </div>\\n </div>\\n </div>\\n <a class=\\\"carousel-control-prev\\\" href=\\\"#myCarousel\\\" role=\\\"button\\\" data-slide=\\\"prev\\\">\\n <span class=\\\"carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"></span>\\n <span class=\\\"sr-only\\\">Previous</span>\\n </a>\\n <a class=\\\"carousel-control-next\\\" href=\\\"#myCarousel\\\" role=\\\"button\\\" data-slide=\\\"next\\\">\\n <span class=\\\"carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"></span>\\n <span class=\\\"sr-only\\\">Next</span>\\n </a>\\n </div>\\n</div>\\n\",\"css\":\"@media (min-width: 768px) {\\n /* show 3 items */\\n .carousel-inner .active,\\n .carousel-inner .active + .carousel-item,\\n .carousel-inner .active + .carousel-item + .carousel-item {\\n display: block;\\n }\\n\\n .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left),\\n .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left) + .carousel-item,\\n .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left) + .carousel-item + .carousel-item {\\n transition: none;\\n }\\n\\n .carousel-inner .carousel-item-next,\\n .carousel-inner .carousel-item-prev {\\n position: relative;\\n transform: translate3d(0, 0, 0);\\n }\\n\\n .carousel-inner .active.carousel-item + .carousel-item + .carousel-item + .carousel-item {\\n position: absolute;\\n top: 0;\\n right: -33.3333%;\\n z-index: -1;\\n display: block;\\n visibility: visible;\\n }\\n\\n /* left or forward direction */\\n .active.carousel-item-left + .carousel-item-next.carousel-item-left,\\n .carousel-item-next.carousel-item-left + .carousel-item,\\n .carousel-item-next.carousel-item-left + .carousel-item + .carousel-item,\\n .carousel-item-next.carousel-item-left + .carousel-item + .carousel-item + .carousel-item {\\n position: relative;\\n transform: translate3d(-100%, 0, 0);\\n visibility: visible;\\n }\\n\\n /* farthest right hidden item must be abso position for animations */\\n .carousel-inner .carousel-item-prev.carousel-item-right {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: -1;\\n display: block;\\n visibility: visible;\\n }\\n\\n /* right or prev direction */\\n .active.carousel-item-right + .carousel-item-prev.carousel-item-right,\\n .carousel-item-prev.carousel-item-right + .carousel-item,\\n .carousel-item-prev.carousel-item-right + .carousel-item + .carousel-item,\\n .carousel-item-prev.carousel-item-right + .carousel-item + .carousel-item + .carousel-item {\\n position: relative;\\n transform: translate3d(100%, 0, 0);\\n visibility: visible;\\n display: block;\\n visibility: visible;\\n }\\n}\\n\",\"js\":\"$(document).ready(function() {\\n $(\\\"#myCarousel\\\").on(\\\"slide.bs.carousel\\\", function(e) {\\n var $e = $(e.relatedTarget);\\n var idx = $e.index();\\n var itemsPerSlide = 3;\\n var totalItems = $(\\\".carousel-item\\\").length;\\n\\n if (idx >= totalItems - (itemsPerSlide - 1)) {\\n var it = itemsPerSlide - (totalItems - idx);\\n for (var i = 0; i < it; i++) {\\n // append slides to end\\n if (e.direction == \\\"left\\\") {\\n $(\\\".carousel-item\\\")\\n .eq(i)\\n .appendTo(\\\".carousel-inner\\\");\\n } else {\\n $(\\\".carousel-item\\\")\\n .eq(0)\\n .appendTo($(this).find(\\\".carousel-inner\\\"));\\n }\\n }\\n }\\n });\\n});\\n\",\"html_pre_processor\":\"none\",\"css_pre_processor\":\"scss\",\"js_pre_processor\":\"none\",\"html_classes\":\"\",\"css_starter\":\"neither\",\"js_library\":null,\"created_at\":\"2017-04-17T20:57:17.000Z\",\"updated_at\":\"2024-06-02T09:32:44.285Z\",\"title\":\"Scrolling Bootstrap Card Carousel\",\"description\":\"Advance one item at a time, changes to one card per slide on mobile\",\"slug_hash\":\"ybYNoN\",\"head\":\"\",\"private\":false,\"has_animation\":false,\"team_id\":0,\"css_prefix\":\"autoprefixer\",\"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\":\"015b7db4-8fc8-749e-bb19-7a15d879a329\",\"is_new_editor_pen\":false,\"protected\":false,\"access\":\"Public\",\"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-a869f8a6d2782490df0d.js"}