前端侦探

其他

纯CSS实现电梯导航!

我们经常会在博客、文档中看到类似这样的侧边导航目录,例如这种导航也被称为“电梯导航”(当然可能还有其他叫法,知道是这个交互就行)。它会随着内容的滚动而自动切换当前选中态,点击任意目录也会自动滚动到对应标题,就像这样通常要实现这样一个交互肯定少不了JS,常规的做法是监听滚动事件,也可以用IntersectionObserver监听元素的滚动位置状态,下面有一篇关于用IntersectionObserver的实现尝试使用JS
8月28日 下午 7:27
其他

SVG中的paint-order现在也支持普通文本了

0;}示意效果如下有关这个具体实现可以参考之前这篇文章:CSS和SVG实现文字渐变、描边、投影不过现在,你也可以像SVG一样,直接通过paint-order来改变层级了.txt{
8月21日 上午 9:15
其他

还在用 swiper.js 吗?CSS实现带指示器的swiper

always;}这样无论滚动有多快,都不会跳过任何一屏了还有一点,现在是有滚动条的,显然是多余的这里可以用::-webkit-scrollbar去除滚动条::-webkit-scrollbar{
8月14日 上午 9:18
其他

纯 CSS 实现的的3种扫光效果

介绍一个比较常见的动画效果。在日常开发中,为了强调凸显某些文本或者元素,会加一些扫光动效,起到吸引眼球的效果,比如文本的或者是一个卡片容器,里面可能是图片或者文本或者任意元素除此之外,还有那种不规则的图片,比如奖品图案这些是如何实现的呢?一起看看吧一、CSS
7月31日 下午 6:49
其他

快速了解 CSS light-dark 函数及其应用

介绍一个和主题密切相关的CSS特性:light-dark,有了它,可以更灵活的适配各种主题模式。一、prefers-color-scheme一般来讲,网站会有三种主题模式,白天、黑夜、自动跟随系统,比如下面的
7月24日 上午 10:56
其他

dom 获取不到?试试 CSS 动画监听元素渲染吧

在数据驱动视图的框架下,你最头疼的事情是什么?没错,就是获取dom。大部分业务逻辑都可以在数据层面进行处理,但有些情况就不得不去获取真实的dom,比如获取元素的宽高dom.offsetHeight或者调用某些dom方法等dom.scrollTop
1月15日 上午 9:21
其他

原生details支持手风琴模式了!

来兜个底。首先我们需要判断一下,也就是检测details到底支不支持name这个特性,这个很简单,我们只需要创建一个details元素,然后看这个属性是否存在就行了,如下'name'
1月8日 上午 9:26
其他

尝试借助CSS @container实现多行文本展开收起

实现多行文本展开收起的小技巧,非常巧妙,有兴趣的可以回顾一下。不过展开收起按钮的隐藏和显示采用了“障眼法”,也就是通过一个伪元素设置和背景相同的颜色覆盖实现的,如下时代在进步,CSS也在不断发展。
2023年12月18日
其他

快速了解 CSS @starting-style 规则

特性注定是冷门属性,主要是可替代性太强了,而且不知道什么时候才可以正式投入使用,现在就当提前了解吧。最后,如果觉得还不错,对你有帮助的话,欢迎点赞、收藏、转发
2023年11月20日
其他

原生“跨组件”通信方式

现在已经是“组件化”开发时代了。相信大家平时在vue或者react中都碰到过“跨组件”通信的需求,通常我们需要将数据放在一个公共的父级上,然后用context之类的方式传递下去,或者借用pinia这样的开源库去更好的管理这些数据。不过,大部分项目可能没有那么复杂,可能只有极少部分需要“跨组件”通信或者全局传递的,专门去引入一个全局状态管理库还是有一定成本的,不仅仅是性能开销,还有学习成本。另外,还有一些旧项目,由于前期组件设计未考虑周全,或者由于后期需求迭代,导致需要跨组件通信,此时再引入状态管理库也有很大的改造成本。框架用久了,可能有些都忘了,原生
2023年11月13日
其他

CSS 实现自适应导航栏

在移动端应用中,经常会碰到这样的导航栏,导航栏左边通常是一个返回按钮,中间是标题,右边是工具栏,如下值得注意的是,右侧的工具栏是不固定的,有可能有多个,也有可能没有,并且中间的标题是整体居中的,如果标题过长,还能出现省略号,各种适应场景如下这样的自适应标题如何实现呢?一起看看吧一、两种不完美实现假设布局是这样的
2023年10月23日
其他

CSS魔法!如何将任意CSS类型转换为数值?

20px));/*等同于?*/这就不得了了,如果此时的1rem是16px,那么浏览器会根据1rem的真实长度和20px做对比,相当于让两个带单位的长度做除法运算/*等同于*/transform:
2023年10月16日
其他

CSS mask 与 切图艺术

实现Chrome标签栏的技巧(跳转公众号)这次再来介绍一个比较简单、实用的“切图”方式。通过前面两个例子,可能你已经猜到要怎么做了。没错,就是先补全然后在设计软件中将黑色部分单独“切”出来然后在
2023年9月25日
自由知乎 自由微博
其他

重新学习 scrollIntoview

组件)https://ant.design/components/select-cn还有个「inline」属性,和「block」是一致的,只是用来定义「水平方向」上的对齐方式,也有
2023年9月18日
其他

Google 2023开发者大会简单回顾 - Web 平台新动向

从而不需要手动去输入账号密码https://developers.google.com/identity/passkeys?hl=zh-cnPrivacy
2023年9月15日
其他

裁剪的3种方式,CSS 如何隐藏移动端的滚动条?

在移动端开发中,经常会碰到需要横向滚动的场景,例如这样的但很多时候是不需要展示这个滚动条的,也就是这样的效果,如下你可能想到直接设置滚动条样式就可以了,就像这样::-webkit-scrollbar
2023年9月11日
其他

twitter 换新 logo 了,用 CSS 渐变来画一个吧~

(codepen.io)[4]三、总结一下非常简单、非常轻松的一篇分享,相信可以给大家带来一些启发,下面总结一下绘制要点:复杂的图像先拆解,先实现简单的部分x
2023年8月28日
其他

太丝滑了!了解一下原生的视图转换动画 View Transitions API

/*淡出动画*/}这也是为什么在使用了document.startViewTransition后整个页面会有淡入淡出的效果了为了让每个元素都有自己的过渡状态,这里需要给每个元素都指定名称.item{
2023年8月21日
其他

CSS 如何改变网格布局偶数行的排序?

flex中,可以直接通过order进行排序,order越大,元素越靠后。https://developer.mozilla.org/zh-CN/docs/Web/CSS/order比如,我们将第
2023年8月14日
其他

CSS 渐变中的颜色空间和色相插值

0)效果如下看到没,仅仅只有一个颜色,就完整的实现所有颜色的渐变,是不是非常方便?如果用锥形渐变(conic-gradient),就能轻易实现一个色相环,无需定义一堆中间颜色background:
2023年8月7日
其他

借助 input range 实现图片对比功能

之前在项目中做了一个图片对比的工具,演示如下有一些有趣实用的小细节,一起看看如何实现的吧一、布局布局比较简单,两张图片上下重叠在一起就行了 这里可以只给第一个图片设置绝对定位,有几个好处第1张图片层级自动就高了第1张图片仍在原处,也无需设置
2023年7月31日
其他

CSS 滚动驱动动画终于正式支持了~

(codepen.io)另外,还可以将animation-range合并到同一个动画中,在关键帧前面加上entry这些关键词,这样就无需指定animation-range中了,示意代码如下div{
2023年7月24日
其他

原来 CSS 渐变也可以只用一个颜色

➕image-20230629190245242这种图形就可以直接用「纯色渐变」进行绘制了,单纯的背景色可实现不了,关键点就是控制background-size,实现如下background:
2023年7月17日
其他

纯 CSS 实现带连接线的树形组件

::marker是通过list-style生成,所以要去除就很简单了旧版本浏览器需要通过专门的伪元素修改,::-webkit-details-marker和::-moz-list-bullet
2023年7月3日
其他

深入了解CSS颜色混合函数color-mix

颜色处理函数了,有了它,再也不需要用LESS、SASS等预处理工具了,还可以实现颜色动态更新,一起了解一下吧一、color-mix语法首先来看语法,比较简单color-mix(in
2023年6月26日
其他

如何理解 CSS step 函数中的 jump-* 关键词?

jump-none)表示不跳过,有多少帧就运行多少帧image-20230612101507944动画效果就是正常的1、2、3依次变化,1→2→3→1→2→3...Kapture
2023年6月19日
其他

原生 popover 终于要来了!

API来实现对悬浮层的控制,相比声明式而言更加灵活控制悬浮层的方法有showPopover、hidePopover、togglePopoverCSS伪类:open可以区分悬浮层的打开状态JS
2023年5月29日
其他

CSS MASK 实现一个 loading 效果

https://juejin.cn/post/6945023989555134494[8]锥形渐变只能画圆锥吗?conic-gradient
2023年5月22日
其他

一个有意思的CSS图片hover效果

0),}效果如下image-20230514011045132注意观察,两个重叠的部分不就是一个旋转45deg的矩形吗?如下image-20230514011432213可以任意改变角度div{
2023年5月15日
其他

纯 CSS 渐变绘制 Chrome 图标

渐变的强大。下面总结一下复杂的图形需要通过拆分转换成熟悉的形状径向渐变中的closest-side,表示最近的边,可以根据背景尺寸直接控制圆的大小多背景的情况下,前面的背景层级
2023年5月8日
其他

纯 CSS 实现一个计时器

布局可以很方便的控制各个元素的位置计时器开始和暂停其实就是动画的运行和暂停直接将动画取消就相当于重置了整个动画最后,如果觉得还不错,对你有帮助的话,欢迎点赞、收藏、转发❤❤❤​参考资料[1]
2023年4月17日
其他

别用图片了,CSS 遮罩合成实现带圆角的环形 loading 动画

https://developer.mozilla.org/zh-CN/docs/Web/CSS/gradient/conic-gradient[2]radial-gradient()
2023年4月4日
其他

锥形渐变只能画圆锥吗?conic-gradient 10大应用举例

0deg);}像之前这篇文章中的小三角就可以用这个方式来绘制image-20230304141000753二、箭头符号image-20230317210422497将三角形改变一下角度,比如div{
2023年3月20日
其他

CSS 颜色混合的N种方式

在项目中经常会碰到需要邻近色的场景,比如将一个颜色变深(浅)一点,下面是一个按钮的选中态image-20230304141000753如果出现一种颜色就定义一个变量,每次都要维护多个颜色变量太麻烦了。有没有办法只用一个颜色呢?在这里也就是,如何将一个颜色变浅一点?这样做的好处是,如果需要更换主题色,只用修改一个变量就行了,如下image-20230305133401950下面盘点我用过的一些方法一、透明度这应该是最容易想到的方式。将一个元素透明度降低不就颜色变浅了吗?假设
2023年3月6日
其他

你可能不知道的绝对定位

red;}在不设置任何偏移的情况下,可以看到,绝对定位元素始终跟随在文本后面,也就是说,现在仍然处于文档流中,如下image-20230223233946644如果仅设置一个方向,比如leftp{
2023年2月27日
其他

CSS 实现超过固定高度后出现展开折叠按钮

在平时开发中,经常会碰到一些需要判断高度的场景,比如当超过一定高度后,需要自动出现展开折叠按钮,如下传统的思路肯定是通过JS去动态计算容器的高度,但这样就涉及到加载时机的问题,获取早了可能元素还没渲染好,晚了又会有明显的卡顿感,或者会引起页面的闪烁。那有没有仅通过CSS的方法呢?当然也是有的!要实现上面这个例子的效果,需要解决以下几个问题:如何判断不同的高度?如何在不同的高度下展示隐藏点击按钮?如何点击切换?花几分钟一起看看吧😁一、先思考一下布局明确来讲,CSS现在已经有相关方法可以判断高度了,那就是CSS容器查询[1]。不过这个特性太高级了,目前几乎还不能实战,我们这次介绍一种更加传统的方式。如何判断不同的高度?换句话来说,什么样的布局在不同的高度下会有截然不同的效果?思考一下🤔🤔绝对定位?位置完全固定了,不行。flex布局?好像也只能控制水平方向上grid布局?这个水太深,没来得及研究(可能也行?)等等,除了以上,还有一个现在都避而不谈的浮动布局,为啥现在都很少用了呢,原因在于浮动布局非常脆弱,细小的尺寸变化都能引起整个布局的坍塌。我记得以前用浮动布局的时候,都需要尺寸精确,稍微出一点差错就导致浮动元素不知道跑哪去了...既然对尺寸非常敏感,是不是和本文的临界高度有一定联系呢?没错,今天要用到的方式就是浮动布局。二、浮动布局的奥妙一步一步,来搭建我们所需要的页面雏形。我们先来看一个有趣的现象,这里有一个容器,里面有3个子节点,分别为A、B、C,其中A左浮动,B、C右浮动
2023年2月20日
其他

原生 CSS Custom Highlight 终于来了~

*/}效果如下image-20230210191607226那么,如何让这些代码高亮呢?这就需要对内容进行关键词分析提取了,我们可以用现有的代码高亮库,比如highlight.js[14]。
2023年2月13日
其他

你可能不知道的dialog弹窗

13.45.13其实这里我是不太建议动画的,弹窗就是要反应快速,加了动画反而会拖累整体。另外,还可以通过:modal伪类来区分是普通弹窗还是模态弹窗dialog:modal{
2023年1月29日
其他

CSS & SVG 绘制写作网格线的3种方式

最近有同事问我这样一个问题:需要绘制一个自适应文本的写作网格线,设计稿是这样的写作网格其实就是一行行虚线,要求如下虚线的纵向间隔要跟随行高自适应,确保文本在每一栏虚线上虚线后面的背景是动态的,可以是纯色,可以是渐变,也可以是图片绘制这样的虚线,看似容易,其实暗藏玄机,下面一起看看有哪些实现方式吧一、纯色背景下的虚线首先来看这种简单情况,大可以通过两层渐变覆盖的方式实现。假设文本行高是2,先绘制水平方向的body{
2023年1月9日
其他

妙用 CSS 动画来实现颜色加深、减淡等混合操作

试验性支持你学会了吗?总的来说,在color-mix到来之前,这样一个小技巧还算是不错的解决方案。最后,如果觉得还不错,对你有帮助的话,欢迎点赞、收藏、转发❤❤❤参考资料[1]CSS
2023年1月3日
其他

CSS 如何根据背景色自动切换黑白文字?

在项目中,经常会碰到背景色不确定的场景,为了让内容文字足够清晰可见,文字和背景之间需要有足够的对比度。换句话说,当背景是深色时,文字为白色,当背景是浅色时,文字为黑色,就像这样:image-20221226102604970通常这种情况,大家可能会通过
2022年12月26日
其他

CSS 如何实现羽化效果?

最近碰到这样一个问题,在一张封面上直接显示书名,可能会存在书名看不太清楚的情况(容易受到背景干扰),如下image-20221210163633853为了解决这个问题,设计师提了一个“究极”方案,将书名背后的图片模糊一下,这个在
2022年12月12日
其他

CSS 如何设置自动滚动定位的间距?

scroll-snap还有一种情况是滚动捕捉:scroll-snap-type[6],这个属性可以让滚动时自动捕捉临界点。正常情况下,滚动临界点是紧贴滚动容器的,像这样Kapture
2022年10月31日
其他

CSS 实现自适应文本的头像

大家好,欢迎关注前端侦探在不声明容器类型的情况下,cqw等同于vw,也就是相当于把整个页面当成容器,这里希望将这个div作为参考对象,需要提前声明container-type,如下.con
2022年10月24日
其他

CSS 绘制一只思否猫

https://www.zhangxinxu.com/wordpress/2017/11/css3-radial-gradient-syntax-example/[6]
2022年10月18日
其他

快速了解 inert 属性

''这样去除之后,a就仅仅是一个普通的标签了,也不会被聚焦到了。不过这个方案需要在某处保留a原有的href属性,以便后续还原。如果用inert属性,直接就可以实现全方位的禁用了Kapture
2022年10月10日
其他

CSS transition 小技巧!如何保留 hover 的状态?

0而不是display:none,还有选中的背景色变化,由于background-image不支持过渡,所以换成了::before,然后单独用opacity控制等等一些细节,效果如下Kapture
2022年9月26日
其他

CSS 有了:has伪类可以做些什么?

无比强大的:has伪类终于来了~,一起看看吧相信大家最近对:has都有所耳闻,规范提及了那么久,却迟迟没有动静,最近浏览器终于开始支持了~🎉🎉:has伪类是一个非常强大的伪类,强大到难以置信,可以做很多梦寐以求的事情,很多以前只能更改
2022年9月16日
其他

还在用定时器吗?借助 CSS 来监听事件

动画设置infinite后配合animationiteration监听可以实现周期性触发效果可以直接通过:hover来控制台动画的暂停和播放当然,可以利用的不仅仅是以上几个案例,任何和
2022年9月13日
其他

如何让CSS计数器支持小数的动态变化?

也难以做到(或者说成本更高)的事情,比如过渡动画首先,再改进一下,很多小数都是百分比形式的,也就是0~1范围内,所以前面--percent可能是这样的值0.4869count::before
2022年8月29日