Web技巧(08)

前段时间看到群里有不少同学在讨论, 目前阶段哪些交互行为可以直接使用CSS来实现,而不再依赖JavaScript 。后来想想,这应该也是一个值得我们探讨的话题,后来一想,要不这一期我们就来聊聊,哪些交互行为,可以不再依赖JavaScript,直接使用CSS来实现。

CSS Slider

Slider效果在Web中是非常常见的一种效果,像 Swiper 这样的库是一个非常优秀的库,用于实现Slider效果最好不过了。如果我们抛开JavaScript使用纯CSS也可以实现一些简单的Slider效果,不同的是要实现自动播放会有一定的难度。

通过 链接的锚点来实现。除此之外,还可以配合 input[type="radio"] 、CSS的 :target 选择器

如果我们想要实现一个自动播放的效果,需要配合CSS的 animation 相关的特性一起来实现,比如下面这个示例:

如果不是自播放的Slider,CSS实现方案有很多种,对于自动播放的,那么就需要具备 animation 和Web动画相关的知识 。随着滚 动特性 滚动捕捉特性 越来越完善,对于CSS实现Slider的效果会越来越完美。

有关于CSS实现的Slider效果更多案例, 可以点击这里查阅

CSS Accordion

使用CSS实现手风琴的效果和实现Slider的效果类似,可以通过 [input type="radio"]:target:hover 等方法来实现。比如下面这个效果:

如果你不想太纠结或者说徒手撸一个手风琴效果的话,也可以尝试着使用在线的生成工具,比如 CSS Accordion Slider 就蛮不错的:

有关于CSS手风琴更多的效果可以点击 这里这里 查阅。

实现Accordion的效果除了CSS之外,还有一个更优秀的方案,那就是采用HTML5的

标签,比如下面这个案例:

有关于

更详细的介绍可以阅读《 借助HTML5 details,summary无JS实现各种交互效果 》一文。另外,这两个标签结合在一起还可以 实现一些其他的交互效果

CSS Modal

模态弹出框也可以使用 :target 或借助 radiocheckboxchecked 来完成:

同时还可以借助 animation.css 中提供的 animation 效果 ,让Modal的出现和隐藏带有一些动效。比如像 Light Modal提供的效果

有关于CSS实现Modal的更多效果 可以点击这里查阅

CSS Tabs

原理是一样的, :targetchecked 配合 ~ 一起。有关于 CSS实现Tabs 更多的 案例 可以 点击这里

CSS Tooltips

提示框通常是借助CSS状态选择器中的 :hover:focus 来实现,也是非常常见的一个效果:

如果要实现点击显示或隐藏提示框,那还得借助 checkboxradiochecked 来完成。除此之外还可以使用 :focus-within 来实现提示框的效果

有关于Tooltip更多的效果 可以点击这里查阅

CSS Dropdown Menu

下拉菜单,采用 :hover 实现下拉菜单已是很经典的技术了,比如下面这个效果:

现如今可以使用 :focus-within 实现 Off-screen 导航菜单的效果:

前面提到使用

来实现手风琴的效果,其实使用这两个标签也可以很好的实现下拉菜单的效果。

有关于 下拉菜单更案例可以点击这里查阅

CSS Range Slider

在上一期中的末尾提到了HTML5的 实现进度条的效果:

对于滑块的效果,可以直接使用 来实现:

@Ana Tudor在她的《 A Sliding Nightmare: Understanding the Range Input 》一文中详细介绍了如何使用 ,有兴趣的同学可以看看。

我们也可以使用 CSS的 mask 相关的特性 ,让Progress的效果更美:

有关于滑块更多的效果 可以点击这里查阅

CSS Star Rating

评分系统,也可以使用CSS来完成,不过需要配合 inputchecked 一直处理:

有关于评分系统更多的案例 可以点击这里查阅

CSS Scrollbar

在Webkit内核下,可以借助Scrollbar相关的伪元素选择器实现自定义滚动条效果:

小结

文章中提到的这些效果,在以往较多情形之下,或者说一定得依赖JavaScript一起才能完成。随着CSS特性越来越强大,以前很多常见的Web效果(交互效果)就可以使用纯CSS来完成。上面是我能想到的一些常见效果,效果中常用到的是 :target:focus-withininputchecked~ (或 + )选择器来完成。虽然CSS能实现这些效果,但对于HTML的结构有较强的要求,如果结果没有写好,要实现这些相应的交互效果就较为困难。另外,HTML5的一些新标签也能很好的帮助我们实现一些效果,比如使用

实现手风琴,下拉菜单等效果,使用 type="range"progressmeter 可以实现一些进度条和滑块的效果。

如果您在这方面有相应的经验,欢迎在下面的评论中与我们一起分享。