Вопрос или проблема
Я работаю над страницей 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) и отсутствие адаптивного дизайна. Рассмотрим возможные причины и решения более подробно.
Основные причины переполнения кнопки:
-
Размеры кнопки:
Кнопка с фиксированными отступами (padding: 10px 25px
) может не подходить для небольших экранов. На мобильных устройствах кнопка может занимать избыточное пространство из-за своего размера. -
Ширина контейнера:
Если контейнер, в который встроена кнопка, имеет фиксированную ширину, кнопка может превышать пределы этого контейнера. Убедитесь, что контейнер имеет правильные стили, например,max-width
или адаптивные единицы измерения. -
Отсутствие адаптивности:
Если страница написана без учета адаптивного дизайна, элементы могут не подстраиваться под размеры экранов мобильных устройств. Необходима реализация медиа-запросов для изменения стилей на разных размерах экрана.
Рекомендации по исправлению:
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), где можно симулировать различные размеры экранов.
Заключение:
Проблема с переполнением кнопки на мобильных устройствах чаще всего возникает из-за фиксированных значений ширины и отступов. Используя описанные выше подходы, вы можете сделать кнопку более адаптивной к мобильным экранам, улучшив тем самым общий пользовательский опыт на вашем веб-сайте. Не забывайте регулярно тестировать на различных устройствах и экранах.
Соблюдайте эти рекомендации для достижения лучшего результата и улучшения взаимодействия пользователей с вашим сайтом.