4个可以用CSS 实现复杂JavaScript 效果的技巧

e46571ccf94f44c093353b2fef26202c.jpeg

英文 | https://javascript.plainenglish.io/sometimes-you-dont-need-javascript-at-all-73a6a226a1c3

最近,我学到了一些比较实用的CSS编程技巧,之前很多效果不得不求助于 JavaScript 来实现,但是今天,我学会了直接用CSS 来完成。

相信看完这篇你也会爱上CSS,一起来看看吧!

1.轮播动画

没想到用CSS就能做到平滑过渡的效果,大家可以试试滑动图片,会有惊喜给你!

e33ff83c0e098eda168b6dc2d8233a2e.gif

HTML

<div class="box">
  <img src="https://images.unsplash.com/photo-1518489913881-199b7c7a081d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1774&q=80" alt="">
  <img src="https://images.unsplash.com/photo-1484446991649-77f7fbd73f1f?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1770&q=80" alt="">
  <img src="https://images.unsplash.com/photo-1512005286309-e5b890ca36b6?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2064&q=80" alt="">
</div>

CSS

*{
  margin: 0;
  padding: 0;
}
.box{
  // Key CSS
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  display: flex;
  overflow-x: scroll;
}
.box img{
  height: 100vh;
  min-width: 100vw;
  // Key CSS
  scroll-snap-align: start;
}

2.颜色选择器

你必须使用过类似此组件的组件才能获得颜色,我们通常需要编写复杂的 JavaScript 来实现它的功能,但现在我们可以通过 input 元素来实现。

8163f05a97a8e7e6540ecdc0fdd6b65a.gif

我们只需要将 type 设置为“color”即可获得浏览器原生支持的颜色选择器。

<input type="color" value="#FF99FF" />

你可以尝试单击图片并为猫赋予新的颜色。

演示地址:https://codepen.io/qianlong/pen/vYRmypd

3.打字效果

你能想象只用 CSS 实现打字机效果吗?这真是太神奇了。

演示地址:https://codepen.io/qianlong/pen/ZExKBPW

HTML

<h1>Welcome to medium</h1>

CSS

@-webkit-keyframes typing { from { width: 0; } }
@-webkit-keyframes blink-caret { 50% { border-color: transparent; } }


h1 { 
    font: bold 300% Consolas, Monaco, monospace;
    border-right: .1em solid black;
    width: 16.5em; 
    width: 21ch;
    margin: 2em 1em;
    white-space: nowrap;
    overflow: hidden;
    -webkit-animation: typing 7s steps(21, end),
    blink-caret .5s step-end infinite alternate;
}

4.平滑滚动到顶部

当网页过长时,我们通常会提供一个按钮,让用户可以流畅地滚动到顶部。我们曾经使用 JavaScript 来做到这一点。

const scrollToTop = () => {
  const c = document.documentElement.scrollTop || document.body.scrollTop


  if (c > 0) {
    window.requestAnimationFrame(scrollToTop)
    window.scrollTo(0, c - c / 8)
  }
}

演示地址:https://codepen.io/qianlong/pen/NWYpqZq

我们真的需要那么多麻烦吗?是的,现在,我们只需要一行 CSS 就可以做到。

html, body {
  scroll-behavior: smooth;
}

演示地址:https://codepen.io/qianlong/pen/QWmvKZx

最后

如果你觉得我今天分享这些CSS技巧对你有帮助的话,请记得点赞我,关注我,并将它分享给你的朋友,也许能够帮助到他。

最后,感谢你的阅读,祝编程愉快。

学习更多技能

请点击下方公众号

8ebf99c51f31ff316702d094bc6155fb.gif

e5d101093a386593bafc5d5a0e240060.jpeg

49897036ac21d7376e2f498c2645430d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值