为什么有些事情用CSS就够了(css为什么不能用百分比)

yumo6668小时前技术文章2


JavaScript确实强大,这是毋庸置疑的。

但你知道吗?其实不一定每次都需要它。

事实上,JavaScript越少,网站性能往往越好。


为什么要减少JavaScript的使用?

想象你背着一个沉重的背包跑马拉松,这就是你网站加载多余JavaScript的感觉。

每一行JavaScript都会增加“负担”:

当然,我不是说完全不使用JavaScript。

只是当CSS能优雅完成某件事时,何必让事情复杂化呢?


1. 悬停显示子菜单

下拉菜单你见过不少。

大多数开发者习惯用JavaScript来控制显示隐藏,但其实CSS的 :hover 就能搞定。

HTML结构示例:

<nav>
<ul>
<li><a href="#">首页a>li>
<li><a href="#">关于a>li>
<li>
<button>博客 ↓button>
<ul>
<li><a href="#">新闻a>li>
<li><a href="#">访谈a>li>
<li><a href="#">旅游a>li>
<li><a href="#">艺术a>li>
<li><a href="#">科技a>li>
ul>
li>
<li><a href="#">联系a>li>
ul>
nav>

CSS样式:

nav > ul > li {
position: relative;
}
nav > ul ul {
position: absolute;
opacity: 0;
visibility: hidden;
transform: translateY(10px);
transition: all 0.3s ease;
}
nav > ul > li:hover > ul {
opacity: 1;
visibility: visible;
transform: translateY(0);
}

无需JavaScript,菜单平滑显示。


2. 纯CSS标签页切换

需要做标签页切换?

很多人第一反应是用JavaScript监听点击,然后显示隐藏内容。

但CSS的 :checked 伪类配合兄弟选择器 ~ 就能轻松实现切换。

HTML结构示例:

<input type="radio" id="tab1" name="tabs" checked>
<label for="tab1">标签1label>
<input type="radio" id="tab2" name="tabs">
<label for="tab2">标签2label>
<input type="radio" id="tab3" name="tabs">
<label for="tab3">标签3label>

<div class="tab-content" id="content1">标签1内容div>
<div class="tab-content" id="content2">标签2内容div>
<div class="tab-content" id="content3">标签3内容div>

CSS样式:

input[type="radio"] {
display: none;
}
label {
display: inline-block;
padding: 10px;
cursor: pointer;
background: #eee;
border: 1px solid #ccc;
}
input[type="radio"]:checked + label {
background: white;
font-weight: bold;
}
.tab-content {
display: none;
padding: 20px;
border: 1px solid #ccc;
}
#tab1:checked ~ #content1,
#tab2:checked ~ #content2,
#tab3:checked ~ #content3 {
display: block;
}

就这么简单,纯CSS实现功能完整的标签页。


3. 滚动捕捉(Scroll Snap)实现流畅导航

你在电脑上浏览YouTube Shorts或Instagram故事时,那种滑动到位的顺畅体验,其实是CSS搞定的!

利用 scroll-snap-type scroll-snap-align 轻松实现。

HTML结构示例:

<div class="scroll-container">
<div class="scroll-item">内容1div>
<div class="scroll-item">内容2div>
<div class="scroll-item">内容3div>
div>

CSS样式:

.scroll-container {
overflow-y: scroll;
height: 300px;
scroll-snap-type: y mandatory;
}
.scroll-item {
scroll-snap-align: start;
height: 100px;
background: lightblue;
margin: 10px 0;
}

两条CSS属性,实现丝滑滚动捕捉。


什么时候还得用JavaScript?

虽然CSS强大,但它不是万能的。

请在以下情况选择JavaScript:


总结

JavaScript固然强大,但CSS能做的,尽量用CSS!

这样代码更简洁,性能更好。

下次写简单的UI交互时,先问问自己:

这能用CSS完成吗?

答案往往是“可以”。

告诉我你最喜欢哪一个技巧!想看更多,记得点个赞!


前端AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击原文了解更多详情。



最后:
深入React:从基础到最佳实践完整攻略
python 技巧精讲
React Hook 深入浅出
CSS技巧与案例详解
vue2与vue3技巧合集



相关文章

浅谈position中absolute和relative

CSS position属性中absolute和relative很容易让人弄混,基本的概念什么着,你去参考W3C,就不啰嗦了--------------------------------------...

CSS box-sizing 属性详解(css中box属性有哪些)

box-sizing 是 CSS 的一个非常重要的属性。CSS 的 box-sizing 属性用于控制元素尺寸的计算方式,决定了元素的宽度( width )和高度( height )是否包含内边距(...

探索CSS position属性(css的position的属性有哪些)

提示:点击上方"蓝色字体"↑ 可以订阅噢!摘要 51RGB官方微信position是CSS中非常重要的一个属性,通过position属性,我们可以让元素相对于其正常位置,父元素或者浏览器窗口进行偏移。...

简单了解CSS3的all属性(css3 selector)

作者:张鑫旭(@张鑫旭)网址:http://www.zhangxinxu.com/wordpress/2016/03/know-about-css3-all/一、兼容性一些CSS文章,或者CSS文档,...

CSS实现常见元素水平、垂直居中(css中元素水平居中显示的方法?)

CSS实现常见元素水平、垂直居中(css中元素水平居中显示的方法?)

本文简单介绍如何通过CSS实现常见元素的水平、垂直居中。水平居中行内元素这种情况最简单,只需要将行内元素包括在一个display属性为block的父元素中,并且设置父元素text-align为居中即可...