Угловая кнопка исчезает на прокручиваемых страницах

Кнопка расположена в самом нижнем левом углу, и когда я перехожу на страницу моего сайта с оглавлением (слева), кнопка визуально исчезает, но все еще работает. Кнопка по сути просто меняет цвет части текста на моем сайте.

.

как вы можете видеть, значок не отображается, мое оглавление длинное и позволяет прокручивать левую часть страницы.

вот часть моего кода:

HTML:

    <button class = "bottom-left-btn star-button"><i class = "far fa-star"></i></button>

CSS:

.bottom-left-btn {
  bottom: 5px;
  left: 5px;
  background-color: transparent;
  color: var(--clr-text);
  font-size: 16px;
  border: none;
  cursor: pointer;
  z-index: 10000;
  display: block;
  position: fixed;
}

.toc {
  padding-left: 10%;
  z-index: 1; /* Ensure TOC has a lower z-index */
  position: relative; /* Ensure positioning context */
  ul {
    margin-bottom: 0; /* Remove bottom margin from nested sublists */
  }
}

ЯС:

document.addEventListener("DOMContentLoaded", function () {
    const starButtons = document.querySelectorAll('button.star-button');

    // Initialize jscolor picker
    let picker = null;

    jscolor.presets.default = {
        width: 200,
        position: 'right',
        backgroundColor: '#333',
        controlBorderColor: '#FFF',
        shadow: true,
        borderRadius: 6,
        borderWidth: 1,
        borderColor: '#444',
        previewElement: null,
        palette: [
            '#7092be', '#4040bf', '#ab548a', '#bf404c', '#b5a940', '#3fa687'
        ],
    };

    // Get the saved color from localStorage or set a default lightness
    const savedColor = localStorage.getItem('selectedColor');
    const cssHsl = getCssHsl('--clr-a-text');
    const initialHsl = savedColor ? JSON.parse(savedColor) : { ...cssHsl, l: 50 }; // Default lightness to 50%
    const hexColor = savedColor ? hslToHex(initialHsl.h, initialHsl.s, initialHsl.l) : hslToHex(cssHsl.h, cssHsl.s, 50); // Use CSS hue and saturation, default lightness to 50%

    function showColorPicker(e) {
        e.preventDefault();
        e.stopPropagation();
        const target = e.currentTarget.querySelector('i');

        if (!picker) {
            picker = new jscolor(target, {
                onInput: 'updateColor(this)',
                valueElement: null, // This ensures that the color value is not applied to the button itself
                previewElement: null, // No preview element
                value: hexColor // Set the initial color
            });
        }

        if (picker) picker.show();
    }

    if (starButtons.length > 0) {
        starButtons.forEach(button => {
            button.addEventListener('click', showColorPicker);
            button.addEventListener('touchstart', showColorPicker); // Add touchstart event listener for mobile
            const greenPart = button.querySelector('.green-part');
            if (greenPart) {
                greenPart.addEventListener('click', handleGreenPartClick);
                greenPart.addEventListener('touchstart', handleGreenPartClick); // Add touchstart event listener for mobile
            }
            console.info('Star button event listener added');
        });
    } else {
        console.info('No star buttons found');
    }

    function handleGreenPartClick(e) {
        e.preventDefault();
        e.stopPropagation();
        alert('Green part clicked!');
    }

    // Apply the saved color on page load
    if (savedColor) {
        const hslColor = JSON.parse(savedColor);
        applyColor(hslColor);
        console.info('Applied saved color:', hslColor);
    }
});

function updateColor(picker) {
    const hexColor = picker.toHEXString();
    const hslColor = hexToHSL(hexColor);

    console.info('New color selected: ', hslColor);

    applyColor(hslColor);
    // Save the selected color to localStorage
    localStorage.setItem('selectedColor', JSON.stringify(hslColor));
}

function applyColor(hslColor) {
    document.documentElement.style.setProperty('--clr-a-text', `hsl(${hslColor.h}, ${hslColor.s}%, var(--L-a-text))`);
    document.documentElement.style.setProperty('--clr-a-text-hvr', `hsl(${hslColor.h}, ${hslColor.s}%, calc(var(--L-a-text) * var(--L-a-text-hover-change)))`);
}

function hexToHSL(hex) {
 
}

function hslToHex(h, s, l) {
 
}

function getCssHsl(variable) {
    const style = getComputedStyle(document.documentElement);
    const value = style.getPropertyValue(variable);
    const hsl = value.match(/\d+/g).map(Number);
    return { h: hsl[0], s: hsl[1], l: hsl[2] };
}

Есть ли у вас это в Интернете, чтобы увидеть это в действии?

iorgu 04.07.2024 20:38

да, но я слышал, что публиковать это здесь — плохая практика. Также эта проблема возникает только в сафари.

doodlebob 05.07.2024 19:20

Если вы укажете URL-адрес, это просто плюс. В сочетании с фрагментом кода вы с большей вероятностью получите положительный голос, чем отрицательный. И я видел, как многие люди публиковали свою проблему вместе с фрагментом и URL-адресом.

iorgu 05.07.2024 22:12

Предоставленного вами кода недостаточно, чтобы воспроизвести проблему.

iorgu 05.07.2024 22:17

Вот пример: stackoverflow.com/questions/78466750/…

iorgu 09.07.2024 19:39

@iorgu я написал тебе по электронной почте

doodlebob 11.07.2024 02:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам следует переместить .star-button из .sidebar, чтобы он был прямым дочерним элементом .wrapper, потому что .sidebaroverflow снижает его видимость, например:

<div class = "wrapper">
  <button class = "bottom-left-btn star-button"><i class = "far fa-star jscolor" data-current-color = "#4040BF"></i></button>
  <div class = "sidebar">
    <!--rest of the code-->
  </div>
  <!--rest of the code-->
</div>

А затем перейдите на CSS для мобильных устройств под @media print, screen and (max-width: 960px) {, вот так:

    .link-wrapper, .wrapper > .star-button {
        display: none !important;
    }

Спасибо. это была моя глупая ошибка

doodlebob 13.07.2024 01:33

Всегда пожалуйста.

iorgu 13.07.2024 02:42

Другие вопросы по теме