#html #css #responsive-design #media-queries #background-image
#HTML #css #адаптивный дизайн #медиа-запросы #фоновое изображение
Вопрос:
Я не могу понять, как изменить размер моего фонового изображения при использовании медиа-запроса. У кого-нибудь есть какие-либо предложения или ответы на это? Я пытался использовать медиа-запрос для своего фонового изображения так же, как я пробовал другие медиа-запросы, они обычно работают, но для фонового изображения, похоже, нет, или я делаю что-то не так. Проблема в том, что мое фоновое изображение не отображается полностью при использовании устройства меньшего размера, а я этого хочу. Любая помощь, которую я буду очень признателен, пожалуйста, и заранее благодарю вас.
body{
background-image:url("codeback.png");
background-repeat: no-repeat;
background-size: 1000px, 500px;
background-attachment:fixed;
}
li{
list-style-type:none;
padding:0;
margin:0;
text-align:right;
font-size:20px;
}
h1{
text-align:center;
}
@media only screen and (min-width:1000px;)
{
body
{background-size: cover;}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Evin McReynolds Portfolio</title>
</head>
<body>
<h1><strong>Hello welcome to Evin McReynolds portfolio</strong></h1>
<nav>
<ul class="link">
<li>Home</li></br>
<li><a href="Aboutem.html">About Evin</a></li></br>
<li><a href="contactem.html">Contact Evin</a></li></br>
<li><a href="skillsem.html">Skills</a></li></br>
<li><a href="EvinPro.html">Projects</a></li>
</ul>
</nav>
</body>
</html>
Ответ №1:
Вы должны использовать !important
, чтобы заставить размер фона покрывать весь экран.
body{
background-image:url("https://i.pinimg.com/originals/03/4b/58/034b588b27ec7bc95cb7cb072da3fc60.png");
background-repeat: no-repeat;
background-size: 1000px, 500px;
background-attachment:fixed;
}
li{
list-style-type:none;
padding:0;
margin:0;
text-align:right;
font-size:20px;
}
h1{
text-align:center;
}
@media only screen and (min-width: 1000px)
{
body{
background-size: cover !important;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Evin McReynolds Portfolio</title>
</head>
<body>
<h1><strong>Hello welcome to Evin McReynolds portfolio</strong></h1>
<nav>
<ul class="link">
<li>Home</li></br>
<li><a href="Aboutem.html">About Evin</a></li></br>
<li><a href="contactem.html">Contact Evin</a></li></br>
<li><a href="skillsem.html">Skills</a></li></br>
<li><a href="EvinPro.html">Projects</a></li>
</ul>
</nav>
</body>
</html>
Комментарии:
1. применяется ли !important по-прежнему при использовании пикселей? например: @экран только для мультимедиа и (минимальная ширина: 1000 пикселей) { тело{ размер фона: 500 пикселей!важно; } }
2. @Emc
!important
может применяться к любому атрибуту css 🙂
Ответ №2:
Это может сильно зависеть от того, как вы размещаете изображение на странице. Вы можете сделать это с помощью html-тега img или поместить его в любой тег div, а затем использовать CSS для отображения его в качестве фонового изображения. Я нахожу, что оба метода могут реагировать по-разному, а не так, как вы ожидаете, пытаясь создать стиль.
У вас может быть серия изображений, которые имеют статический размер, и путь к файлу изменяется по мере изменения размеров носителя
Или .. иметь только 1 отзывчивое изображение, где оно просто уменьшается в размерах. Вы можете получить интересную супер-выборку с помощью алгоритма изменения размера, который может выглядеть очень красиво.
#supersampleimgDiv {
width: 100%;
height: auto;
background-image: url(1650x3000px_responsiveImage.png);
}
#responsive_wCtrl_ImgDiv {
width: auto;
max-height: 63%;
min-height: 20%;
background-image: url(responsiveImage.png);
}
Я не уверен, насколько идеален этот метод на самом деле, для телефона не имеет
особого смысла загружать такой большой файл через мобильные
данные, когда это может быть просто изображение меньшего размера, отображаемое в
медиа-запросе.
Я не говорю, что не используйте отзывчивое изображение, но полезно понять, в чем его недостатки. Что приятно, вы могли бы делать такие вещи, как max-width: 500px или 63%; чтобы контролировать, как он отображается. Размер высоты автоматически вычисляется для поддержания соотношения сторон изображения.
#imgDiv{
height: auto;
width: 2000px;
background-image: url(2000long_staticBg.png);
}
@media screen and (max-width: 1220px) {
#imgDiv{
height: auto;
width: 1220px;
background-image: url(1220long_staticBg.png);
}
}
@media screen and (max-width: 440px) {
#imgDiv{
height: auto;
width: 440px;
background-image: url(440long_staticBg.png);
}
}
вы можете получить контроль над изображением и его отображением, если сможете определить 1 измерение (длину или ширину) как статическое, а другое — как автоматическое. Также используйте минимальную и максимальную ширину и высоту, чтобы получить контроль, когда сайт проходит через медиа-запросы.