几乎所有的标题.我试图使这些圆形按钮水平滚动.我还想提供某种反馈给用户,是否有更多的滚动到任何方向,所以我试图通过覆盖来做到这一点.到目前为止,覆盖似乎是移动时滚动,我希望它坚持到侧面的圆形按钮.

下面是我试过的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Scrollable Circular Buttons</title>
    <style>
        /* Custom styles */
        .scrollable-div {
            position: relative;
            width: 50%;
            overflow-x: auto;
            white-space: nowrap;
            padding: 10px 0; 
            margin-bottom: 20px;
            /* Hide the scrollbar */
            scrollbar-width: none;
        }
        .scrollable-div::-webkit-scrollbar {
            display: none; /* WebKit (Safari, Chrome) */
        }
        .circular-btn {
            display: inline-block;
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background-color: #007bff; /* Bootstrap primary color */
            color: #fff;
            text-align: center;
            line-height: 40px;
            margin-right: 5px; /* Reduced margin */
            cursor: pointer;
            font-size: 16px;
        }
        .scroll-overlay {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 50px; /* Adjust as needed */
            pointer-events: none; /* Allow clicks to pass through */
        }
        .scroll-overlay-left {
            left: 0;
            background: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent);

        }
        .scroll-overlay-right {
            right: 0;
            background: linear-gradient(to left, rgba(0, 0, 0, 0.5), transparent);

        }
        .selected {
            background-color: #28a745 !important; /* Bootstrap success color */
        }
    </style>
</head>
<body>

    <div class="scrollable-div" id="scrollableDiv">
        <!-- List of circular buttons -->
        <div class="circular-btn selected">1</div>
        <div class="circular-btn">2</div>
        <div class="circular-btn">3</div>
        <div class="circular-btn">4</div>
        <div class="circular-btn">5</div>
        <div class="circular-btn">6</div>
        <div class="circular-btn">7</div>
        <div class="circular-btn">8</div>
        <div class="circular-btn">9</div>
        <div class="circular-btn">10</div>
        <div class="circular-btn">11</div>
        <div class="circular-btn">12</div>
        <div class="circular-btn">13</div>
        <div class="circular-btn">14</div>
        <div class="circular-btn">15</div>
        <div class="circular-btn">16</div>
        <div class="circular-btn">17</div>
        <div class="circular-btn">18</div>
        <div class="circular-btn">19</div>
        <div class="circular-btn">20</div>
        <div class="circular-btn">21</div>
        <div class="circular-btn">22</div>
        <div class="circular-btn">23</div>
        <div class="circular-btn">24</div>
        <div class="circular-btn">25</div>
        <div class="circular-btn">26</div>
        <div class="circular-btn">27</div>
        <div class="circular-btn">28</div>
        <div class="circular-btn">29</div>
        <div class="circular-btn">30</div>
        <!-- Scroll overlays to indicate end of content -->
        <div class="scroll-overlay scroll-overlay-left"></div>
        <div class="scroll-overlay scroll-overlay-right"></div>
    </div>

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            const scrollableDiv = document.getElementById('scrollableDiv');
            const scrollOverlayLeft = document.querySelector('.scroll-overlay-left');
            const scrollOverlayRight = document.querySelector('.scroll-overlay-right');

        // Check scroll status on initial load
            updateOverlayVisibility();

        // Update overlay visibility based on scroll position
            scrollableDiv.addEventListener('scroll', updateOverlayVisibility);

            function updateOverlayVisibility() {
                const scrollPosition = scrollableDiv.scrollLeft;
                const scrollWidth = scrollableDiv.scrollWidth;
                overlayWidth = Math.min((scrollPosition / scrollWidth) * 50 , 50);
                scrollOverlayLeft.style.width = overlayWidth + ' px';
                scrollOverlayRight.style.width = overlayWidth + ' px';
                scrollOverlayLeft.style.display = scrollPosition > 0 ? 'block' : 'none';
                scrollOverlayRight.style.display = scrollPosition < scrollWidth ? 'block' : 'none';

            }

        // JavaScript for circular button selection
            const circularButtons = document.querySelectorAll('.circular-btn');

            circularButtons.forEach(function(btn) {
                btn.addEventListener('click', function() {
                // Remove 'selected' class from all buttons
                    circularButtons.forEach(function(btn) {
                        btn.classList.remove('selected');
                    });
                // Add 'selected' class to the clicked button
                    this.classList.add('selected');
                });
            });
        });
    </script>
</body>
</html>

谢谢!

推荐答案

你需要2个容器div.第一个是不卷的,第二个是不卷的.你的重叠将是绝对的父母之一.这里是JSBIn

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Scrollable Circular Buttons</title>
    <style>
        /* Custom styles */
        .scrollable-div {
            position: relative;
            width: 50%;
            overflow-x: none;
            white-space: nowrap;
            padding: 10px 0; 
            margin-bottom: 20px;
            /* Hide the scrollbar */
            scrollbar-width: none;
        }
      .scrollable-div > div{
        overflow-x: auto;
      }
        .scrollable-div::-webkit-scrollbar {
            display: none; /* WebKit (Safari, Chrome) */
        }
        .circular-btn {
            display: inline-block;
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background-color: #007bff; /* Bootstrap primary color */
            color: #fff;
            text-align: center;
            line-height: 40px;
            margin-right: 5px; /* Reduced margin */
            cursor: pointer;
            font-size: 16px;
        }
        .scroll-overlay {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 50px; /* Adjust as needed */
            pointer-events: none; /* Allow clicks to pass through */
        }
        .scroll-overlay-left {
            left: 0;
            background: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent);

        }
        .scroll-overlay-right {
            right: 0;
            background: linear-gradient(to left, rgba(0, 0, 0, 0.5), transparent);

        }
        .selected {
            background-color: #28a745 !important; /* Bootstrap success color */
        }
    </style>
</head>
<body>

    <div class="scrollable-div" id="scrollableDiv">
      <div>
        <!-- List of circular buttons -->
        <div class="circular-btn selected">1</div>
        <div class="circular-btn">2</div>
        <div class="circular-btn">3</div>
        <div class="circular-btn">4</div>
        <div class="circular-btn">5</div>
        <div class="circular-btn">6</div>
        <div class="circular-btn">7</div>
        <div class="circular-btn">8</div>
        <div class="circular-btn">9</div>
        <div class="circular-btn">10</div>
        <div class="circular-btn">11</div>
        <div class="circular-btn">12</div>
        <div class="circular-btn">13</div>
        <div class="circular-btn">14</div>
        <div class="circular-btn">15</div>
        <div class="circular-btn">16</div>
        <div class="circular-btn">17</div>
        <div class="circular-btn">18</div>
        <div class="circular-btn">19</div>
        <div class="circular-btn">20</div>
        <div class="circular-btn">21</div>
        <div class="circular-btn">22</div>
        <div class="circular-btn">23</div>
        <div class="circular-btn">24</div>
        <div class="circular-btn">25</div>
        <div class="circular-btn">26</div>
        <div class="circular-btn">27</div>
        <div class="circular-btn">28</div>
        <div class="circular-btn">29</div>
        <div class="circular-btn">30</div>
        <!-- Scroll overlays to indicate end of content -->
        <div class="scroll-overlay scroll-overlay-left"></div>
        <div class="scroll-overlay scroll-overlay-right"></div>
        </div>
    </div>

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            const scrollableDiv = document.getElementById('scrollableDiv');
            const scrollOverlayLeft = document.querySelector('.scroll-overlay-left');
            const scrollOverlayRight = document.querySelector('.scroll-overlay-right');

        // Check scroll status on initial load
            updateOverlayVisibility();

        // Update overlay visibility based on scroll position
            scrollableDiv.addEventListener('scroll', updateOverlayVisibility);

            function updateOverlayVisibility() {
                const scrollPosition = scrollableDiv.scrollLeft;
                const scrollWidth = scrollableDiv.scrollWidth;
                overlayWidth = Math.min((scrollPosition / scrollWidth) * 50 , 50);
                scrollOverlayLeft.style.width = overlayWidth + ' px';
                scrollOverlayRight.style.width = overlayWidth + ' px';
                scrollOverlayLeft.style.display = scrollPosition > 0 ? 'block' : 'none';
                scrollOverlayRight.style.display = scrollPosition < scrollWidth ? 'block' : 'none';

            }

        // JavaScript for circular button selection
            const circularButtons = document.querySelectorAll('.circular-btn');

            circularButtons.forEach(function(btn) {
                btn.addEventListener('click', function() {
                // Remove 'selected' class from all buttons
                    circularButtons.forEach(function(btn) {
                        btn.classList.remove('selected');
                    });
                // Add 'selected' class to the clicked button
                    this.classList.add('selected');
                });
            });
        });
    </script>
</body>
</html>

https://jsbin.com/nukonesidu/edit?html,output

Javascript相关问答推荐

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

如何最好地从TypScript中的enum获取值

我可以使用CSS有效地实现最大宽度=100%和最大高度=100%,而无需父母有明确的/固定的宽度和高度,替代方法吗?

被CSS优先级所迷惑

Angular:动画不启动

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

cypress中e2e测试上的Click()事件在Switch Element Plus组件上使用时不起作用

使用JQuery单击元素从新弹出窗口获取值

我正在建立一个基于文本的游戏在react ,我是从JS转换.我怎样才能使变量变呢?

为什么123[';toString';].long返回1?

在浏览器中触发插入事件时检索编码值的能力

如何在Angular拖放组件中同步数组?

查询参数中的JAVASCRIPT/REACT中的括号

Rxjs流中生成IMMER不能在对象上操作

在表单集中保存更改时删除';禁用';

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

为什么这个最小Angular 的Licial.dev设置不起作用?

如何处理不带参数的redux thunk payloadCreator回调函数?

KeyboardEvent:检测到键具有打印的表示形式

在使用JavaScript以HTML格式显示Google Drive中的图像时遇到问题