transform java_transform 的副作用

CSS3的transform属性不仅用于元素的移动、旋转、缩放和倾斜,还会影响元素的堆叠上下文、fixed定位、overflow效果以及定位父级。当transform设置为非none时,元素可以覆盖普通流元素,fixed定位会被降级为absolute,溢出处理可能失效,且能成为绝对定位的定位父级。这些副作用在不同浏览器中表现各异,开发者需要注意兼容性问题。

transform是一些效果的集合,主要是移动、旋转、缩放和倾斜这四种基本操作,还可以通过设置matrix矩阵来实现更复杂的效果。

变形transform可以实现2D和3D两种效果。

变形transform本来是一个用来处理移动、旋转、缩放和倾斜等基本操作的CSS3属性,但该属性除了完成其本职工作之后,还对普通元素造成了意想不到的影响,本文将详细介绍transform对元素造成的四个副作用:

一、z-index

在定位中的堆叠z-index中曾经提到过,CSS3的出现对过去的很多规则发出了挑战,对层叠上下文z-index的影响更加显著,其中就包括元素的变形transform不是none的情况

元素的变形transform不是none,会使该元素可以使用堆叠z-index,从而可以覆盖普通流元素和低级别的定位元素。

show2和show1都是普通元素,show2通过设置margin负值,覆盖了show1。但是,通过改变show1的'transform'属性可以改变其层叠效果。

1.show1 - transform: none

54e97bfd84dc9009ce876e28d0e5defc.png

2.show1 - transform: scale(1)

64733e35e63c31189b4b8de513fcee7a.png

二、fixed

固定定位fixed使元素相对于视窗进行定位,不随着页面滚动条的滚动而滚动。但是,如果在固定定位元素的父级设置transform不为none,则会将固定定位降级为绝对定位absolute

兼容性:IE浏览器无此表现,依然保持fixed状态

[注意]在chrome浏览器下,将固定定位元素父级的transform属性设置为none,可能会使元素从静态位置移动到left:0、top:0的位置。如果某个父级元素设置为宽度100%,则fixed将保持在原来位置不会改变

1.show1父类 - transform: none

32c278e3c392d14d5e2e97239bfafaaa.png

2.show1父类 - transform: scale(1)

06db15d411d91d1d08a077c87e4f8d31.png

三、overflow

对于溢出overflow失效的情况,发生在overflow在绝对定位元素及其包含块之间,如下所示

aa8d5cb6f63083c4c1144498b9c42a66.png

给设置overflow的元素使用transform或在设置overflow的元素与溢出元素之间的元素设置transform,可以解决overflow失效的问题。

兼容性:在chrome和safari浏览器下,只有设置overflow的元素与溢出元素之间的元素设置transform时,才有效;而IE9+和firefox浏览器,对于以上两种设置都有效。

[注意]在chrome浏览器下,将元素的transform属性设置为none,可能会使元素从静态位置移动到left:0、top:0的位置

1.设置overflow元素/中间层元素 - transform: none

f6486b02eec6b0ba622483bed47bf681.png

2.设置overflow元素/中间层元素 - transform: scale(1)

a6e9a5ff142bbbf680b7ec1f0bce47d7.png

四、定位父级

一般地,绝对定位元素设置宽度百分比时,参照的是定位父级。定位父级是第一个position值为非static值的祖先元素。但是,如果祖先元素中存在设置了transform元素不为none的元素,也可以成为定位父级

以下为例子中的HTML结构,当中间层 midlde-block 元素设置transform:scale(1)时,该元素成为定位父级,否则.parent元素是定位父级

c190d1c9fc3f90b340202b704ad511d2.png

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值