{"id":25801,"date":"2025-01-23T11:46:22","date_gmt":"2025-01-23T02:46:22","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25801"},"modified":"2025-01-24T04:03:26","modified_gmt":"2025-01-23T19:03:26","slug":"mycarousel","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25801","title":{"rendered":"MyCarousel"},"content":{"rendered":"\n<p>index.html<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"ja\">\n\n&lt;head>\n    &lt;meta charset=\"UTF-8\">\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    &lt;title>My Carousel&lt;\/title>\n    &lt;link rel=\"stylesheet\" href=\"css\/style.css\">\n&lt;\/head>\n\n&lt;body>\n    &lt;section class=\"carousel\">\n        &lt;div class=\"container\">\n            &lt;ul>\n                &lt;li>&lt;img src=\"img\/pic1.png\">&lt;\/li>\n                &lt;li>&lt;img src=\"img\/pic2.png\">&lt;\/li>\n                &lt;li>&lt;img src=\"img\/pic3.png\">&lt;\/li>\n                &lt;li>&lt;img src=\"img\/pic4.png\">&lt;\/li>\n            &lt;\/ul>\n\n            &lt;button id=\"prev\">&amp;laquo;&lt;\/button>\n            &lt;button id=\"next\">&amp;raquo;&lt;\/button>\n        &lt;\/div>\n\n        &lt;nav>\n        &lt;\/nav>\n    &lt;\/section>\n\n    &lt;script src=\"js\/main.js\">&lt;\/script>\n&lt;\/body>\n\n&lt;\/html><\/code><\/pre>\n\n\n\n<p>js\/main.js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'use strict';\n\n{\n    const next = document.getElementById('next');\n    const prev = document.getElementById('prev');\n    const ul = document.querySelector('ul');\n    const slides = ul.children;\n    const dots = &#91;];\n    let currentIndex = 0;\n\n    function updateButtons() {\n        prev.classList.remove('hidden');\n        next.classList.remove('hidden');\n\n        if (currentIndex === 0) {\n            prev.classList.add('hidden');\n        }\n        if (currentIndex === slides.length - 1) {\n            next.classList.add('hidden');\n        }\n    }\n\n    function moveSlides() {\n        const slideWidth = slides&#91;0].getBoundingClientRect().width;\n        ul.style.transform = `translateX(${-1 * slideWidth * currentIndex}px)`;\n    }\n\n    function setupDots() {\n        for (let i = 0; i &lt; slides.length; i++) {\n            const button = document.createElement('button');\n            button.addEventListener('click', () => {\n                currentIndex = i;\n                updateDots();\n                updateButtons();\n                moveSlides();\n            });\n            dots.push(button);\n            document.querySelector('nav').appendChild(button);\n        }\n\n        dots&#91;0].classList.add('current');\n    }\n\n    function updateDots() {\n        dots.forEach(dot => {\n            dot.classList.remove('current');\n        });\n        dots&#91;currentIndex].classList.add('current');\n    }\n\n    updateButtons();\n    setupDots();\n\n    next.addEventListener('click', () => {\n        currentIndex++;\n        updateButtons();\n        updateDots();\n        moveSlides();\n    });\n\n    prev.addEventListener('click', () => {\n        currentIndex--;\n        updateButtons();\n        updateDots();\n        moveSlides();\n    });\n\n    window.addEventListener('resize', () => {\n        moveSlides();\n    });\n}<\/code><\/pre>\n\n\n\n<p>css\/style.css<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.carousel {\n    width: 80%;\n    margin: 16px auto;\n}\n\n.container {\n    width: 100%;\n    height: 220px;\n    overflow: hidden;\n    position: relative;\n}\n\nul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n    height: 100%;\n    display: flex;\n    transition: transform .3s;\n}\n\nli {\n    height: 100%;\n    min-width: 100%;\n}\n\nli img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n}\n\n#prev,\n#next {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    border: none;\n    background: rgba(0, 0, 0, .8);\n    color: #fff;\n    font-size: 24px;\n    padding: 0 8px 4px;\n    cursor: pointer;\n}\n\n#prev:hover,\n#next:hover {\n    opacity: .8;\n}\n\n#prev {\n    left: 0;\n}\n\n#next {\n    right: 0;\n}\n\n.hidden {\n    display: none;\n}\n\nnav {\n    margin-top: 16px;\n    text-align: center;\n}\n\nnav button+button {\n    margin-left: 8px;\n}\n\nnav button {\n    border: none;\n    width: 16px;\n    height: 16px;\n    background: #ddd;\n    border-radius: 50%;\n    cursor: pointer;\n}\n\nnav .current {\n    background: #999;\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>index.html js\/main.js css\/style.css<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[81,80,78,4,6],"tags":[3],"class_list":["post-25801","post","type-post","status-publish","format-standard","hentry","category-css","category-html","category-javascript","category-programming","category-web","tag-programming"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25801"}],"version-history":[{"count":3,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25801\/revisions"}],"predecessor-version":[{"id":25808,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25801\/revisions\/25808"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25801"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}