解决svg标签在HTML中的渲染问题

HTML 笔记(八):SVG 阅读详情

在做项目时候我使用appendChild()方法将svg类的标签添加到DOM树中时,它竟然没有渲染。百科中说:SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。所以猜测可能是html与xml两种语言的差异造成的。

方法一:使用$(‘svg’).html()

<script>
  let html=`<circle xmlns="http://www.w3.org/2000/svg"  cx="${x0}" cy="${y0}" r="6" fill="#00ff00" stroke="#ffffff" stroke-width="3"   style="cursor: pointer;"/>`
  $('svg').html(html);
</script>

方法二:setAttribute()

let path=document.createElementNS('http://www.w3.org/2000/svg', 'path');
path.setAttribute(k,attr)


//函数封装
function makeSvg(tag, attrs){
       let el = document.createElementNS('http://www.w3.org/2000/svg', tag);
       for (var k in attrs)
         el.setAttribute(k, attrs[k]);
       return el;
},
探索如何将html和svg导出为图片 虽然笔者的实现很简单,但是这个库实际上有一千多行代码,那么它到底多做了些什么呢,点个关注,我们下一篇文章再见。 阅读详情

相关推荐

从高德、百度地图下载POI数据?用这个工具5分钟搞定GCJ02/BD09到WGS84的坐标纠偏

本文详细解析了高德、百度地图POI数据坐标偏移问题,并提供了从GCJ02/BD09到WGS84的高效转换方案。通过开源工具如coordtransform和ArcGIS等专业软件,实现毫米级精度的坐标纠偏,适用于商业选址、GIS分析等场景,显著提升数据准确性和工作效率。

weixin_26789847的博客 449

svg图片如何渲染到页面,以及svg文件的上传

需要实现从本地目录下去获取所有的svg图标进行预览,将选中的图片显示在另一个地方,再上传。编码后的SVG图片数据,可以直接在HTML/CSS中使用,进行图片的预览。之前将svg转成文件后上传,服务器显示的文件是。一开始的错误写法:将svg文档转成字节流了。🔸【图3】:svg元素的内容,通过。🔸正常的传参显示:svg元素的内容。将获取到的SVG文件内容转换成。🔸如果还想获取该svg图片的。🔸svg内容的两种形式的区别。的,只有 svg 路径数据。上,一般用于图片的预览。, 以及一个匹配文件的。

stay hungry, stay foolish 3413

5分钟快速搭建:使用ros1_bridge实现ROS2容器与ROS1主机的无缝通信

本文详细介绍了如何在5分钟内快速搭建基于ros1_bridge的通信方案,实现运行在Docker容器中的ROS2节点与宿主机ROS1系统的无缝数据交换。通过环境隔离、Docker容器化部署及选择性桥接配置,该方案能有效整合新旧系统,避免大规模代码重构,是机器人项目渐进式升级的实用策略。

weixin_29268637的博客 179

HTML5矢量图形SVG

html中的SVG

weixin_52629158的博客 3870

5分钟搞定Unity+Visual Studio开发环境配置(含C#游戏开发工作负载)

本文提供了一份详细的Unity与Visual Studio开发环境配置指南,帮助开发者在5分钟内完成C#游戏开发工作负载的设置。从Unity Hub安装到Visual Studio关键组件选择,再到常见问题排查,全面覆盖环境搭建的各个环节,显著提升游戏开发效率。

weixin_29014237的博客 248

T265摄像头插着开机后,需要重新插拔才能正常启动

T265摄像头插着开机后,需要重新插拔才能正常启动

qq_35598561的博客 1078

SVG/Canvas会触发重绘(repaint)和重排/回流(reflow)吗?

SVG/Canvas会触发重绘(repaint)和重排/回流(reflow)吗?

ysugarr 3684

SAP 发货在途库存管理:POD确认差异下的2种后续调整方案对比

本文详细解析了SAP发货在途库存管理中POD确认差异后的财务调整方案,对比了移动类型417和555 T两种处理方式的适用场景及财务影响。通过实际案例说明如何优化POD流程,减少库存差异损失,提升供应链管理效率。特别适合SAP SD模块用户及供应链管理人员参考。

chiman6219的博客 394

jquery中html函数将标签传入后变小写问题,并且空格会转换为&nbsp

jquery中html方法将标签传入后变小写问题,并且空格会转换为&nbsp 问题描述 后端rul编码传入前端后放入<p>标签中,使用$("#content").text();取出后解码后在使用$("#content").html(解码后的内容);放入p标签中后 异常代码 根据对比可以看到空格变成&nbsp src中的地址全都变小写了 <img&nbsp;src="\jeebbs\download\getresource.jspx?attachmenti

shixiaodongmain的博客 872

基于Playwright的雪球网股票情绪数据自动化采集实战

网络爬虫是自动化获取互联网公开数据的关键技术,其核心原理在于模拟浏览器行为或直接发送HTTP请求以解析网页内容。在金融科技与量化分析领域,实时、稳定的数据源具有极高的技术价值,能够为市场情绪分析、因子挖掘提供基础。面对采用动态加载、复杂反爬机制的现代单页应用,传统的请求库与Selenium方案在稳定性与隐蔽性上面临挑战。本文聚焦于利用Playwright这一现代浏览器自动化工具,通过模拟真实用户交互、监听网络请求,构建一个能够稳定采集雪球社区实时讨论热度的解决方案。该方案不仅解决了动态内容渲染问题,还通过请

weixin_42529328的博客 585

【DenseFusion系列目录】代码全讲解+可视化+计算评估指标

DenseFusion是2019年李飞飞等提出的用于6D姿态估计的网络。它是一种端到端的结构,输入为RGB-D数据,输出为某个物体的6D姿态。主要贡献就是针对颜色特征和几何特征提出了一种像素级稠密融合的方式。在LineMOD数据集和YCB-Video数据集上进行了实验。本文对该网络进行完整的复现,详细解析了源代码中的重要内容。由于本人刚接触姿态估计方面的内容,因此有些解析部分包含很基础的知识,放在【DenseFusion详解】专栏。除此之外,本文在源代码的基础上进行了后续评价指标的计算以及结果的可视化,这些

weixin_44564705的博客 9417

mp-html组件中SVG渲染异常问题分析与解决

在使用mp-html组件进行富文本渲染时,开发者遇到了一个关于SVG图像显示的问题。具体表现为:三个SVG图像中,前两个无法正常显示,而第三个可以正常渲染。有趣的是,这些无法在mp-html中显示的SVG图像,在另一个解析器jyf-parser中却能够正常展示。 ## 问题分析 通过分析开发者提供的三个SVG文件,我们可以发现以下几个关键点: 1. **SVG属性格式差异**:前两个无法显示...

gitblog_07702的博客 408

Codex入门24-效率倍增秘籍(终极总结:10个让你开发速度翻倍的Codex高级技巧)

专栏收官之作!经过前23篇的系统学习,你已经掌握了 Codex CLI 的核心用法。本文浓缩10个实战验证的高级技巧:管道化提示词将复杂任务拆成递进指令链,模板化 SKILL.md 打造个人技能库,Shell 别名让操作快如闪电,多模型切换省钱又高效……这不是理论课,每个技巧都配有可直接运行的代码。掌握全部10招,构建你的 AI 开发工作流闭环,让开发速度真正翻倍!

yueyeguzhuo的专栏 189

SVG在HTML5中的使用

SVG在HTML5中的使用 SVG(Scalable Vector Graphics)是可伸缩矢量图形的缩写。它是一种图形(图片)格式,其中以XML指定形状。大多数Web浏览器都可以显示SVG。SVG 是由万维网联盟(W3C)自 1999 年开始开发的开放标准。 SVG是一种用于描述二维的矢量图形,基于 XML 的标记语言。作为一个基于文本的开放网络标准,SVG能够优雅而简洁地渲染不同大小的图形,并和CSS,DOM,JavaScript和SMIL等其他网络标准无缝衔接。本质上,SVG 相对于图像,就

cnds123的专栏 2344

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SVG中插入HTML标签

设计想要在SVG绘图中做折行打点出省略号的功能,先前的代码需要在IE环境下运行,使用JS函数进行分割替换打点,然后还要手动定位,很是麻烦,不过当时的样式不是很复杂,还要适配IE就迁就了,这次除了两行打点功能之外, 还要考虑到整体内容做一个自适应居中效果,而且不考虑IE适配,索性使用。只是一个普通的XML元素,不具备HTML的含义,传统的开发中,我们写的HTML语法本身具有默认格式,在SVG这种XML语言中,div没有特殊含义,所以需要为他指明HTMl的命名空间.具有四个属性,分别为。如果不指定命名空间,

ZHZS123的博客 2218

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SVG渲染顺序及z轴显示问题(zIndex)

SVG是严格按照定义元素的顺序来渲染的,这个与HTML靠z-index值来控制分层不一样。 在SVG中,写在前面的元素先被渲染,写在后面的元素后被渲染。后渲染的元素会覆盖前面的元素,虽然有时候受透明度影响,看起来不是被覆盖的,但是SVG确实是严格按照先后顺序来渲染的。 注意:SVG是以XML定义的,所以是大小写敏感的,这点与HTML不一样。 关于z轴显示问题的解决方案: 注:动态移动对应的标签在S...

weixin_33971977的博客 4433

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SVG 转图像项目常见问题解决方案

SVG 转图像项目常见问题解决方案 项目基础介绍 SVG 转图像项目(svg-to-image)是一个开源项目,旨在将 SVG 文本转换为可以在 HTML5 Canvas 上绘制的图像。该项目的主要功能是通过 Blob 和 URL.createObjectURL 将 SVG 字符串转换为 HTMLImageElement,从而支持在 Canvas 上渲染 SVG 图像。对于不支持 Blob 的浏览...

gitblog_00436的博客 844

dagre-d3标签系统完全指南:HTML、SVG和文本标签的终极用法

dagre-d3是一个基于D3.js的流程图渲染库,它提供了强大的标签系统,支持HTML、SVG和文本三种标签类型。本文将详细介绍如何使用这些标签功能来创建丰富多样的流程图可视化效果。 ## 为什么选择dagre-d3标签系统? dagre-d3的标签系统为开发者提供了极大的灵活性,无论是简单的文本标签还是复杂的交互式HTML内容,都能轻松实现。通过[lib/label/](https://l

gitblog_00189的博客 722

HTML中如何修改SVG的内部标签

一、通过iframe、object、embed展示SVG图片 <embed id="svgImg" src="http://。。。。/power/upload/19943b67-0f49-4c5f-83f0-566d982f1aab.svg"></embed> var svgImg = document.getElementById("svgImg").getSVGDocument(); for (var i = 0; i &l

HYQ_java的博客 1170

svg js动态生成svg标签

1、声明svg命名空间 let xx="http://www.w3.org/2000/svg"; 2、创建svg标签 let x=document.createElementNS(xx,'svg标签名称'); 3、操作svg标签 操作方法和dom标签一样 属性x.setAttribute('xxx','xxx'); 文本x.innerHTML='xxx'; ... 封装创建标...

weixin_43294560的博客 3748

vue动态渲染svg、添加点击事件

欢迎关注[前端小讴的github],阅读更多原创技术文章 业务需求(vue项目中) 1.v页面展示svg内容 2.监听svg内部的点击事件 3.动态改变svg内部元素的属性和值 html标签 经多次实验,用embed、img等标签改变src属性的方式,均无法实现上述全部功能(尤其是svg内部点击事件),最终采用**Vue.extend()**方法完整实现,代码也较为简洁,html结构如下: &...

【前端 · 小讴】的博客 8750

SVG与foreignObject元素

可缩放矢量图形基于标记语言,用于描述二维的矢量图形。作为一个基于文本的开放网络标准,能够优雅而简洁地渲染不同大小的图形,并和、、等其他网络标准无缝衔接。图像及其相关行为被定义于文本文件之中,这意味着可以对其进行搜索、索引、编写脚本以及压缩,此外这也意味着可以使用任何文本编辑器和绘图软件来创建和编辑。是可缩放矢量图形的缩写,其是一种用于描述二维矢量图形的可扩展标记语言标准,与基于像素的图像格式(如和)不同,使用数学方程和几何描述来定义图像,这使得其能够无损地缩放和调整大小,而不会失真或模糊。图像由基本形状(如

太阳当空照,花儿对我笑,微风轻轻拂,心情无限好。 1701

SVG基础以及使用Javascript DOM操作SVG

简介在HTML中使用SVG " style="">分组元素 解决text文本排版问题 通过Javascript DOM控制SVG 设置文本获取元素高宽和坐标事件处理自定义的z-index层级属性更多DOM API为什么不使用jQuery? 简介 首先要明白SVG是基于XML格式定义图像的一种技术,并且是矢量的,也就是说在不同分辨率下都显示得很好。想到这里,有

多多 3万+

g标签 怎么设置svg_如何获取SVG中g标签的宽高及位置坐标

获取SVG中g标签的宽度高度及位置坐标1. 问题的出现对于普通的HTML元素,有很多获得其宽度width、高度height、距左left、距顶top等属性的方法:类似offsetWidth,clientWidth,width之类的,通过查看DOM元素的属性可以一探究竟:image.png然而当遇到SVG的g标签的时候,却碰到问题了:明明在开发者工具中可以显示的宽高、位置坐标等属性,通过原有的off...

weixin_42130889的博客 1943

HTML/CSS——网页SVG ICON(小图标)解决方案

一、基本概念 SVG: SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失 SVG 是万维网联盟的标准 SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体 二、SVG 的历史和优势 在 2003 ...

无限迭代中...... 8879

img标签如何将<svg></svg>数据渲染出来

​ 元素的宽度和高度,以指定 SVG 图像的显示尺寸。你可以根据你的需求选择其中一种方法来使用。​ 数据编码为 Data URL,并将其作为 ​。​ 数据编码为 Data URL,并将其作为 ​。​ 元素来嵌入 SVG 数据。​ 属性值传递给它。同时,我们可以设置 ​。​,并将 SVG 数据作为 ​。在上述示例中,我们使用 ​。​ 数据作为图像插入到 ​。在上述示例中,我们将 ​。这两种方法都可以将 ​。​​ 数据插入到 ​。​ 属性值传递给 ​。​ 元素,并设置 ​。

JackieDYH的博客 3528
上一篇: 前端常见跨域解决方案
下一篇: JS中this的指向问题(全)
_Faust_
博客等级 码龄9年 8粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值