html - 响应式 SVG 未在较大屏幕尺寸下显示完整版本
问题描述
我有以下 SVG
<svg width="535" height="242" viewBox="0 0 535 242" xmlns="http://www.w3.org/2000/svg">
<title>SVG</title>
<style>
#text {
opacity: 0;
}
@media all and (min-width: 768px) {
#text {
opacity: 1;
}
}
</style>
<g>
<path id="logo" fill="#FFF" d=""/>
<path id="text" fill="#FFF" d=""/>
</g>
</svg>
它应该只在小屏幕上显示徽标,在大屏幕上显示带有文本的徽标。
如果我直接在浏览器中的大窗口中查看 SVG,我可以同时看到徽标和文本,如果我缩小窗口,文本就会消失。
但是,如果我将 SVG 添加到img
标签中,例如<img src="logo.svg">
并在浏览器中查看它,我只会得到徽标标记,无论窗口大小如何。
我一直在将我正在做的事情与这个https://tympanus.net/Tutorials/ResponsiveSVGs/img/logo_mq.svg进行比较,无论我是直接查看 SVG 还是在img
标签中链接,我都看不到我的设置与他们的不同。
解决方案
像这样向 SVG 添加样式:
<svg width="700" height="242" viewBox="0 0 535 242" xmlns="http://www.w3.org/2000/svg">
<title>SVG</title>
<defs>
<style type="text/css"><![CDATA[
#text {
opacity: 0;
}
@media all and (min-width: 768px) {
#text {
opacity: 1;
}
}
]]></style>
</defs>
<g>
<path id="logo" fill="#f00" d=" ... "/>
<path id="text" fill="#000" d=" ... "/>
</g>
</svg>
当样式嵌入到 SVG 文件中时,@media
查询采用 SVG 元素的宽度,而不是窗口的宽度。这使得 SVG 属性width=535
总是呈现 id text
。如果您希望 SVG 对页面的整个宽度做出反应,请使用内联 SVG。此外,这可以通过不定义 SVG 的宽度或高度来完成,这允许 HTML 页面定义 SVG 的大小,从而使 SVG 改变其状态。
推荐阅读
- python - 不确定如何在另一个函数中调用此函数 - Python
- raspberry-pi - Raspi 移动 MariaDB 数据目录问题(chown 问题)
- python - 如果在jupyter笔记本中使用python或pandas长度不同,如何将列中的逗号分隔字符串拆分为不同的列
- google-signin - Google 一键式注册中的“格式错误的 JSON 响应”错误
- java - WildFly20 中的 Spring Boot 2.2.6 失败
- c++ - this_thread / chrono 尚未声明
- java - Intellij 看不到路径 /usr/share/java
- algorithm - 如何找到二维点集的最近对距离?
- java - 如何为实时数据库编写firebase规则?
- javascript - FirebaseError:权限缺失或不足。用于更新或创建