本文将介绍一个新特性,从 Chrome 90 开始,overflow 新增的一个新特性 -- overflow: clip,使用它,轻松的对溢出方向进行控制。

overflow: clip 为何

首先,简单介绍下 overflow: clip 的用法。

overflow: clip: 与 overflow: hidden 的表现形式极为类似,也是对元素的 padding-box 进行裁剪。

但是,它们有两点不同:

  1. 也就是 overflow: clip 内部完全禁止任何形式的滚动。当然,这个不是今天的重点,暂且略过不谈。

MDN 原文:The difference between clip and hidden is that the clip keyword also forbids all scrolling, including programmatic scrolling.

  1. overflow: clip 可以从 x,y 轴方向上对裁剪进行,控制,而 overflow: hidden 不行。

重点在于这一点。我们来简单示意一下:

overflow: clip && overflow: hidden 的表现

我们来看对于不区分方向,overflow: clipoverflow: hidden 的表现形式:

<div>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. </p>
</div>
<div class="hidden">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. </p>
</div>
<div class="clip">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. </p>
</div>
.hidden {
overflow: hidden;
}
.clip {
overflow: clip;
}

我们设置了 3 个 DIV 容器,其中一个不设置 overflow,另外两个分别设置 overflow: clipoverflow: hidden。效果如下:

此时,overflow: clipoverflow: hidden 的表现是一致的。

overflow: clip 在 x/y 轴上可单独设置

然而,overflow: clip 的与众不同之处在于,它可以单独设置给 x 轴或者 y 轴,使得容器拥有某一个方向上的裁剪能力,而相对的另外一个方向,允许溢出。

看看这个 DEMO:

这里的现象值得注意:

  1. 单单设置 overflow-x: hidden 或者 overflow-y: hidden,表现形式都和 overflow: hidden 一致,是全方位的裁剪
  2. 而水平 x 或竖直 y 方向的 overflow-x: clip/ overflow-y: clip 配合另一个方向的 overflow-x: visible,却能够实现一个方向允许溢出,一个方向实现裁剪!

完整的 DEMO,你可以戳这里:CodePen Demo -- overflow: hidden & overflow: clip

至此,我们就实现了这样一种效果,允许元素在 x/y 方向上的单向裁剪,像是这样:

(上图允许 x 轴方向上的溢出,而 y 轴方向进行了裁剪)

上、下、左、右单个方向上的裁剪

OK,那么,如果再进一步。譬如有这么个需求,要求上、左、右方向允许溢出,而下方向需要裁剪,能做到么?

答案是可以的。

CSS 中其实还有多种方式可以进行元素的裁切,近似的实现类似于 overflow: hidden 的功能。

譬如,其中,我们可以使用 clip-path 实现上、下、左、右 单一方向的裁剪。这是我之前一篇文章的内容 -- 如何不使用 overflow: hidden 实现 overflow: hidden,感兴趣可以看看。

最后

好了,本文到此结束,今天是一个非常小的技巧,希望对你有帮助

更多精彩 CSS 技术文章汇总在我的 Github -- iCSS ,持续更新,欢迎点个 star 订阅收藏。

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

最新文章

  1. 在Mongoose中使用嵌套的populate处理数据
  2. CP/IP,SPDY,WebSocket 三者之间的关系
  3. 遍历注册表回调函数(仿PCHunter CmpBack)
  4. 你会用Python做出装逼的东西吗
  5. poolboy的坑
  6. SVN技术交流提纲
  7. Android开发MVP模式解析
  8. spring的基本配置
  9. 第一篇文章-VS的Local DB数据库连接失败,创建实例失败的解决方案
  10. WinDriver的一些
  11. MyEclipse建立JVM内存大小
  12. Zeppelin interperter 模式设置总结
  13. JavaScript面向对象(收集整理)
  14. 文本分布式表示(二):用tensorflow和word2vec训练词向量
  15. 忘掉Ghost!利用Win10自带功能,玩转系统备份&amp;恢复 -- 关于系统恢复的深度思考
  16. 第九届蓝桥杯C/C++B组省赛感想
  17. Kubernetes集群搭建之Etcd集群配置篇
  18. SysTick_CLKSourceConfig 这个函数
  19. Spring static 静态属性注入
  20. jstat 使用日志

热门文章

  1. Egg上层框架CabloyJS是如何输出SQL语句日志的?
  2. 快速选择 第k个数
  3. 隐私计算FATE-模型训练
  4. JS:三目运算符
  5. JS:Array
  6. SAP Office Excel Intergration
  7. SVN+Maven+Tomcat+Jenkins持续构建
  8. 【前端面试】(四)JavaScript var let const的区别
  9. NC14683 储物点的距离
  10. Codeforces Round #780 (Div. 3)