Эквивалентно фоновому процентному положению (%) в SVG - PullRequest
0 голосов
/ 17 октября 2018

У меня есть изображение SVG, которому назначен эквивалент background-size: cover; с использованием preserveAspectRatio="xMidYMid slice".

Однако на телефонных устройствах менее 737 пикселей я бы хотел переместить это изображение влево в пределах егоконтейнер.Если бы я использовал свойство CSS background, я бы просто сделал background-position: 85%; или подобное.

Есть ли эквивалентный способ сделать это с изображениями SVG?

Codepen: https://codepen.io/emilychews/pen/Zqragv

Большое спасибо заранее за любую помощь.

body {
  margin: 0;
  padding: 0;
  display: flex;
  width: 100%;
  height: 100vh;
  justify-content: center;
  align-items: center;
}

#section-1, .home-image-wrapper {
  width: 100%;
  height: 100%;
  position: relative;
  overflow: hidden;
}

.home-image, .home-image-wrapper {
  position: absolute;
  right: 0;
}

#home-image-1 {right: 0%}
<section id="section-1">
  
  <div class="home-image-wrapper">
    
    <svg class="home-image" id="home-image-1" width="60%" height="100%">
      <image xlink:href="https://i.postimg.cc/9XdQKYF1/dimon-blr-309444-unsplash.jpg" x="0" y="0" width="100%" height="100%" preserveAspectRatio="xMidYMid slice"/>
    </svg>
    
  </div>
  
</section>

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Установка позиции для элементов svg

Если вы просто хотите изменить элемент svg в контейнере (при условии, что элемент ).Вы можете применить простое преобразование к любому элементу:

Пример:

<svg viewBox="0 0 100 100" width="300px">
  <!--black rect-->
  <g>
    <rect x="0" y="0" width="20" height="20" />
  </g>
  <!--blue rect-->
  <g transform="translate(20)" fill="#08a">
    <rect x="0" y="20" width="20" height="20" />
  </g>
</svg>
0 голосов
/ 17 октября 2018

В SVG вы можете установить атрибут viewBox.Это определяет x, y, ширину и высоту видимой части SVG.Допустим, ваше jpg изображение имеет ширину 200 и высоту 100. В этом случае вы устанавливаете viewBox="0 0 200 100" по умолчанию для элемента <svg>.На телефонных устройствах вы можете изменить значение viewBox на что-то вроде 50 0 100 100, что будет отображать только средние 100 пикселей изображения.

Подробнее об атрибуте viewBox можно найти здесь: http://jonibologna.com/svg-viewbox-and-viewport/

...