CSS中制作环形文本的方法及代码是什么
Admin 2022-08-24 群英技术资讯 1182 次浏览
今天这篇我们来学习和了解“CSS中制作环形文本的方法及代码是什么”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“CSS中制作环形文本的方法及代码是什么”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!在项目开发中,我们可能会遇到环形文本的需求,这个时候,怎样在代码以通俗易懂的前提下实现我们需要的效果呢?可能你会想到用一个一个的span元素计算出旋转的角度然后拼接起来,这个方案不仅非常麻烦,而且还给页面的DOM元素添加了很多不必要的臃肿的标记著作权归作者所有。你可能也会想到既然怕麻烦,不如就用图片吧,简单粗暴多好,可是这样的话后期如果要修改就需要修改原始图片,这不是我们想要的效果,那如何才能用css实现我们想到的效果呢,
我们可以通过一点内联SVG来很简单地完成。SVG本身就支持文本以任何路径显示,环形只不过是路径的一个特殊情况。我们来试一下!
SVG中文本按路径显示的基本方案是通过一个<textPath>元素来包裹我们的文本,把它放到一个<text>元素中。<textPath>元素通过id引用我们的路径中定义的<path>元素。在内联SVG中的文本还继承了我们的字体样式(除了line-height,因为这是SVG中默认的样式),所以我们不需要担心这个问题,就像我们引入一个外部的SVG图像一样。
可惜,
<textPath>只可以存在于<path>元素中,这就是我们为什么不可以使用可读性更好的<circle>元素作为我们的路径圆的原因。
假设我们要把“circular reasoning works because”这句话做成环形文本,占据一个圆圈的整个圆周,如图所示。

html:
<div class="circular"> <svg viewBox="0 0 100 100"> <path d="M 0,50 a 50,50 0 1,1 0,1 z" /> <text> <textPath xlink:href="#circle"> circular reasoning works because </textPath> </text> </svg> </div>
css:
.circular{
width: 200px;
height: 200px;
margin: 100px;
}
.circular path { fill: none; }
.circular svg { display: block; overflow: visible; }
好了,基础的代码就是这些,这样就可以实现一个环形文本的效果了,如果项目中有多个地方需要用到环形文本,但是你也不想写那么多重复的html元素,这个时候你可以用一段js为容器(.circular)添加内部元素:
function $$(selector, context) {
context = context || document;
var elements = context.querySelectorAll(selector);
return Array.prototype.slice.call(elements);
}
$$('.circular').forEach(function(el) {
var NS = "http://www.w3.org/2000/svg";
var svg = document.createElementNS(NS, "svg");
svg.setAttribute("viewBox", "0 0 100 100");
var circle = document.createElementNS(NS, "path");
circle.setAttribute("d", "M0,50 a50,50 0 1,1 0,1z");
circle.setAttribute("id", "circle");
var text = document.createElementNS(NS, "text");
var textPath = document.createElementNS(NS, "textPath");
textPath.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:href', '#circle');
textPath.textContent = el.textContent;
text.appendChild(textPath);
svg.appendChild(circle);
svg.appendChild(text);
el.textContent = '';
el.appendChild(svg);
});
页面中需要环形文本的地方加上容器就行:
<div class="circular">这里是环形文本这里是环形文本</div> <div class="circular">这里是环形文本这里是环形文本2</div>
效果如下:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章给大家分享的实现一个简易下拉菜单的代码,会使用到HTML、css3以及JS,小编觉得挺实用的,因此分享给大家做个参考,下图是实现效果,感兴趣的朋友就继续往下看吧。
CSS3动画当您在@keyframes中创建动画时,请把它捆绑到某个选择器,否则不会产生动画效果。通过规定至少以下两项CSS3动画属性,即可将动画绑定到选择器:•规定动画的名称•规定动画的时长今天介绍的是国外的CSS3AnimationCheatSheet、Animate.css、magiccss3animation,初次看到几个动画效果,感觉很酷,看了一下代 ...
HTML知识点概括前端三件套分别是HTML3,CSS5,JavaScript稍微介绍一下W3C标准:结构化标准语言(HTML)表现标准语言(CSS)行为标准(DOM,JavaScript)HTML是超文本标记语言,负责网页最基本信息的构造HTML的优势:市场需求量跨平台使用浏览器...
这篇文章主要介绍了CSS3动画和HTML5新特性详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
skew函数定义元素在二维平面上的倾斜转换。这种转换是一种剪切映射(横切),在水平和垂直方向上将单元内的每个点扭曲一定的角度。指定一个或两个参数,它们表示在每个方向上应用的倾斜量。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008