#html #css #svg
#HTML #css #svg
Вопрос:
Мой SVG не масштабируется до 100% ширины в Safari, как в IE, Chrome и Firefox. Я много пробовал, но не могу заставить свой SVG растягиваться до 100% ширины, как во всех других браузерах. Я использую React.
.hero-svg {
display: flex;
width: 100%;
}
svg {
display: flex;
width: 100%;
z-index: -1;
}
<div className="hero-svg">
<svg viewBox="0 0 1440 320">
<path fill="#3dd0f2" fillOpacity="1" d="M0,128L80,117.3C160,107,320,85,480,117.3C640,149,800,235,960,229.3C1120,224,1280,128,1360,80L1440,32L1440,0L1360,0C1280,0,1120,0,960,0C800,0,640,0,480,0C320,0,160,0,80,0L0,0Z"></path>
</svg>
</div>
Я пробовал использовать preserveAspectRatio = "none"
, но это не сильно меняется.
Вот скриншот Chrome, а затем Safari:
Chrome:
Сафари:
Комментарии:
1. На моем iPad с Safari (IOS 14) она растягивается нормально.
2. Можете ли вы опубликовать скриншот того, что вы подразумеваете под svg, не масштабируется до 100% ширины в Safari . Я только что проверил это в Safar v14, и, похоже, все в порядке.
3. Вы используете
className
. Используете ли вы react?4. Да, я использую react, и я только что загрузил скриншот
5. z-index не будет работать без position, попробуйте добавить пространства имен svg и удалить display:flex
Ответ №1:
Я все понял. Это сработало:
<div className="hero-svg">
<svg viewBox="0 0 1440 320" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none">
<path fill="#f0f0f0" fillOpacity="1" d="M0,32L80,32C160,32,320,32,480,37.3C640,43,800,53,960,80C1120,107,1280,149,1360,170.7L1440,192L1440,0L1360,0C1280,0,1120,0,960,0C800,0,640,0,480,0C320,0,160,0,80,0L0,0Z"></path>
</svg>
</div>
css:
.hero-svg{
display: flex;
width: 100%;
svg{
width: 100%;
z-index: -1;
}
}