在html和css中的引用svg(一)

问题:如何让 DIV 中的svg垂直居中?

HTML 代码:

<div class="content"><svg ...> ... </svg></div>

CSS代码:

.content svg { vertical-align: middle;}

实用扩展:如何让 DIV 中的内容垂直居中?
1、首推 Flex 弹性布局
CSS 属性 flex 规定了弹性元素如何伸长或缩短以适应 flex 容器中的可用空间。假设有下面的 HTML 代码:

<div id="content">居中显示</div>
那么我们可以编写CSS代码:

#content{  
display: flex;  
justify-content: center;(水平居中)  
align-items: center;(垂直居中)
}

2、行高(line-height)法
如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如:

p{ 
height:30px;    
line-height:30px;    
width:100px;    
overflow:hidden;
}
这段代码可以达到让文字在段落中垂直居中的效果。


问题:css如何让< p/> 或其他标签与< svg/>在同一行显示?

用一个具有display: flex;属性的div来包括它们

HTML 代码:

<div class="content"><p> ... </p><svg ...> ... </svg></div>

CSS代码:

.content { display: flex;}

可以直接在 CSS 中直接使用 SVG:

.box {
    background: url('data:image/svg+xml;utf8,<svg ...> ... </svg>');
}
不需要 Base64 转换...当然会有一些浏览器无法理解这种语法。

考虑到浏览器兼容性,用作背景图片时,建议将 SVG 编码为 Base64(或转义特定字符):
background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGV4dCB4PSI1MCUiIHk9IjUwJSIgZm9udC1zaXplPSIzMCIgZmlsbD0iI2EyYTliNiIgZmlsbC1vcGFjaXR5PSIwLjMiIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksIHNhbnMtc2VyaWYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRyYW5zZm9ybT0ncm90YXRlKC00NSwgMTAwIDEwMCknPuawtOWNsOaWh+WtlzwvdGV4dD48L3N2Zz4=");

问题:svg 图标无法铺满外部盒子的问题

//在svg 源文件的svg 头文件 加入 preserveAspectRatio="none meet" 
<?xml version="1.0" encoding="UTF-8"?>
<svg width="319px" height="76px" viewBox="0 0 319 76" version="1.1" xmlns="http://www.***/2000/svg" xmlns:xlink="http://www.***.org/1999/xlink" preserveAspectRatio="none meet">

即可实现svg自适应外部盒子宽高

问题:svg 图标颜色设置不生效

调试中发现元素的颜色始终为黑色,但我已经将其颜色更改为自定义颜色(例如蓝色)。 通过添加 style="fill:#2C30FF",但没效果,不显示我设置的颜色。

解决:“#”是URL中的保留字符,您需要将“#” 替换URL 编码为 %23, 如下:
background: url('data:image/svg+xml;utf-8,<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><polygon points="6,4.5 0,0 0,1.208 6,5.708 12,1.208 12,0" style="fill:%232C30FF;"/></svg>');


(通用)好用的SVG收集:

1、<svg viewBox="0 0 64 64" class="w-16 h-16 shrink-0" xmlns="http://www.w3.org/2000/svg"><circle cx="32" cy="32" r="32" fill="#1238BF" fill-opacity="0.2"></circle><circle cx="32" cy="32" r="20" fill="#1238BF"></circle><path fill-rule="evenodd" clip-rule="evenodd" d="M29.4428 36.2766L39.8391 24.5044L41.2445 25.7455L29.5627 38.9734L23.2302 32.9722L24.52 31.6112L29.4428 36.2766Z" fill="#fff"></path></svg>

2、<svg viewBox="0 0 64 64" class="w-16 h-16 shrink-0" xmlns="http://www.w3.org/2000/svg"><circle cx="32" cy="32" r="32" fill="#E53A3A" fill-opacity="0.2"></circle><circle cx="32" cy="32" r="20" fill="#E53A3A"></circle><path d="M26 26L38 38" stroke-width="2" stroke-linecap="square" stroke="#fff"></path><path d="M38 26L26 38" stroke-width="2" stroke-linecap="square" stroke="#fff"></path></svg>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SVG(Scalable Vector Graphics)是一种基于XML描述的矢量图形格式,可以使用CSSSVG图片进行样式和动画的控制。在SVG,可以通过使用CSS的填充(fill)属性来改变图形的颜色,从而实现动态颜色的效果。 要使用动态颜色,首先需要在SVG元素定义填充颜色的CSS类或id。例如: ``` <svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"> <rect id="myRect" width="100" height="100" /> </svg> ``` 接下来,在CSS定义对应的类或id选择器,并使用填充属性设置颜色: ``` #myRect { fill: blue; } ``` 当需要改变颜色时,只需要修改CSS属性的值即可。例如,将颜色改为红色: ``` #myRect { fill: red; } ``` 除了使用类或id选择器,也可以直接使用内联样式来改变颜色。例如: ``` <svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"> <rect style="fill: blue;" width="100" height="100" /> </svg> ``` 通过修改CSS类、id选择器或内联样式的fill属性,可以实现对SVG图片的动态颜色控制。这样,在网页可以通过JavaScript或CSS动画来改变填充颜色,使SVG图像呈现出动态的颜色效果。 ### 回答2: SVG(可缩放矢量图形)是一种基于XML的图像格式,可以使用CSS和JavaScript来为其添加动态效果和颜色。引用SVG图片并动态改变其颜色可以通过CSS或JavaScript来实现。 要使用CSS改变SVG图片的颜色,可以使用CSS的`fill`属性。我们可以将SVG图片嵌入到HTML文档,然后通过CSS选择器选择对应的SVG元素,然后设置其`fill`属性为所需的颜色值。例如,我们可以通过以下CSS代码将SVG图片的颜色改为红色: ```css svg path { fill: red; } ``` 这将选择SVG图片所有的路径元素,并将其`fill`属性设置为红色。 而如果我们想要通过JavaScript来动态改变SVG图片的颜色,我们可以使用JavaScript的DOM操作方法来选择SVG元素,并更改其属性。例如,我们可以使用`getElementById`方法选SVG元素,然后通过设置`setAttribute`方法来改变其颜色属性。以下是一个使用JavaScript动态改变SVG图片颜色的示例代码: ```javascript var svg = document.getElementById("mySvg"); var pathElements = svg.getElementsByTagName("path"); for (var i = 0; i < pathElements.length; i++) { pathElements[i].setAttribute("fill", "blue"); } ``` 上述代码,我们首先使用`getElementById`方法选择了id为"mySvg"的SVG元素,然后使用`getElementsByTagName`方法选择了其的所有路径元素,并通过循环遍历每一个路径元素,使用`setAttribute`方法将其`fill`属性改为蓝色。 总之,通过CSS和JavaScript的技术,我们可以很方便地引用SVG图片并动态改变其颜色,使得图形可以根据需要在网页表现出不同的色彩效果。 ### 回答3: 在SVG(Scalable Vector Graphics),我们可以使用CSS样式表来定义并修改图形的外观,包括动态修改颜色。 为了引用SVG图片动态颜色,我们可以通过CSS选择器选择要修改颜色的元素。SVG文档的元素可以通过class或id属性进行选择。 首先,我们需要在SVG为要修改颜色的元素添加class或id属性。例如,我们可以添加一个名为"shape"的class属性: ``` <svg> <rect class="shape" x="0" y="0" width="100" height="100"/> </svg> ``` 然后,我们可以使用CSS样式表来修改这个元素的颜色。例如,我们可以使用fill属性来修改矩形的填充颜色: ``` .shape { fill: red; } ``` 现在,矩形的填充颜色将被设置为红色。 要实现动态修改颜色,我们可以使用JavaScript来动态修改SVG元素的样式。首先,我们需要选要修改的元素,然后使用JavaScript的style属性来设置新的颜色。 示例代码如下: ``` var shape = document.getElementsByClassName("shape")[0]; shape.style.fill = "blue"; ``` 以上代码将选class为"shape"的第一个元素,并将其填充颜色设置为蓝色。 通过JavaScript,我们可以根据不同的条件或事件实时修改SVG元素的颜色,从而实现动态的效果。 总之,通过为SVG元素添加class或id属性,并使用CSS样式表或JavaScript来动态修改其样式,我们可以实现引用SVG图片的动态颜色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值