Как настроить изображение под экран мобильного

Я использую пример карусели отсюда: https://www.w3schools.com/bootstrap/bootstrap_carousel.asp У меня есть несколько примеров изображений из моего приложения, которые я взял со своего мобильного телефона 5,7 дюйма с экраном печати и удалил панель уведомлений вверх (которая показывает сигнал и т. д.). Я пытаюсь сделать эти примеры изображений (карусель) одинаковой высоты и ширины моего экрана, не заставляя пользователя прокручивать вниз или вправо, чтобы увидеть изображение полностью. Таким образом, пользователь увидит панель действий (ту, что есть в приложениях, потому что она будет открываться в веб-просмотре) и только карусель. Я безуспешно пытался изменить ширину и высоту изображений.

Обновлено: Основываясь на ответе Metatron5, я изменил код, и он работает в Firefox для Android, но не распознает vh и vw в веб-просмотре Android.

<!DOCTYPE html>
    <html lang = "en">
    <head>
      <title>Carousel</title>
      <meta charset = "utf-8">
      <meta name = "viewport" content = "width=device-width, initial-scale=1">
      <link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
      <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
      <style>
    
    
      </style>
    </head>
    <body>
    
    
      
      <div id = "myCarousel" class = "carousel slide" data-ride = "carousel">
        <!-- Indicators -->
        <ol class = "carousel-indicators">
          <li data-target = "#myCarousel" data-slide-to = "0" class = "active"></li>
          <li data-target = "#myCarousel" data-slide-to = "1"></li>
          <li data-target = "#myCarousel" data-slide-to = "2"></li>
          <li data-target = "#myCarousel" data-slide-to = "3"></li>
        </ol>
    
        <!-- Wrapper for slides -->
        <div class = "carousel-inner">
          <div class = "item active">
            <img src = "begin.png" alt = "" style = "height: 100vh; width: 100vw;">
          </div>
    
          <div class = "item">
            <img src = "first.png" alt = "" style = "height: 100vh; width: 100vw;">
          </div>
        
          <div class = "item">
            <img src = "second.png" alt = "" style = "height: 100vh; width: 100vw;">
          </div>
    
          <div class = "item">
            <img src = "third.png" alt = "" style = "height: 100vh; width: 100vw;">
          </div>
        </div>
    
        <!-- Left and right controls -->
        <a class = "left carousel-control" href = "#myCarousel" data-slide = "prev">
          <span class = "glyphicon glyphicon-chevron-left"></span>
          <span class = "sr-only">Previous</span>
        </a>
        <a class = "right carousel-control" href = "#myCarousel" data-slide = "next">
          <span class = "glyphicon glyphicon-chevron-right"></span>
          <span class = "sr-only">Next</span>
        </a>
      </div>
    </div>
    
    </body>
    </html>

Вы пытались установить высоту 100vh и ширину 100vw?

Metatron5 11.02.2019 14:53

@Metatron5 извините, обновление! Я пробовал, и, похоже, он работает в Firefox для Android. Я думаю, что это лучший способ, спасибо! :), теперь проблема в том, что он не работает в веб-просмотре Android и имеет пробел справа

JonAte 11.02.2019 15:21

хм, кажется, веб-просмотр не поддерживает vh и vw: github.com/facebook/react-native/issues/7103

Metatron5 11.02.2019 15:31

@ Metatron5, к сожалению, да, я сейчас наткнулся на эту ссылку. :/ Я не уверен, что еще я могу сделать

JonAte 11.02.2019 15:36

эта ссылка может помочь? stackoverflow.com/questions/32729416/…

Metatron5 11.02.2019 15:39

@Metatron5 спасибо за это, я проверил, и у меня есть это право, android:layout_height = "match_parent"

JonAte 11.02.2019 15:44

@Metatron5 я пробовал style = "height: 100%; width: 100%, но он по-прежнему показывает небольшой пробел рядом с каруселью, а также имеет прокрутку вниз, чтобы пользователь мог увидеть полное изображение (как и раньше)

JonAte 11.02.2019 15:51

Не могли бы вы дать телу ширину 100vw и высоту 100vh. Оставьте картинку с %

Metatron5 11.02.2019 15:59

@Metatron5 добавил этот .carousel-inner { height: 100vh; ширина: 100vw; } но я не вижу никакой разницы. Версия Android 4.3, поэтому я полагаю, что веб-просмотр не поддерживает vh, к сожалению, vw

JonAte 11.02.2019 16:13

установите ширину высоты imageView, соответствующую родительскому элементу, и добавьте этот android:scaleType = "fitXY" в xml imageview

Vipul Chauhan 11.02.2019 16:27

@VipulChauhan это на html

JonAte 11.02.2019 16:47

@Metatron5, я не знаю почему, но я верю, даже если я перезагрузил свой телефон. какой-то кеш, возможно, остался в приложении, и он застрял на этой карусели с пробелом. Я очистил данные приложения, а также изменил стиль img на style = "height: 100%; width: 100%, и, похоже, это работает :) спасибо

JonAte 11.02.2019 17:38

Хорошо, что наконец-то сработало :D

Metatron5 12.02.2019 08:07

я вижу тег Android, поэтому я даю вам этот ответ, извините, приятель

Vipul Chauhan 12.02.2019 08:56
1
14
66
2

Ответы 2

Как и в комментариях, проблема, похоже, заключалась в том, что на телефоне был какой-то кэш, из-за чего стиль не работал. Итак, это, наконец, сработало, но я хочу отметить, что Единицы vh и vw не работают в Androit Webview.

Я также столкнулся с той же проблемой несколько месяцев назад. VH и VW не работали на Google TV. Итак, я решил эту проблему с помощью JavaScript. Попробуйте добавить следующий код в файл сценария:

const sliderImages= document.querySelectorAll('carousel-inner .item');

window.onload = function (e) {
    sliderImages.forEach(sliderImage=> {
        sliderImage.style.height = `${this.innerHeight}px`;
        sliderImage.style.width = `${this.innerWidth}px`;
    });
}

window.onresize= function (e) {
    sliderImages.forEach(sliderImage=> {
        sliderImage.style.height = `${this.innerHeight}px`;
        sliderImage.style.width = `${this.innerWidth}px`;
    });
}

действительно ли нет другого решения, кроме как использовать js для решения проблемы?

Metatron5 11.02.2019 16:10

Ну, я думаю, что использование JS — это кроссбраузерное решение. Если этот небольшой фрагмент кода создает для вас проблему, вы можете игнорировать JS. Но не знаю, как определить ширину и высоту Wnidow/Browser с помощью CSS, отличного от VH и VW.

Shuvo 11.02.2019 16:13

У вас есть файл js? Если у вас есть, вставьте код в конец файла или вы можете создать файл js и вставить код и добавить файл js перед закрывающим тегом </body>.

Shuvo 11.02.2019 16:14

Я сделал новый файл .js. Работает ли он в веб-просмотре Android 4.3? По-прежнему появляется та же проблема. Обновляется ли веб-просмотр, когда я закрываю и снова открываю приложение?

JonAte 11.02.2019 16:20

Вы удалили встроенные стили из изображений слайдера? <img src = "begin.png" alt = "" style = "height: 100vh; width: 100vw;"> Удалите эти стили. После этого, если проблема существует, вы можете показать мне свою проблему, используя совместное использование экрана, например, в скайпе или что-то в этом роде.

Shuvo 11.02.2019 16:27

здесь код, который я использовал. теперь единственная проблема в том, что пользователь должен прокрутить вниз, чтобы увидеть полное изображение paste.ee/p/sbXiQ#UJtp5KiU5T77b3MsT5qJPh4xXLiqyb1D

JonAte 11.02.2019 16:47

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