惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
博客园 - 叶小钗
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
量子位
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
博客园 - Franky
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
不使用font-weight等CSS实现文字变瘦或变胖效果 « 张鑫旭-鑫...
张鑫旭,zhangxinxu · 2024-05-12 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=11182 鑫空间-鑫生活
本文欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可以联系授权。

封面图 火箭发射

一、没想到吧,还是SVG滤镜

今天继续SVG滤镜的学习,不过直接从实用的案例出手。

先看效果。

您可以狠狠地点击这里:使用feMorphology滤镜改变文字的粗细胖瘦demo

在我的1倍屏显示器下的效果如下所示:
文字加粗和变细效果

尤其是其中的变细效果,在Web中是比较难实现的。

文字变粗,除了可以使用font-weight属性设置加粗,还可以使用text-shadow投影属性模拟。

但是对于变细,据我所知,只能使用CSS描边属性近似模拟,在“-webkit-text-stroke文字描边CSS属性及展开”一文中对此技术有相关介绍。

不过使用-webkit-text-stroke让文字变细,需要背景色是纯色,使用场景有限。

但是这里即将要介绍的SVG方法,则不会有此问题,可谓是最佳的文字变细的技术实现。

二、文字变细是如何实现的?

使用的是SVG的feMorphology滤镜。

具体代码如下所示,首先在页面中插入一个仅包含SVG滤镜定义的<svg>元素,如下所示:

<svg xmlns="http://www.w3.org/2000/svg" width="0" height="0">
  <filter id="erode">
    <feMorphology operator="erode" radius="1" />
  </filter>
  <filter id="dilate">
    <feMorphology operator="dilate" radius="1" />
  </filter>
</svg>

然后,我们就可以按照正常的CSS和HTML代码进行处理了,相关代码如下所示:

data {
  font-size: 2.5rem;
}
.erode {
  filter: url(#erode);
}

.dilate {
  filter: url(#dilate);
}
<h4>苗条</h4>
<data class="erode">《CSS新世界》</data>
<h4>体胖</h4>
<data class="dilate">《CSS新世界》</data>

还是相当简单的。

三、feMorphology滤镜语法和作用

SVG feMorphology的作用是对输入的图形或者图形进行侵蚀或扩张,可以实现类似增肥或减薄效果。

支持3个属性值,分别如下:

in
输入的图像。支持内置的关键字,如SourceGraphic,就表示应用滤镜的元素,也可以是其他滤镜的运行结果(result属性的值)。
operator
指当前滤镜使用的算法。支持erode和dilate两个值,其中,erode是侵蚀的意思,可以让文字变瘦,dilate是扩张的意思,可以让文字加粗。
radius
表示侵蚀或扩张的尺寸大小。

还是非常简单的SVG滤镜。

在图像资源上的应用

图片元素往往像素点色彩丰富,在应用扩张或侵蚀效果后,会有些奇妙的变化。

例如下面这个例子,有一个原始图像,是这样的:

示意图

在应用erode和dilate效果后分别如下所示(实时渲染效果):

示意图
示意图

可以看到,应用erode侵蚀效果的图像更加阴暗,画面略显恐怖,无法直视。

而应用dilate扩张效果的图像更加明亮,画面略显朦胧,如若梦境。

最最关键的是——图片显示的尺寸也变了。

从视觉表现上看,erode的图片尺寸更小,dilate图片尺寸更大,扩展的尺寸就是设置的radius属性值。

大家遇到类似效果的特效的时候,可以试着用用。

四、噢啦,结束了

OK,本文内容就说这么多吧。

哎呀,幸好今天上午没有去钓鱼,不然这篇文章不知道何年马月才能产出。

我关于HTML的新书最后一版review已经反馈了,差不多快要上架了。

不过现在的纸质书不好卖啊,我估计能有个两三千册就不错了。

《CSS世界》三部曲,我打算过段时间开始弄个视频精讲系列,讲讲书籍内容,顺便聊聊其他的东西。

B站、微信视频,我还要再注册个抖音账号,更新下。

主力平台还是B站吧,对了,还有掘金,也可以。

最后,预告下,下篇文章将无JavaScript的图片马赛克技术。

尽请期待。

噢耶

本文为原创文章,欢迎分享,勿全文转载,如果实在喜欢,可收藏,永不过期,且会及时更新知识点及修正错误,阅读体验也更好。
本文地址:https://www.zhangxinxu.com/wordpress/?p=11182

(本篇完)