编程 CSS 奇技淫巧

2024-11-19 08:34:21 +0800 CST views 847

CSS 奇技淫巧

以下是一些常用但高效的 CSS 技巧,它们能够帮助你在前端开发中减少 JavaScript 代码,使代码更简洁,并提升用户体验。

1. 阻止鼠标选择文本

.no-select { 
  user-select: none;
}

阻止用户在页面上选择文本,适用于不可编辑的界面元素。

2. 响应式文字大小

通过 calc 动态调整字体大小:

.fluid {
  font-size: 32px;
}

@media screen and (min-width: 568px) {
  .fluid {
    font-size: calc(32px + 16 * ((100vw - 568px) / (768 - 568)));
  }
}

@media screen and (min-width: 768px) {
  .fluid {
    font-size: 48px;
  }
}

利用 clamp 实现响应式字体大小:

.responsive-text {
  font-size: clamp(16px, 2.5vw, 48px);
}

3. 设置宽高比

使用 aspect-ratio 轻松设置元素的宽高比:

.aspect-ratio { 
  aspect-ratio: 16 / 9; 
}

4. 自动平滑滚动

html { 
  scroll-behavior: smooth; 
}

当用户点击锚点或使用滚动导航时,实现平滑的滚动效果。

5. 响应式系统深色模式

@media (prefers-color-scheme: dark) {
  body {
    background-color: #333;
    color: #fff;
  }
}

根据用户系统的偏好设置自动切换网站的主题颜色。

6. 图片填充方式

.cover-img { 
  object-fit: cover; 
}

确保图片在容器中以适合的方式展示。

7. 禁止鼠标事件触发

.no-pointer { 
  pointer-events: none; 
}

禁用鼠标事件,常用于不可点击的装饰性元素。

8. 模糊背景或元素

.blur { 
  filter: blur(20px); 
}

为背景或元素添加模糊效果,常用于视觉特效。

9. 动态显示 HTML 属性内容

.dynamic-content::before { 
  content: attr(class); 
}

无需更改 HTML,通过 CSS 提取并展示属性的值。

10. 路径剪辑

.circle { 
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%); 
}

通过 clip-path 定义多边形剪辑路径,可以在线生成形状:Clippy

11. 渐变文本

.gradient-text {
  background: linear-gradient(to top, red 0%, blue 100%);
  color: transparent;
  -webkit-background-clip: text;
}

为文本添加渐变效果,使其看起来更加时尚。

12. 首字母样式

p::first-letter {
  font-weight: bold;
  color: #333;
}

为段落的首字母设置特定样式。

13. 选择空内容元素

.element:empty { 
  display: none; 
}

隐藏没有内容的 HTML 元素。

14. 响应式屏幕方向

@media (orientation: landscape) {
  body { 
    background-color: #333;
  }
}

根据屏幕方向(横向或纵向)设置样式。

15. 多层渐变背景色

background: radial-gradient(circle at 50% 50%, rgba(243, 196.3, 96.5, 1) 0%, rgba(238.8, 34.6, 122.1, 0.2) 80%), 
            linear-gradient(0deg, rgba(170.2, 106.8, 238.7, 1) 0%, rgba(162.6, 112.6, 178.8, 1) 100%);

添加多层渐变,丰富背景的视觉效果。

16. 使用 :has 选择器

figure { 
  background: white; 
}

figure:has(img) { 
  background: grey; 
}

根据子元素的存在情况应用样式(仅部分浏览器支持)。

17. 浏览器缩放

body { 
  font-size: calc(100% * env(browser-zoom-level)); 
}

根据用户缩放浏览器的情况动态调整字体大小。

18. 优雅地增加点击区域大小

.icon-clear {
  width: 16px;
  height: 16px;
  border: 11px solid transparent;
}

通过 border 增加点击区域而不会影响布局。

19. 改变输入框光标颜色

input {
  caret-color: #ff0000;
}

自定义输入框的光标颜色。

20. 改变 Radio 选择器的高亮色

.input-radio {
  accent-color: #ff00bf;
}

自定义 Radio 选择器的选中颜色。

21. Hyphens 自动添加连字符

div {
  hyphens: auto;
}

自动在长单词换行时添加连字符。

22. 引号符号

q {
  quotes: "“" "”";
}

q 标签内容前后自动添加引号符号。

23. 文字环绕

通过 text-wrap 和其他布局方式,优化文字显示效果。


这些 CSS 技巧能够帮助你更有效地开发复杂布局,提升网站的响应性和用户体验。

推荐文章

JavaScript设计模式:组合模式
2024-11-18 11:14:46 +0800 CST
npm速度过慢的解决办法
2024-11-19 10:10:39 +0800 CST
File 和 Blob 的区别
2024-11-18 23:11:46 +0800 CST
H5抖音商城小黄车购物系统
2024-11-19 08:04:29 +0800 CST
2024年公司官方网站建设费用解析
2024-11-18 20:21:19 +0800 CST
MySQL死锁 - 更新插入导致死锁
2024-11-19 05:53:50 +0800 CST
Golang - 使用 GoFakeIt 生成 Mock 数据
2024-11-18 15:51:22 +0800 CST
使用 Go Embed
2024-11-19 02:54:20 +0800 CST
Golang 中应该知道的 defer 知识
2024-11-18 13:18:56 +0800 CST
ElasticSearch集群搭建指南
2024-11-19 02:31:21 +0800 CST
PHP 微信红包算法
2024-11-17 22:45:34 +0800 CST
禁止调试前端页面代码
2024-11-19 02:17:33 +0800 CST
微信内弹出提示外部浏览器打开
2024-11-18 19:26:44 +0800 CST
Vue3中的JSX有什么不同?
2024-11-18 16:18:49 +0800 CST
mendeley2 一个Python管理文献的库
2024-11-19 02:56:20 +0800 CST
全新 Nginx 在线管理平台
2024-11-19 04:18:33 +0800 CST
js函数常见的写法以及调用方法
2024-11-19 08:55:17 +0800 CST
Gin 与 Layui 分页 HTML 生成工具
2024-11-19 09:20:21 +0800 CST
Vue3中如何处理组件的单元测试?
2024-11-18 15:00:45 +0800 CST
Python 微软邮箱 OAuth2 认证 Demo
2024-11-20 15:42:09 +0800 CST
程序员茄子在线接单