13day-transform、transition

本文详细介绍了CSS3中的transform属性,包括平移、旋转、缩放、扭曲等二维形变的使用方法,以及三维形变的实现和过渡动画的原理与设置。着重强调了变形元素的堆叠上下文和动画顺序的重要性。

transform 形变

主要用于:平移元素、旋转元素、缩放元素以及更多的特效来展示元素。

注意:对于变形的元素,有自己的堆叠上下文。经过缩放、平移等变形后的元素在视觉上虽然比以前更大或更小,但是元素在页面上所占用的空间仍然与变形前保持不变。对所有变形函数都成立。

基础语法:

transform: transform-list | none

在形变中分为二维形变以及三维形变

二维形变

平移、旋转、缩放、扭曲产生的形变。
注意:一个元素上只允许存在一个transform属性,如果写了两个 只有后面那个生效。

旋转 rotate

transform: rotate(370deg)

该段代码的表示的意思是元素顺时针旋转90度

注意点:

  • 对于元素来说,deg表示的是旋转的单位,是degree角度值的缩写,默认的旋转中心为元素的中心点。
  • 当rotate的值为正值时,元素顺时针旋转,负值时,元素逆时针旋转
  • 如果旋转角度大于360度,那么totate函数将会对角度值进行取余,余数作为度数的显示效果即该角度的显示效果。
单独设置一个方向的选装
  • rotateX:表示沿着水平方向轴旋转,默认的水平方向轴在元素的中间
  • rotateY:表示元素沿着垂直方向轴旋转,默认的垂直方向轴在元素的中间
transform:rotateX(30deg);
transform:rotateY(30deg);

改变元素中心位置

transform-origin:left | right | top | bottom | center | % | px;

旋转中心的默认值时元素的中心位置
取值:第一个值表示水平、第二个值表示垂直

平移 translate

transform:translate(50px,50px) | %
  • 可以传递两个参数,第一个表示水平位移,第二个参数表示垂直位移
  • 只传递一个值时,表示水平位移
单独设置某个方向
  • translateX:水平位移

  • translateY:垂直位移

  • 其中translate的值可以为负值,水平正值往右平移,负值相反,垂直方向正值向下平移,负值相反。

缩放 scale

transform:scale(1,1.5)

scale表示缩放,不需要单位,可以为小数,1表示百分百的原始大小,小于1表示缩小,大于1表示放大。

  • 拥有两个参数,第一个参数表示水平方向、第二个表示垂直方向
  • 当只写一个值时,表示元素整体放大(X、Y方向都会放大)
单独设置某个方向
  • scaleX:水平方向缩放

  • scaleY:垂直方向缩放

  • 当取值为负值时,左右、上下将会颠倒。

扭曲 skew

代表扭曲或斜切,单位与旋转一样,可以为负值。

transform:skew(15deg)
  • 存在两个参数,第一个表示水平,第二个表示垂直,当只写一个值时表示水平,此时第二个默认为0.
  • 使用skew会导致图像或内容失真变形,因此在实际开发中,基本不会用到
单独设置某个方向
  • skewX:水平方向扭曲
  • skewY:垂直方向扭曲

复合语法

transform: rotate(50deg) translate(100px) skew(50deg) scale(2);

上述写法顺序没有固定,但要注意,顺序不同元素的效果也不一样。执行的顺序是从左至右逐一执行

  • 在日常开发中,需要先考虑好元素变形的顺序,防止因为顺序导致莫名其妙的问题。

三维形变

三维和二维形变使用的都是transform属性

通过transform-style属性告知浏览器形变方式

transform-style:preserve-3d;

这段代码需要添加给三维形变元素的父元素,提前告知浏览器,我的子元素要变身了,然后浏览器会按照三维形变的方式去渲染父元素以内部的子元素。

在三维形变中,属性值都可以按照二维形变的书写方式书写,除了skew

三维形变在原有的x和y轴的基础上增加了一个z轴,z轴的方向就是我们面对屏幕的方向。

过渡动画 transition

过渡能控制一段时间内属性的值如何变成另一个值。因此我们可以让属性的值变化过程的时间延长,让整个变化行为看起来更加的自然、平滑。

过渡的基本属性

过渡使用四个属性进行定义:

  • transition-property:定义元素的哪个属性需要过渡
    • 比如更改颜色,那这个属性值就写color,更改宽度就写width,如果想针对元素所有属性进行过渡,那就写all
  • transition-duration:定义元素属性过渡需要的时间,一般单位设置为秒(S)
  • transition-timing-function:表示过渡的方式
    • 对于过渡动画是有不同的过渡方法的,不同的过渡方法主要体现在从始态到终态的过程中,不同阶段有着不同的运动速度
      • liner:线性过渡
      • ease:平滑过渡
      • ease-in:由慢到快
      • ease-out:由快到慢
      • ease-in-out:由慢到快再到慢
  • trasnition-delay:表示过渡的延迟时间,单位为s(秒)

复合语法

transition: transition-property transition-duration transition-timing-function trasnition-delay

例如:

{
  transition:all 1s ease 0s;
}

该段代码表示的意思是,元素所有的属性都会发生过渡,过渡时间为1s。过渡方式为ease(平滑过渡),延迟时间0s

} 一个最长的用法就是:让弹出的元素始终位于页面的中间位置。首先position: fixed; top: 50%; left: 50%;让这个图片的左上角处在屏幕的正中间。然后让他上下位移transform:translateX(-50%) translateY(-50%);就是相对于这个图片的宽高的50%,也就是一半。移回来。 .center-vertical {    position: fixed;    top: 50%;    left:50%;      -webkit-transform: translate(-50%, -50%);    -ms-transform: translate(-50%,-50%);    -moz-transform: translate(-50%,-50%);    -o-transform: translate(-50%,-50%);    transform: translate(-50%, -50%);}肖肖肖丽珠关注120分享专栏目录CSS实现垂直居中的4种思路详解09-24CSS实现垂直居中是网页布局中的常见需求,本文将详细讲解四种不同的方法,帮助开发者更好地理解和运用这些技巧。 1. **行高line-height实现单行文本垂直居中** 单行文本的垂直居中可以通过设置`line-height`来实现...CSS进阶之形变与动画 (一):transform、垂直居中总结、transition动画、animation动画、vertical-alignGood Good Study,Day Day Up! 1万+水平居中的方案行内级元素:设置父元素的 text-align:center块级元素:设置当前块级元素(要有宽度) margin:0 auto绝对定位:元素有宽度的情况下,设置left0、right0、margin:0 auto;flex布局:通过设置justify-content: center;垂直居中的方案绝对定位: 元素要有高度的情况下,设置top0、bottom0、margin:auto 0;flex布局 通过设置align-CSS 盒子垂直居中的方法_css transform居中3-15margin-top: 50%; // 向下移动父盒子的一半 transform: translateY(-50%); // 向上移动自身盒子的一半 } /* 通过 定位来移动*/ .father { width: 500px; height: 500px; background-color: skyblue; border: 1px solid #000; margin: 0 auto; position: relative; } .son { width: 200px; height...CSS进阶之形变与动画 (一):transform、垂直居中总结、transition动画、a...3-13translate的水平垂直居中 水平居中:使用left/translate,其中需要知道left是基于包含块的宽度,translate是基于自身的大小。 垂直居中: 使用top/translate,其中需要知道top是基于包含块的高度,translate是基于自身的大小。 .shuipin{ position: relative; left: 50%; transform: translateX(-50%); } .chuizhi{ position...transform 垂直居中weixin_33948416的博客 9212019独角兽企业重金招聘Python工程师标准>>> ...css水平垂直居中方案最新发布m0_73351190的博客 187本篇文章介绍比较常见的三种方法。...的元素水平垂直居中的总结_绝对定位位水平垂直居中 transform...3-15DOCTYPEhtml>元素的垂直居中.elem1{position:relative;width:500px;height:500px;border:1px solid red; } .elem2{position:absolute;width:200px;height:200px;border:1px solid#9521de;left:50%;top:50%;transform:translate(-50%,-50%); } 效果如下: 不过transform是css3里面的内容,所以存在兼容性问题;IE9...实现div元素在整个屏幕的的垂直居中之translateY(-50%)的利用_tran...3-14本文介绍了如何使用CSS的transform: translateY(-50%)实现div元素在整个屏幕的垂直居中。通过设置position: absolute,top: 50%,right: 20px,再结合transform: translateY(-50%),即使元素高度不确定,也
03-19
### CSS Transform 实现元素垂直居中的原理 在CSS中,`transform` 属性可以通过调整元素的位置来实现精确的布局控制。当使用 `transform: translate()` 方法时,它允许基于元素自身的尺寸来进行偏移操作。具体来说,为了使一个子元素在其父容器内垂直居中,通常会结合绝对定位和 `translate(-50%, -50%)` 来完成这一目标。 以下是其实现机制的核心逻辑: - 首先,将子元素设置为相对于其最近的已定位祖先(即设置了 `position: relative`, `absolute`, 或 `fixed` 的父级元素)进行绝对定位[^3]。 - 接着,通过设定 `top: 50%` 和 `left: 50%` 将该子元素移动到父容器中心位置。 - 最后,利用 `transform: translate(-50%, -50%)` 对齐子元素本身的内容区域至完全居中状态。这里 `-50%` 表示向左上方分别移动半个自身宽度和高度的距离。 这种方法的优势在于兼容性强、语义清晰,并且不会影响文档流或其他兄弟节点的表现形式。 ### 示例代码展示 下面提供了一段完整的HTML与CSS代码片段演示如何运用上述技术达成预期效果: ```html <div class="parent"> <div class="child">我是被居中的内容</div> </div> ``` ```css .parent { position: relative; width: 300px; height: 200px; border: 1px solid black; /* 可视化边界 */ } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background-color: lightblue; } ``` 此例子创建了一个固定大小的 `.parent` 容器,在其中心放置了另一个带有背景颜色的小方块作为 `.child` 子项。 ### 应用场景分析 这种技巧适用于多种实际开发场合,比如模态对话框(modal dialogs),全屏加载指示符(fullscreen loaders)或者任何需要精准定位的重要界面组件上。由于它的灵活性高以及跨浏览器支持良好,因此成为现代前端工程师常用的技术之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值