Как изменить размер, выровнять по центру и сделать файл SVG адаптивным внутри его родительского div?

Я безуспешно пытаюсь центрировать файл svg в его родительском div.

Я создал эту скрипку -> https://jsfiddle.net/wfukyd4q/

где вы видите, я сделал следующее:

<div class = "col-md-10 col-md-offset-1 col-sm-12 text-center">
    <div style = "background-color:#489734;height:500px">
         <img src = "https://42f2671d685f51e10fc6-b9fcecea3e50b3b59bdc28dead054ebc.ssl.cf5.rackcdn.com/illustrations/compose_music_ovo2.svg">
    </div>
</div>

Моя цель - сделать svg, скажем, 50%, и поставить его в центр, но при этом он должен быть отзывчивым и для мобильных устройств.

Спасибо

Вы пробовали установить width: 50%; на свой img?

Irina Potapova 10.12.2018 15:21

@IrinaPotapova Да, но имеет смысл только на десктопе. Если вы попробуете на мобильном телефоне, он выглядит крошечным

EnexoOnoma 10.12.2018 15:23

он выглядит крошечным, потому что 50% мобильного экрана крошечные. Вы можете использовать медиа-запрос, чтобы настроить это

Naomi 10.12.2018 15:25

Привет, это технически не svg, когда вы помещаете его в тег img. Просто чтобы вы знали, если вы хотите настроить его, как svg

Craicerjack 10.12.2018 15:25

Возможный дубликат вертикальный центр svg в контейнере div

Rob 11.12.2018 15:24
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
6
865
4

Ответы 4

Допустим, у вашего образа есть класс svg-image:

<img class = "svg-image" src = "https://42f2671d685f51e10fc6-b9fcecea3e50b3b59bdc28dead054ebc.ssl.cf5.rackcdn.com/illustrations/compose_music_ovo2.svg">

Пожалуйста, добавьте CSS, подобный этому:

.svg-image {
    width: 50%;
}
@media only screen and (max-width: 992px) {
    width: 90%;
}

Вы можете указать несколько запросов @media для разных размеров экрана и применить желаемую ширину изображения.

Обновлено:

Чтобы центрировать изображение по вертикали и горизонтали, вы можете добавить стили в свой div (который обертывает ваше изображение):

.class-of-your-div {
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex; 
    justify-content: center;
    align-items: center;
}

Спасибо, но как мне удержать это в центре внимания?

EnexoOnoma 10.12.2018 15:32

@EnexoOnoma, спрашивают про горизонтальное центрирование?

Irina Potapova 10.12.2018 15:32

Вертикально и горизонтально

EnexoOnoma 10.12.2018 15:34

@EnexoOnoma, flexbox должен работать caniuse.com/#feat=flexbox. Просто нужно добавить префиксы как здесь shouldiprefix.com/#flexbox. Я отредактировал ответ

Irina Potapova 10.12.2018 16:04

Вы пытались дать элементу изображения идентификатор, а затем сослаться на этот элемент внутри вашего CSS следующим образом:

div#foo {
  display: block;
  margin-left: auto;
  margin-right: auto;
  width: 50%;
}

где у вашего тега img есть пример идентификатора 'foo'

Обновлять:

Возможно, вам придется изменить положение вашего родителя следующим образом:

  #parent {
    position: absolute

   }

div#foo {
    display: block;
    margin-left: auto;
    margin-right: auto;
    width: 50%;
}

Он не центрирует изображение внутри div

EnexoOnoma 10.12.2018 15:34

Свойства CSS background-* будут делать то, что вы хотите.

div.text-center div {
  background-color: #489734;
  height: 500px;
  background-image: url("https://42f2671d685f51e10fc6-b9fcecea3e50b3b59bdc28dead054ebc.ssl.cf5.rackcdn.com/illustrations/compose_music_ovo2.svg");
  background-size: auto 50%;
  background-repeat: no-repeat;
  background-position: center;
}
<div class = "col-md-10 col-md-offset-1 col-sm-12 text-center">
  <div></div>
</div>

https://jsfiddle.net/wfukyd4q/7/

Если это не совсем так, как вы хотите на мобильных устройствах, вы можете использовать медиа-запросы, чтобы настроить CSS по мере необходимости для определенных размеров экрана.

Еще один способ сделать это:

.col-md-10{position:relative;}
.col-md-10 img{
  display:block;
  width:50%;
  height:auto;
  position:absolute;
  margin:auto;
  top:0;bottom:0;right:0;left:0;
}
<div class = "col-md-10 col-md-offset-1 col-sm-12 text-center">
                <div style = "background-color:#489734;height:500px">
                    <img src = "https://42f2671d685f51e10fc6-b9fcecea3e50b3b59bdc28dead054ebc.ssl.cf5.rackcdn.com/illustrations/compose_music_ovo2.svg">
                </div>

</div>

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