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

推荐订阅源

The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
罗磊的独立博客
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
G
Google Developers Blog
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
小众软件
小众软件
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
S
SegmentFault 最新的问题
H
Help Net Security
量子位

张鑫旭-鑫空间-鑫生活

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各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
直线等图形3D穿过文字的CSS实现 « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2021-02-14 · via 张鑫旭-鑫空间-鑫生活

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

松鼠与坚果

一、考考你

请使用CSS实现下面两张图所示的效果?

交叉穿越效果示意

一个效果是从中间穿过某个元素;一个效果是线条交叉穿过每个字符(例如字’g’,线条就像从中间的圈圈穿过去一样)。

不知各位读者有没有什么实现思路。

本文就介绍这种直线等图形的从元素中间穿越过去的CSS小技巧。

更新于2021-11-04
没想到在实际项目中应用了,设计师设计了这样的3D环绕文字效果,使用本文的技术完美实现。

环绕效果

环绕的图像右侧在文字元素上,左侧在元素下方,真 3D 视角效果。

二、实现原理-微小的3D变换

首页,让元素处在3D视角环境中,可以设置transform-style属性值为preserve-3d,在本例中无需设置3D视角距离,因此,直接下面一行CSS代码就可以了,perspective属性无需设置。

.container {
    transform-style: preserve-3d;
}

接下来要实现元素的穿过效果基本上就下面几个CSS就可以:

  • 水平方向从元素中间穿过,可以设置rotateY旋转,一个极小的旋转值就可以,例如:
    .through {
        transform: rotateY(-1deg);
    }
    .through {
        transform: rotateY(1deg);
    }

    其中,负的旋转角度值是从前往后穿越,正旋转角度值是从后往前穿过。

  • 从元素后面穿过,则可以设置translateZ为正值,例如:
    .below {
        transform: translateZ(1px);
    }
  • 从元素前面面穿过,则可以设置被穿越元素的translateZ()函数值为负,例如:
    .over {
        transform: translateZ(-1px);
    }

拿穿越“爱心”图形效果举例,相关的HTML和CSS代码如下所示:

<div class="heart-through">
    <i class="arrow"></i>
    <span class="heart">♥</span>
</div>
.heart-through {
    font-size: 100px;
    position: relative;
    transform-style: preserve-3d;
}
.arrow {
    position: absolute;
    left: 1rem; right: 1rem; top: 0; bottom: 0;
    height: 20px;
    margin: auto;
    background-color: currentColor;
    clip-path: polygon(0 40%, calc(100% - 12px) 40%, calc(100% - 16px) 0%, 100% 50%, calc(100% - 16px) 100%, calc(100% - 12px) 60%, 0 60%);
}
.heart {
    display: inline-block;
    transform: rotateY(-1deg);
    color: red;
}

//zxx: 如果你看到这段文字,说明你现在访问是体验糟糕的垃圾盗版网站,你可以访问原文获得很好的体验:https://www.zhangxinxu.com/wordpress/?p=9827(作者张鑫旭)

比较核心关键的CSS代码已经用红色高亮了。

至于字符穿越效果实现,都是基于同样的原理,具体就不展示了。

有demo页面,源码和效果都有,您可以狠狠地点击这里:CSS一箭穿心和直线交叉穿越文字demo

可以看到如下所示的效果:

交叉穿越效果示意

三、其他一些话

如果您对CSS 3D transform变换比较了解,则本文所说的CSS小技巧可以很快就消化吸收,如果还不是很了解,则可以参考我之前写的这篇文章:“好吧,CSS3 3D transform变换,不过如此!”。

本文技巧实现的核心在于“微小的变化”,一定要微小,否则用户可能会看出端倪,也就是会看到意料之外的3D变化。

怎么个“微小”法呢?例如,rotateY旋转都在1degtranslateZ的纵深位置调整也是1px,实际上,旋转角度0.5deg也是有效果的,不过用户视觉感知差异不大,因此,演示页面还是使用了1deg

另外,如果希望的上下穿越,而不是水平方向,则需要使用rotateX()函数。

好,本文内容就这些,介绍一个CSS小技巧,希望关键时候可以帮到您。

感谢阅读,欢迎转发,欢迎分享。

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

(本篇完)