#html #css
#HTML #css
Вопрос:
Я столкнулся с проблемой с моей веб-страницей: у меня есть веб-страница, на которую я хочу реагировать на мобильных телефонах.
Я пытался
<meta name="viewport" content="width=device-width, initial-scale=1.0">
и все атрибуты CSS, такие как width:100%
и max-width
и так далее
, И проблема в том, что когда я использую проверку Chrome для имитации веб-страницы на телефоне, она отображается правильно, но когда я получаю доступ через реальный мобильный телефон, происходит сбой (она отображается как настольная версия, без реакции)
HTML-коды
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Love calculator | Home</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="wrapper">
<div class="content">
<h1><img src = "./img/logo1.png" alt = "Calculate your love!" class="img" style = "border: medium none ;" /></h1>
</div>
<form method="POST" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<div class="form">
<div class="top-form">
<div class="inner-form">
<div class="label">Your Name</div>
<input type="text" placeholder="Your name" required name="firstname">
</div>
<div class="inner-form">
amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;
</div>
<div class="inner-form">
<div class="label">Partner's Name</div>
<input type="text" placeholder="Partner's Name" required name="lastname">
</div>
</div>
<div class="submitbtn">
<input type="submit" value="" name="submit" style="border: medium none ; background: transparent url(img/calculate.png) repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: 131px; height: 52px;">
</div>
<div class="bottom-form">
<div id="instructions"><img src="./img/how-it-works.png" alt="how does it work?" class="img" /></div>
</div>
</div>
</div>
</form>
</body>
</html>
STYLE.CSS
*{
margin: 0;
padding: 0;
user-select: none;
}
body{
background-image: url(img/bg-love.jpg);
background-repeat: no-repeat;
}
.wrapper{
width: 100%;
max-width: 680px;
margin: 10px auto 0;
padding: 20px;
box-sizing: border-box;
}
.content{
text-align: center;
width: 100%;
}
.submitbtn{
width: 100%;
}
.content h1{
letter-spacing: 1px;
}
.form{
width: 100%;
margin: 25px 0;
}
.top-form,
.middle-form,
.bottom-form{
width: 100%;
min-height: 65px;
margin: 30px 0;
overflow: hidden;
}
.form input[type="text"],
.form textarea{
padding: 15px 5px;
box-sizing: border-box;
width: 100%;
border: 2px solid #fff;
border-radius: 2px;
outline: none;
transition: all 0.2s ease;
}
.form input:focus,
.form textarea:focus{
border-color: #4ca1af;
box-shadow: inset 0 1px 1px rgba(0,0,0, 0.0125),
0 0 8px rgba(76,161,175,0.5);
}
.form .label{
margin-bottom: 5px;
text-transform: capitalize;
color: white;
font-weight: bold;
font-family: sans-serif;
}
.top-form .inner-form{
width: 29.9%;
float: left;
margin-right: 5%;
}
.top-form .inner-form:last-child {
margin-right: 0;
}
.middle-form{
clear: both;
}
.bottom-form textarea{
height: 60px;
}
.btn{
background: #4ca1af;
width: 200px;
padding: 10px 0;
border-radius: 2px;
text-align: center;
text-transform: uppercase;
color: #fff;
letter-spacing: 5px;
cursor: pointer;
}
::-moz-input-placeholder{
text-transform: capitalize;
}
::-ms-input-placeholder{
text-transform: capitalize;
}
#targetDiv{
align: center;
z-index: 4;
color: #FFFFFF;
width: 133;
font-size: 28px;
}
@media screen and (max-width: 460px){
.img {
width: 100%;
}
.wrapper{
margin: 25px auto 0;
}
.top-form .inner-form{
width: 100%;
margin: 5px 0;
}
}
Почему это могло произойти? может ли фоновое изображение повлиять на отзывчивость!?
Комментарии:
1. Проверьте свой код.
2. Я тоже загрузил коды! Моя единственная проблема в том, почему она корректно отображается в симуляции и не работает на реальном устройстве!?
3. Может быть, проблема с браузером?
4. Настольный Chrome? Или в мобильных браузерах!?
Ответ №1:
Вы можете добавить тип сжатия в содержимое окна просмотра следующим образом
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
или просто используйте один из следующих медиа-запросов для смартфона
портрет
/* Smartphones (portrait) ---------- */
@media screen and (max-width: 320px){
/* styles */
}
пейзаж
/* Smartphones (landscape) ---------- */
@media screen and (min-width: 321px){
/* styles */
}
как в портретной, так и в альбомной ориентации
/* Smartphones (portrait and landscape) ---------- */
@media screen and (min-width: 320px) and (max-width: 480px){
/* styles */
}
И если проблема все еще существует, попробуйте изменить многие возможные html-элементы внутри медиа-запроса так, как это имеет смысл, и также проверьте свой браузер или попробуйте другие смартфоны.
Или вы можете попробовать другой способ, используя JavaScript, если вы знаете некоторые.
в JavaScript есть функция, вызываемая window.matchMedia()
, которая помогает вам работать с медиа-запросами в JavaScript, и следующий синтаксис
if (window.matchMedia('only screen and (max-width: 480px)').matches) {
// style here
}
Комментарии:
1. Это мне очень помогло!
2. @MasterOfDisaster рад помочь
Ответ №2:
Может ли фоновое изображение повлиять на отзывчивость!?
Да, это возможно. Рассмотрите возможность использования background-size
свойства в вашем затронутом div:
body{
background-image: url(img/bg-love.jpg);
background-size: cover;
background-repeat: no-repeat;
}
Однако это только одна из возможных проблем. Попробуйте настроить это и посмотрите, улучшится ли что-нибудь.
Комментарии:
1. Этот background-size: cover отлично подходит для фоновых изображений с низким разрешением