12个实用的CSS技巧,让你的开发效率翻倍

更新日期: 2025-10-05阅读: 38标签: 技巧

前端开发时,我们经常用JavaScript解决各种问题,却忽略了css本身就有很多好用但不为人知的功能。掌握这些CSS技巧,能让你写更少的代码,做更多的事情。

下面这12个CSS功能,学会了能让你的开发效率大大提升。


1. 用accent-color统一表单颜色

以前要改变复选框、单选按钮的颜色,需要写很多代码覆盖默认样式。现在只需要一行:

input[type="checkbox"],
input[type="radio"],
input[type="range"] {
  accent-color: #4a90e2;
}

这样做的好处是既改变了颜色,又保留了系统原生的交互效果,用户体验更好。


2. 自定义输入光标的颜色

在深色背景的输入框里,黑色的光标往往不太协调。用caret-color可以轻松调整:

.dark-input {
  background: #2d3748;
  color: white;
  caret-color: #63b3ed; /* 蓝色光标 */
}


3. 用currentColor保持颜色一致

currentColor会自动使用当前的文字颜色,这样就能确保相关元素的颜色保持一致:

.icon-button {
  color: #e53e3e; /* 主色 */
  border: 2px solid currentColor; /* 边框自动用同样的红色 */
  background: none;
}

.icon-button:hover {
  color: #c53030; /* hover时边框颜色也会自动变深 */
}


4. 自定义列表标记样式

不用额外加span标签,直接用::marker就能改变列表标记的样式:

.custom-list li::marker {
  content: "➤"; /* 自定义标记 */
  color: #38a169;
  font-size: 1.2em;
}

.numbered-list li::marker {
  content: counter(list-item) ". "; /* 自定义编号格式 */
  font-weight: bold;
}


5. 更友好的表单验证样式

:user-valid和:user-invalid只在用户实际输入后才显示验证状态,比:valid和:invalid更符合使用习惯:

.form-input {
  border: 2px solid #e2e8f0;
  transition: border-color 0.3s;
}

.form-input:user-valid {
  border-color: #48bb78; /* 有效时变绿色 */
}

.form-input:user-invalid {
  border-color: #f56565; /* 无效时变红色 */
}


6. 根据输入状态设置样式

用:placeholder-shown可以判断输入框是否为空,并应用不同的样式:

.search-box:placeholder-shown {
  background: #f7fafc; /* 空的时候用浅灰色背景 */
}

.search-box:not(:placeholder-shown) {
  background: white; /* 有内容时用白色背景 */
}


7. 快速重置元素样式

all: unset可以一次性移除元素的所有默认样式,让你从头开始定制:


.reset-component {
  all: unset; /* 清除所有默认样式 */
  display: block;
  padding: 12px;
  background: #4299e1;
  color: white;
}


8. 简化的定位写法

inset属性可以一次性设置top、right、bottom、left四个方向的值:

.overlay {
  position: fixed;
  inset: 0; /* 等同于top:0; right:0; bottom:0; left:0; */
  background: rgba(0, 0, 0, 0.5);
}

.modal {
  position: absolute;
  inset: 20px 40px; /* 上下20px,左右40px */
}


9. 让多行文本分布更均匀

text-wrap: balance可以让多行标题文字的分布更加美观:

.card-title {
  text-wrap: balance;
  max-width: 65ch; /* 限制最大宽度效果更好 */
}

这个功能比较适合标题等短文本,长段落建议用text-wrap: pretty。


10. 简化选择器写法

:is()可以让你不用重复写相同的前缀:

/* 原来的写法 */
.card h1,
.card h2, 
.card h3 {
  margin-bottom: 0.5em;
}

/* 简化后的写法 */
.card :is(h1, h2, h3) {
  margin-bottom: 0.5em;
}


11. 固定元素宽高比

aspect-ratio可以轻松实现响应式的比例容器:

.video-wrapper {
  width: 100%;
  aspect-ratio: 16 / 9; /* 始终保持16:9比例 */
  background: black;
}

.avatar {
  width: 120px;
  aspect-ratio: 1; /* 正方形 */
  border-radius: 50%;
}


12. 创建滚动定位效果

scroll-snap-type可以让滚动时自动对齐到特定位置:

.image-gallery {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory; /* 水平滚动,强制对齐 */
  gap: 1rem;
}

.image-gallery img {
  scroll-snap-align: start; /* 每张图片对齐到起始位置 */
  flex: 0 0 auto;
  width: 300px;
  height: 200px;
  object-fit: cover;
}


实际使用建议

这些CSS功能在现代浏览器中支持度都不错,但在实际项目中建议:

渐进增强:把这些功能当作体验增强,确保即使不支持,核心功能也不受影响

特性检测:用@supports来判断浏览器是否支持某个功能:

@supports (aspect-ratio: 1) {
  .modern-card {
    aspect-ratio: 3/4;
  }
}

@supports not (aspect-ratio: 1) {
  .modern-card {
    height: 400px; /* 备用方案 */
  }
}

团队统一:在团队内部统一这些功能的使用方式,保持代码一致性

从简单开始:先从accent-color、inset这些简单的功能开始用起,慢慢尝试更复杂的功能


浏览器兼容性提醒

虽然这些功能大部分现代浏览器都支持了,但如果你需要支持老版本浏览器:

  • 使用autoprefixer等工具自动添加前缀

  • 始终提供备用样式方案

  • 在Can I Use网站上查看具体功能的支持情况


总结

这些CSS技巧最大的好处是让代码更简洁、更易维护。比如用inset代替四个定位属性,用:is()简化选择器,都能减少代码量。而且浏览器原生支持的这些功能,通常比用JavaScript实现的性能更好。

不需要一次性全部记住,可以先收藏起来,在实际项目中遇到相应需求时再来查阅。用熟练之后,你会发现写CSS变成了一件更加愉快的事情。

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/article/detial/12944

微信小程序技巧_你需要知道的小程序开发技巧

一直以来进行了比较多的微信小程序开发... 总会接触到一些和官方组件或 api 相关或其无法解决的需求,于是决定在这里小小的整理一下微信小程序开发的一些技巧

微信小程序分享到朋友圈方法与技巧

小程序提供onShareAppMessage 函数,此函数只支持分享给我微信朋友,小程序如何分享到朋友圈呢?使用canvas绘制一张图片,并用wx.previewImage预览图片,然后长按图片保存图片到手机。

前端新手程序员不知道的 20个小技巧

前端新手程序员不知道的 20个小技巧:作为前端开发者,使用双显示器能大幅提高开发效率、学编程最好的语言不是PHP,是English、东西交付之前偷偷测试一遍、问别人之前最好先自己百度,google一下、把觉得不靠谱的需求放到最后做,很可能到时候需求就变了...

小技巧:检查你本地及公共 IP 地址

本地的 IP 地址是分配给你计算机上的内部硬件或虚拟网卡的本地/私有 IP 地址。根据你的 LAN 配置,上述 IP 地址可能是静态或动态的。公共的 IP 地址是你的 Internet 服务提供商(ISP)为你分配的公共/外部 IP 地址。

12 个 CSS 高级技巧汇总

使用 :not() 在菜单上应用/取消应用边框;给body添加行高;所有一切都垂直居中;逗号分隔的列表;使用负的 nth-child 选择项目;对图标使用SVG;优化显示文本;对纯CSS滑块使用 max-height;继承 box-sizing

26 个 jQuery使用技巧

禁用右键点击;禁用搜索文本框;新窗口打开链接;检测浏览器;预加载图片;样式筛选;列高度相同;字体大小调整;返回页面顶部;获取鼠标的xy坐标;验证元素是否为空;替换元素

提高网站加载速度的一些小技巧

为你网站的用户留下良好的第一印象是非常必要的。随着商业领域的竞争,拥有一个吸引人的网站可以帮助你脱颖而出。研究表明,如果加载时间超过3秒,会有 40% 的用户放弃访问你的网站

《CSS世界》中提到的实用技巧

清除浮动主要用于子元素浮动(float)之后,父元素无法撑起高度和宽度。文字少时居中,多时靠左因为div嵌套着p,所以p的尺寸并不会超过div。但是要注意,当p的内容为英文单词组成的时候

不常被提及的JavaScript小技巧

这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略。Set类型是在ES6中新增的,它类似于数组,但是成员的值都是唯一的

CSS-in-JS 库 styled-class

为什么要在JavaScript里写CSS?避免命名全局污染,条件和动态样式(比如选择主题色之类的),在框架层面进行限制或补充(比如补全供应商前缀),避免业务人员使用奇技淫巧

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!