Наведение на кнопку вызывает переполнение на мобильных устройствах… в чем проблема?

Вопрос или проблема

Я работаю над страницей WordPress, которая правильно отображается на настольном компьютере, но имеет проблемы с макетом на мобильных экранах. В частности, кнопка посередине моей страницы выходит за пределы контейнера, что делает её странной на устройствах с меньшим экраном.

Вот соответствующая часть моего CSS:

.btn {
    background-color: #007bff;
    color: white;
    padding: 10px 25px;
    border: none;
    cursor: pointer;
    font-size: 16px;
    margin-top: 20px;
}

.btn:hover {
    background-color: #0056b3;
}

На настольном ПК всё работает нормально, но когда я тестирую на мобильном, кнопка кажется слишком широкой, а отступы выглядят неправильно. Я подозреваю, что это связано с значением отступа, но мне не удаётся это исправить.

Я пробовал использовать box-sizing: border-box;, но это, похоже, тоже не помогает.

Есть идеи, как сделать её отзывчивой или предотвратить выход за пределы?
Спасибо!

HTML код страницы:

<div class="sharethis-inline-share-buttons"></div>
<p class="License autors_"><span>Под лицензией Creative Commons </span><a class="anchor anchor-default" href="http://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank" rel="noreferrer noopener"><span class="anchor-text">лицензия</span><svg focusable="false" viewBox="0 0 78 128" aria-label="Открывает в новом окне" width="1em" height="1em" class="icon icon-arrow-up-right arrow-external-link"><path d="m4 36h57.07l-59.5 59.5 7.07 7.08 59.36-59.36v56.78h1e1v-74h-74z"></path></svg></a></p>
<div class="content">
    <p>Всемирный феномен, которым является тур Taylor Swift "Eras", захватил не только сердца её фанатов, но и стал экономической силой, которая стимулировала местные экономики на нескольких континентах. От продажи билетов и товаров до гостиничного бизнеса и туризма, финансовый эффект оказался ошеломляющим.</p>

    <h2>Неожиданный экономический прирост</h2>
    <p>Города, принимающие концерты "Eras Tour", сообщили о резком увеличении экономической активности. Фанаты путешествуют на большие расстояния, чтобы посетить концерты, а их расходы не ограничиваются только билетами. Проживание в отелях, ужины, транспорт и местный туризм резко возросли в таких городах, как Стокгольм, Париж и Сидней.</p>

    <h3>Рекордные доходы</h3>
    <p>Например, местное правительство Стокгольма сообщило о 20% увеличении доходов от туризма в выходные дни концерта Swift, при этом гостиничный сектор получил миллионы дополнительных продаж. В Париже отели были забронированы на недели, а местные бизнесы увидели значительный рост числа посетителей.</p>

    <h4>Влияние на путешествия и размещение</h4>
    <p>По всей Европе тур Taylor Swift стал катализатором для увеличения туризма. Фанаты из стран с более дорогими билетами (например, из США) путешествуют в европейские города, чтобы насладиться как концертом, так и отпуском. Это международное путешествие принесло значительные доходы для авиакомпаний, отелей и даже местных достопримечательностей.</p>

    <p>Согласно исследованию DashTickets, топ-города, которые выиграли от притока зрителей концертов, включают:</p>

    <ul>
        <li><strong>Париж</strong>: 18% увеличение бронирований отелей во время концертов</li>
        <li><strong>Стокгольм</strong>: 20% увеличение расходов на туризм</li>
        <li><strong>Мадрид</strong>: 15% рост доходов ресторанов</li>
    </ul>

    <p>В то время как фанаты из США часто платят до 2000 долларов за билет, те, кто посещает европейскую часть тура, сообщают о значительно меньших расходах, даже с учётом затрат на поездки. Это вызвало волну международного концертного туризма, феномен, который значительно способствует местным экономикам Европы.</p>

    <h4>Глобальное сравнение цен на билеты</h4>
    <p>Цены на билеты на концерты Taylor Swift значительно различаются в зависимости от региона, при этом европейские страны, как правило, предлагают более доступные варианты. Решение Swift провести несколько шоу в крупных европейских городах помогло снизить цены благодаря конкурентному рынку билетов.</p>

    <button class="btn" id="ticketComparison">Сравнить цены на билеты</button>

    <div class="price-comparison hidden" id="comparisonTable">
        <table>
            <tr>
                <th>Город</th>
                <th>Цена билета (USD)</th>
                <th>Местное воздействие</th>
            </tr>
            <tr>
                <td>Стокгольм, Швеция</td>
                <td>$152</td>
                <td>20% увеличение дохода от туризма</td>
            </tr>
            <tr>
                <td>Париж, Франция</td>
                <td>$171</td>
                <td>18% увеличение бронирований отелей</td>
            </tr>
            <tr>
                <td>Мадрид, Испания</td>
                <td>$196</td>
                <td>15% рост доходов ресторанов</td>
            </tr>
        </table>
    </div>
</div>

<!-- Стили для страницы -->
<style>
    body {
        font-family: Arial, sans-serif;
        background-color: #fafafa;
        margin: 0;
        padding: 0;
    }

    .header {
        background-color: #ffdd00;
        color: black;
        padding: 30px;
        text-align: center;
    }

    .content {
        width: 70%;
        margin: 30px auto;
        background-color: white;
        padding: 30px;
        box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);
    }

    .btn {
        background-color: #007bff;
        color: white;
        padding: 10px 25px;
        border: none;
        cursor: pointer;
        font-size: 16px;
        margin-top: 20px;
    }

    /* Небольшой CSS-баг: проблема с отступами на экранах малого размера (выход за пределы на мобильных из-за большого фиксированного размера) */
    .btn:hover {
        background-color: #0056b3;
    }

    table {
        width: 100%;
        margin-top: 20px;
        border-collapse: collapse;
    }

    table th, table td {
        border: 1px solid #ddd;
        padding: 10px;
        text-align: left;
    }

    .hidden {
        display: none;
    }
</style>

<script>
    const ticketComparisonBtn = document.getElementById('ticketComparison');
    const comparisonTable = document.getElementById('comparisonTable');

    ticketComparisonBtn.addEventListener('click', function() {
        if (comparisonTable.style.display === 'none') {
            comparisonTable.style.display = 'block';
        } else {
            comparisonTable.style.display = 'none';
        }
    });
</script>введите описание изображения здесь

.

Ответ или решение

Проблема с переполнением кнопки на мобильных устройствах может быть связана с несколькими факторами, основными из которых являются фиксированные значения ширины, неправильно установленные отступы (padding) и отсутствие адаптивного дизайна. Рассмотрим возможные причины и решения более подробно.

Основные причины переполнения кнопки:

  1. Размеры кнопки:
    Кнопка с фиксированными отступами (padding: 10px 25px) может не подходить для небольших экранов. На мобильных устройствах кнопка может занимать избыточное пространство из-за своего размера.

  2. Ширина контейнера:
    Если контейнер, в который встроена кнопка, имеет фиксированную ширину, кнопка может превышать пределы этого контейнера. Убедитесь, что контейнер имеет правильные стили, например, max-width или адаптивные единицы измерения.

  3. Отсутствие адаптивности:
    Если страница написана без учета адаптивного дизайна, элементы могут не подстраиваться под размеры экранов мобильных устройств. Необходима реализация медиа-запросов для изменения стилей на разных размерах экрана.

Рекомендации по исправлению:

1. Используйте max-width для кнопки:

.btn {
    max-width: 100%; /* Ограничьте ширину кнопки */
    width: auto; /* Позвольте кнопке адаптироваться под содержимое */
    box-sizing: border-box; /* Убедитесь, что размеры кнопки включают отступы */
}

2. Изменения в отступах при помощи медиа-запросов:

Используйте медиа-запросы, чтобы уменьшить отступы на мобильных устройствах:

@media (max-width: 768px) {
    .btn {
        padding: 8px 15px; /* Уменьшите значение padding для мобильных экранов */
        font-size: 14px; /* Вы можете также уменьшить размер шрифта для лучшего соответствия */
    }
}

3. Убедитесь, что контейнеры адаптивны:

Проверьте, что контейнер для кнопки также является адаптивным:

.content {
    width: 90%; /* Или используйте max-width */
    margin: 0 auto;
}

Проверка реализации:

После внесения изменений обязательно проверьте их на разных устройствах с помощью инструментов разработчика в браузере (например, Chrome DevTools), где можно симулировать различные размеры экранов.

Заключение:

Проблема с переполнением кнопки на мобильных устройствах чаще всего возникает из-за фиксированных значений ширины и отступов. Используя описанные выше подходы, вы можете сделать кнопку более адаптивной к мобильным экранам, улучшив тем самым общий пользовательский опыт на вашем веб-сайте. Не забывайте регулярно тестировать на различных устройствах и экранах.

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

Оцените материал
Добавить комментарий

Капча загружается...