20个冷门但实用的CSS属性:从布局优化到性能提升

更新日期: 2026-05-11 阅读: 76 标签: 属性

一、布局与溢出:解决90%布局bug

做页面最头疼的就是布局错乱、文字溢出,这几个属性直接封神,少走很多弯路。

1. white-space: nowrap(单行省略核心)

强制文本不换行,配合另外两个属性,一键实现单行文字省略,按钮、标题、列表项必用。

复制直接用:

.ellipsis {
  white-space: nowrap;      /* 核心:禁止换行 */
  overflow: hidden;         /* 隐藏溢出内容 */
  text-overflow: ellipsis;  /* 溢出显示省略号 */
}

2. word-break / word-wrap(解决长文本撑破容器)

遇到长英文、长链接直接撑开容器?这两个属性二选一,完美解决。

复制直接用:

/* 方案1:强制任意字符换行(英文/数字都能断) */
word-break: break-all;

/* 方案2:只在单词边界换行(更友好,不破坏英文语义) */
word-wrap: break-word;

3. contain: layout paint size(性能神器)

告诉浏览器这个元素独立渲染,不影响其他元素,大幅减少页面重排重绘。弹窗、卡片、列表项用它,滚动、动画再也不卡顿。

.card {
  contain: layout paint size;
}

4. aspect-ratio: 16/9(原生宽高比)

不用再写padding-top的hack技巧,直接固定元素宽高比。图片、视频、卡片适配移动端超方便。

/* 视频容器,宽100%,比例16:9 */
.video-box {
  aspect-ratio: 16 / 9;
  width: 100%;
}

5. place-items: center(一行实现居中)

替代flex的繁琐写法,一行代码实现元素垂直和水平居中,简单好记,新手也能秒会。

.parent {
  display: grid;
  place-items: center;  /* 核心:垂直+水平居中 */
}


二、点击与交互:提升用户体验

很多交互bug(点击穿透、文字被选中、移动端延迟),其实一个CSS属性就能解决,不用写多余JS。

6. user-select: none(禁止选中文字)

按钮、图标、标题,不想被用户选中复制?加这一行,瞬间解决。

.btn {
  user-select: none;  /* 禁止选中文字 */
}

7. pointer-events: none(点击穿透)

遮罩层、悬浮层挡住下层元素点击不了?加这一行,点击事件直接穿透到下层,不用调整z-index。

.mask {
  pointer-events: none;  /* 点击穿透,不拦截点击事件 */
}

8. touch-action: manipulation(移动端优化)

移动端点击延迟300ms、双击缩放误触?给body加这一行,完美优化移动端交互体验。

body {
  touch-action: manipulation;  /* 禁用双击缩放,解决点击延迟 */
}


三、视觉与优化:提升页面质感

不用复杂的JS和图片,纯CSS就能做出高级感,适配暗黑模式、毛玻璃等热门效果。

9. backdrop-filter: blur()(毛玻璃效果)

iOS风格毛玻璃,比filter更自然。弹窗、导航栏用它,瞬间提升页面高级感。

.modal {
  background: rgba(255, 255, 255, 0.2);  /* 半透明背景 */
  backdrop-filter: blur(10px);           /* 核心:毛玻璃模糊 */
}

10. scroll-behavior: smooth(原生平滑滚动)

不用引入JS插件,给html加一行,实现页面内锚点原生平滑滚动,体验更丝滑。

html {
  scroll-behavior: smooth;  /* 原生平滑滚动 */
}

11. object-fit: cover(图片不变形)

图片适配容器,要么拉伸变形,要么留白?用object-fit,等比例填充或显示,图片不变形,必用属性。

img {
  width: 100px;
  height: 100px;
  object-fit: cover;  /* 等比例裁剪,填充容器(常用) */
  /* object-fit: contain;  等比例完整显示,不裁剪 */
}

12. mix-blend-mode(图层混合)

做图片与文字融合、暗黑模式适配、特殊视觉效果,用这个属性,不用PS,纯CSS就能实现。

.text {
  mix-blend-mode: difference;  /* 反色效果,适配暗黑模式 */
}


四、隐藏与显示:面试必考知识点

3种隐藏方式的区别,面试常问,实际开发也经常用,一定要记牢。

13. 3种隐藏方式(重点区分)

  • display: none → 完全移除,不占空间,不触发任何事件(常用,彻底隐藏)

  • visibility: hidden → 隐藏但占位,不触发事件(保留位置,临时隐藏)

  • opacity: 0 → 透明但占位,可以触发点击事件(做淡入淡出动画常用)

14. visibility: collapse(表格专用)

隐藏表格的行或列,不破坏表格布局,比display: none更友好,表格开发必用。


五、滚动相关:解决滚动坑

滚动穿透、滚动条美化,这些小细节直接影响用户体验,用对CSS就能解决。

15. ::-webkit-scrollbar(自定义滚动条)

隐藏滚动条但保留滚动功能,或者美化滚动条,适配页面整体风格。

/* 隐藏滚动条,保留滚动功能(常用) */
.hide-scrollbar::-webkit-scrollbar {
  display: none;
}

16. overscroll-behavior: none(禁止滚动穿透)

弹窗滚动时,底层页面跟着动?加这一行,禁止滚动穿透,弹窗体验更友好。

.modal {
  overscroll-behavior: none;  /* 禁止滚动穿透 */
}


六、兼容性与性能:新手必看

动画卡顿、焦点框难看、硬件加速,这些问题,一个属性就能优化。

17. transform: translateZ(0)(开启硬件加速)

动画卡顿、闪屏?加这一行,开启硬件加速,提升动画流畅度。

.animate {
  transform: translateZ(0);  /* 开启硬件加速 */
}

18. will-change: transform(提前优化动画)

提前告诉浏览器这个元素要做动画,让浏览器提前优化,动画更流畅,适合频繁动画的元素。

.floating {
  will-change: transform;  /* 提前优化动画性能 */
}

19. outline: none + :focus-visible(优雅移除焦点框)

直接写outline: none会破坏键盘可访问性。这样写,既移除难看的焦点框,又保留键盘访问功能。

button:focus { outline: none; }
button:focus-visible { outline: 2px solid blue; }

20. inset: 0(一行覆盖全屏)

替代top/right/bottom/left: 0,一行代码让元素覆盖全屏,遮罩层、全屏弹窗必用。

.cover {
  position: absolute;
  inset: 0;  /* 等价于top:0; right:0; bottom:0; left:0; */
}


核心总结(背会够用)

不用死记所有属性,重点记这10个,日常开发、面试都够用:

  1. white-space: nowrap → 单行省略

  2. object-fit: cover → 图片不变形

  3. aspect-ratio → 原生宽高比

  4. place-items: center → 一行居中

  5. pointer-events: none → 点击穿透

  6. overscroll-behavior → 禁止滚动穿透

  7. backdrop-filter → 毛玻璃效果

  8. contain → 性能优化

  9. 3种隐藏区别(display/visibility/opacity)

  10. inset: 0 → 覆盖全屏

最后贴心提示:所有代码块都可以直接复制粘贴到项目中使用,根据自己的需求调整属性值即可。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

相关推荐

html中的marquee属性

该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果,该标签是个容器标签

vue里的$refs属性

vuejs的极大程度的帮助减少了对dom的操作,他主要通过添加ref属性,但是当获取this.$refs属性时,稍有不注意就会输出undefined导致我们对dom节点的操作报错。this.$refs.xxx为undefined的几种情况记录:

css的overflow属性

事实上我挺长一段时间都没弄清楚overflow:scroll与overflow:auto的差别,今天测试了一下,总算是明白了。visible: 不剪切内容。hidden: 将超出对象尺寸的内容进行裁剪,将不出现滚动条。scroll: 将超出对象尺寸的内容进行裁剪,并以滚动条的方式显示超出的内容。

css使用到的border边框属性

css使用到的border边框属性

border 在一个声明中设置所有的边框属性。 border-bottom在一个声明中设置所有的下边框属性。border-bottom-color设置下边框的颜色。border-bottom-style设置下边框的样式。

Cookie 的 SameSite 属性

Chrome 51 开始,浏览器的 Cookie 新增加了一个 SameSite 属性,用来防止 CSRF 攻击和用户追踪。Cookie 往往用来存储用户的身份信息,恶意网站可以设法伪造带有正确 Cookie 的 HTTP 请求,这就是 CSRF 攻击。

React 也能“用上” computed属性

初次见到计算属性一词,是在 Vue 官方文档 《计算属性和侦听器》 一节中,文章中是这样描述计算属性的:模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。

css常用属性

text-align 属性规定元素中的文本的水平对齐方式。属性值:none | center | left | right | justify;font-size表示设置字体大小,如果设置成inherit表示继承父元素的字体大小值。

JS、Jquery中判断checkbox是否选中

attr()与prop()如何选择:attr()方法返回被选元素的属性值。prop() 方法设置或返回被选元素的属性和值。当该方法用于返回属性值时,则返回第一个匹配元素的值。当该方法用于设置属性值时,则为匹配元素集合设置一个或多个属性/值对。

css z-index属性

z-index 仅适用于定位元素。即 postition 值为 relative, absolute 和 fixed 属性;堆叠顺序是当前元素位于 z 轴上的值。值越大表示元素越靠近屏幕,反之元素越远离屏幕在同一个堆叠上下文中, z-index 值越大,越靠近屏幕。

CSS中的cursor属性

css中的cursor这个属性是用来设置光标形状的。这个属性定义了鼠标指针放在一个元素边界范围内时所用的光标的形状。默认值:auto,继承性:yes,出现版本:css2

点击更多...

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