Установка изображений в загрузочные SVG

#html #css #twitter-bootstrap #svg #bootstrap-5

Вопрос:

Итак, я создаю веб-страницу с помощью Bootstrap 5, и один из элементов, которые я использую (из шаблонов BS5), это

     <div class="col" data-aos="fade-up" data-aos-delay="200">
      <div class="card shadow-sm">
        <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>

        <div class="card-body">
          <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
          <div class="d-flex justify-content-between align-items-center">
            <div class="btn-group">
              <button type="button" class="btn btn-sm btn-outline-secondary">Learn More</button>
            </div>
          </div>
        </div>
      </div>
    </div>
 

Как вы можете видеть, там наверху есть svg бирка с rect надписью «внутри». Я хочу отобразить изображение вместо rect (или внутри него, просто нужно, чтобы оно было того же размера, rect что и), сохраняя при этом текст, который в настоящее время отображается поверх указанного rect .

Теперь я знаю, что для отображения изображений внутри an svg вам нужно определить a, clip path используя нужную вам форму, но, похоже, это было написано для лучшей реализации.

Может ли кто-нибудь указать, как я могу поместить изображение в rect или на его место без каких-либо изменений размеров и при этом сохранить отображаемый текст?

Ответ №1:

Вы можете просто использовать <image> тег, установив width и/или height как 100% изображение, которое заполнит всю область контейнера.

  <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false">
      <title>Placeholder</title>
      <rect width="100%" height="100%" fill="#55595c" />
      <image href="https://www.wpbeginner.com/wp-content/uploads/2018/12/svgnoqualityloss.png" width="100%"/>
      <text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text>
    </svg> 

JSFiddle: https://jsfiddle.net/rcuq7sLb/6/

Вы также можете играть с шириной и высотой изображения, например height: 100%

JSFiddle: https://jsfiddle.net/rcuq7sLb/7/

Комментарии:

1. Решил мою проблему. Огромное спасибо!