CSS3 变形
CSS3变形是一些效果的集合,比如平移,旋转,缩放和倾斜效果,每个效果都称为变形函数。
transform
transform属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。
transform:none | <transform-function> [<transform-function>] *
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> div{ width:100px; height:100px; margin:40px; position:absolute; opacity:1; background:rgb(0, 148, 255); } .box2{ background:rgb(0, 148, 255); opacity:.5; /*旋转45度*/ transform:rotate(45deg); }</style></head><body><div class="box1"></div> <div class="box2"></div> </body></html>
旋转
缩放
.box2{ ... /*放大了1.5倍*/ transform:scale(1.5);}
位移
.box2{ ... /*X轴与Y轴都移动150px*/ transform:translate(150px,150px);}
倾斜
.box2{ ... /*X轴倾斜30度*/ transform:skew(30deg);}
transform-origin
用来指定元素的中心点位置。
transform-origin:x-axis y-axis z-axis
transform进行变形时,默认是以元素自己中心点为原点进行变形的。通过transform-origin属性可以改变元素的中心点,从而以我们指定的点为中心点进行变形。
.box2{ ... transform-origin:left top;}
上例中,元素的中心点从默认的中间点center改为左上角点left top。就是说以左上角的点为基点进行变形。很简单吧,其他位置的点俺就不一一示范了,另外transform-origin不能改变translate的中点。
transform-style
transform-style属性规定如何在3D空间中呈现被嵌套的元素。
transform-style:flat | preserver-3d
简单来说,就是能够创建一个3D空间。让子元素在3D空间中变形。
perspective
perspective 属性用来设置用户和元素3D空间Z平面之间的距离。值越小,3D效果越明显。
perspective:none | number
当元素定义perspective属性时,其子元素会获得透视效果,而不是元素本身。如果不指定透视,则Z轴空间中的所有点将平铺到同一个2D平面中。
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> /*没有添加perspective时效果*/ #box1 div{ position:absolute; } #box1 div img{ transform-origin:bottom; } #box1 .box1-1 img{ opacity:.5; } #box1 .box1-2 img{ transform:rotateX(45deg); } /*添加perspective时效果*/ #box2 div{ position:absolute; left:400px; perspective:500px; } #box2 div img{ transform-origin:bottom; } #box2 .box2-1 img{ opacity:.5; } #box2 .box2-2 img{ transform:rotateX(45deg); }</style></head><body><div id="box1"> <div class="box1-1"><img src="/static/imghwm/default1.png" data-src="https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png" class="lazy" alt="CSS3 变形记_html/css_WEB-ITnose" ></div> <div class="box1-2"><img src="/static/imghwm/default1.png" data-src="https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png" class="lazy" alt="CSS3 变形记_html/css_WEB-ITnose" ></div></div><div id="box2"> <div class="box2-1"><img src="/static/imghwm/default1.png" data-src="https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png" class="lazy" alt="CSS3 变形记_html/css_WEB-ITnose" ></div> <div class="box2-2"><img src="/static/imghwm/default1.png" data-src="https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png" class="lazy" alt="CSS3 变形记_html/css_WEB-ITnose" ></div></div></body></html>
可见,设置了perspective的元素,其3D效果更加明显了。
另外,在3D变形中,除了perspective属性可以激活一个3D空间之外,在3D变形的函数中的perspective()也可以激活3D空间。不同的是,perspective属性用在父元素中,perspective()函数用在当前的子元素中,并且与transform中的其他的函数一起使用。如:
transform:rotate(45deg) perspective(500px);
其效果是一样的。
perspective-origin
用来决定perspective属性的起点位置就,简单说就是观看的视角。
perspective-origin: x-axis y-axis;
perspective-origin与perspective属性一样,必须定义在父元素的元素上。换句话说,perspective-origin是与perspective结合使用的。
#box2 div{ ... perspective-origin:bottom right;}
右下角效果
左下角效果
左上角效果
右上角效果
上角效果
右角效果
下角效果
左角效果
默认值,中角。
backface-visibility
backface-visibility属性定义当元素不面向屏幕时是否可见。如果在旋转元素不希望看到背面时,该属性很有用。
backface-visibility:visible | hidden;
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> @keyframes rotate{ 0%{ transform:rotateY(0deg); } 100%{ transform:rotateY(360deg); } } #box1,#box2{ width:300px; height:400px; float:left; margin:0 20px; transform-style: preserve-3d; animation:rotate 3s ease-in-out infinite alternate; } div div { perspective: 1000px; position:absolute; top:0; right:0; bottom:0; left:0; } #box1 div{ /*第一个图片背面不可见*/ backface-visibility: hidden; } #box1 .box1-1,#box2 .box2-1{ background:url(https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png)no-repeat 0 0 / 100% 100%; z-index:2; } #box1 .box1-2,#box2 .box2-2{ background:url(https://img.alicdn.com/imgextra/i2/2406102577/TB2cgJ7dVXXXXb3XXXXXXXXXXXX_!!2406102577.png)no-repeat 0 0 / 100% 100%; transform:rotateY(180deg); }</style></head><body><div id="box1"> <div class="box1-1"></div> <div class="box1-2"></div></div><div id="box2"> <div class="box2-1"></div> <div class="box2-2"></div></div></body></html>
两个图片正面时可见并无什么变化
两个图片反面时,设置了背面不可见的图片隐藏了正面。
将代码复制下来在浏览器中观看,可以更好了解。
CSS3 2D变形
2D位移
translate()函数可以把元素从原来的位置移动。
translate(x-axis,y-axis);
translate()函数可以取一个值x-axis,也可以取两个值x-axis,y-axis。
当取一个值时,x-axis代表X轴移动的距离,正值时元素向右移动,负值向左移动。
当取二个值是,x-axis一样;y-axis代表Y轴,正值时元素向下移动,负值向上移动。
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> @-webkit-keyframes translate{ from{ transform:translate(0); } 20%{ transform:translate(100px); } 40%{ transform:translate(100px,100px); } 60%{ transform:translate(200px,100px); } 80%{ transform:translate(200px,200px); } 100%{ transform:translate(300px,200px); } } @keyframes translate{ from{ transform:translate(0); } 20%{ transform:translate(100px); } 40%{ transform:translate(100px,100px); } 60%{ transform:translate(200px,100px); } 80%{ transform:translate(200px,200px); } 100%{ transform:translate(300px,200px); } } div{ width:100px; height:100px; background:hsl(102, 100%, 50%); -webkit-animation:translate 1s ease infinite alternate; animation:translate 1s ease infinite alternate; }</style></head><body> <div></div></body></html>
下面是两张图片的位移效果,建议将代码复制在浏览器中观看。
如果要将对象沿着X轴或者Y轴方向移动,除了可以使用translate(x-axis,0)和translate(0,y-axis)来实现。还可以使用translateX()与translateY()两个函数。
translateX(100px)等于translate(100px,0)translateY(100px)等于translate(0,100px)
2D缩放
缩放函数scale()让元素根据中心原点对元素进行缩放。
scale(x-axis,y-axis);
scale()函数与translate()函数的语法相似,可以接受一个值,也可以接受两个值,只有一个值时,第二个值与第一个值一样,也就是说X轴与Y轴成比例缩放。默认值为1,当值小于1时,元素缩小;当值大于1时,元素放大。
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> @-webkit-keyframes scale{ from{ transform:scale(-3); } 100%{ transform:scale(5); } } @keyframes scale{ from{ transform:scale(-3); } 100%{ transform:scale(5); } } div{ position:absolute; left:40%; top:40%; width:70px; height:100px; background:url(https://img.alicdn.com/imgextra/i2/2406102577/TB24namdVXXXXbXXXXXXXXXXXXX_!!2406102577.png) no-repeat scroll 0 0 / 100% 100%; -webkit-animation:scale 1s ease infinite alternate; animation:scale 3s ease infinite alternate; }</style></head><body><div></div></body></html>
scale()函数除了可以取正值,还可以取负值。负值时,会让元素翻转后再进行缩放。下面是两张动画片段,可以复制在浏览器中观看。
除了能通过scale()函数使元素在X轴和Y轴进行缩放之外,还可以使用scaleX()与scaleY()两个函数分别在X轴与Y轴缩放。
scaleX(2)相当于scale(2,1)scaleY(2)相当于scale(1,2)
另外,缩放函数默认是以中心点为原点进行变形,可以使用transform-origin函数,修改元素的中心点,使缩放函数的效果不同。
2D倾斜
倾斜函数skew()能够让元素倾斜显示。与rotate()函数不同,rotate()函数只能旋转,不能改变元素形状;skew()函数不能旋转,当会改变元素形状。
skew(x-axis,y-axis)
x-axis表示元素X轴倾斜的角度。
y-axis表示元素Y轴倾斜的角度。
与前几个函数一样,当只有一个值时,表示的是X轴进行倾斜;二个值时,X轴与Y轴同时倾斜。
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> div { width: 100px; height: 100px; background: hsl(102, 100%, 50%); transform:skew(30deg); }</style></head><body><div></div></body></html>
元素X轴倾斜效果
div { ... transform:skew(0,30deg);}
元素Y轴倾斜效果
div { ... transform:skew(30deg,30deg);}
元素X轴与Y轴同时倾斜效果
除了使用scale()函数使X轴与Y轴倾斜之外,还可以使用scaleX()与scaleY()函数让元素在X轴与Y轴倾斜。
scaleX(30deg)等于scale(30deg,0)scaleY(30deg)等于scale(0,30deg)
还可以使用transform-origin属性修改元素变形的中心点,让元素有不同的倾斜效果。
2D矩阵
俺正在学习当中。点我我也要去学。
CSS3 3D变形
3D位移
CSS3中3D位移主要包括两种函数translateZ()和translate3d()。
translateZ(z-axis);
功能是让元素在3D空间沿Z轴进行位移。负值时,元素在视觉上感觉越来越远,导致元素变小;正值时,元素在视觉上感觉越来越近,导致元素变大了。代码效果translate3d()函数中。
translate3d(x-axis,y-axis,z-axis);
translate3d()函数使一个元素在三维空间移动。是translateX(),translateY(),translateZ()三个函数的缩写,与translate()函数不同的是,translate()函数只能作用在X轴与Y轴上,也就是在二维平面上移动。
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> @-webkit-keyframes translate3d { 0% { transform: translate3d(-30px,-20px,-300px); } 100% { transform: translate3d(30px,20px,200px); } } @keyframes translate3d { 0% { transform: translate3d(-30px,-20px,-300px); } 100% { transform: translate3d(30px,20px,200px); } } body { transform-style: preserve-3d; perspective: 1000px; } .box1 { position:absolute; width: 70px; height: 100px; background: url(https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png) no-repeat 0 0 / 100% 100%; -webkit-animation: translate3d 2s ease-in-out infinite alternate; animation: translate3d 2s ease-in-out infinite alternate; position:absolute; top:30px; left:20%; } .box2{ background: url(https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png) no-repeat 0 0 / 100% 100%; opacity:.5; width: 70px; height: 100px; position:absolute; top:30px; left:20%; }</style></head><body><div class="box1"></div><div class="box2"></div></body></html>
下面是两张动画片段,图中可以看出Z轴的移动对视觉上的效果。
3D缩放
CSS3 3D变形中的缩放主要有scaleZ()和scale3d()两种函数。
scaleZ(z-axis);
让元素在Z轴上按比例缩放。
scale3d(x-axis,y-axis,z-axis);
是scaleX,scaleY,scaleZ三个函数的缩写,scaleZ(2)等于scale3d(1,1,2)。与scale函数不同的是,scale()是在二维平面上进行缩放。scale3d()在三维空间上进行缩放。scale3d()与scaleZ()要与其他函数一起使用才有效果。
建议在使用transform调用函数时,scale3d()或scaleZ()要写在其他函数之前,不然也没有效果。
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> @keyframes scale3d{ 0%{ transform:scale3d(1,1,-10) rotateX(0); } 100%{ transform:scale3d(1,1,2) rotateX(40deg); } } html,body{ transform-style: preserve-3d; perspective: 1200px; } div{ width: 70px; height: 100px; position:absolute; } .box1{ left:40%; top:40px; background:url(https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png) no-repeat scroll 0 0 /100% 100%; z-index:2; animation:scale3d 1s ease-in-out infinite alternate; } .box2{ left:40%; top:40px; opacity:.5; background:url(https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png) no-repeat scroll 0 0 /100% 100%; }</style></head><body><div class="box1"></div><div class="box2"></div></body></html>
下面是动画片段
3D旋转
CSS3中3D旋转可以使用rotateX(),rotateY(),rotateZ()三个函数分别设置三维空间的旋转。也可以使用rotate3d()函数集中进行设置,因为效果都是一样的,俺就选rotate3d()函数来说。
rotate3d(x,y,z,deg);
x,y,z代表旋转的三个轴,取值是0或1,0时代表这个轴不旋转,1时代表这个轴旋转。deg代表旋转的角度。
rotateX(45deg)等于rotate3d(1,0,0,45deg)rotateY(45deg)等于rotate3d(0,1,0,45deg)rotateZ(45deg)等于rotate3d(0,0,1,45deg)rotateX(45deg);rotateY(45deg);等于rotate3d(1,1,0,45deg)...
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style> @keyframes rotate3d{ 0%{ transform:rotate3d(0,0,0,0); } 100%{ transform:rotate3d(1,1,1,45deg); } } html,body{ transform-style: preserve-3d; perspective: 1200px; } div{ width: 70px; height: 100px; position:absolute; } .box1{ left:40%; top:40px; background:url(https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png) no-repeat scroll 0 0 /100% 100%; z-index:2; animation:rotate3d 1s ease-in-out infinite alternate; } .box2{ left:40%; top:40px; opacity:.5; background:url(https://img.alicdn.com/imgextra/i4/2406102577/TB28gKadVXXXXbmXXXXXXXXXXXX_!!2406102577.png) no-repeat scroll 0 0 /100% 100%; }</style></head><body><div class="box1"></div><div class="box2"></div></body></html>
下面是动画片段
3D矩阵
学习中...
CSS3 变形就写到此了。
总结一下最近写博客的感想。以前不写博客时,一本书几天就能看完,而且自己又光看不练,且又不爱复习,那过几天立马就忘得干净了。多次吃亏之下,决定写博客,做笔记。写博客的这几天,一个字“累”,以往看书时感觉不过尔尔,简单的很,等到自己写,就糟了,感觉左也不对,右也是错,这时才知道难啊。写出来后欢心鼓舞,好不快乐。写博客累,却是实在。子曰:学而不思则罔。唯有自己想出来,写下来,才不会迷惑。乡下人言语粗鄙,不知所云。

공식 계정 웹 페이지 업데이트 캐시, 이것은 간단하고 간단하며 냄비를 마시기에 충분히 복잡합니다. 공식 계정 기사를 업데이트하기 위해 열심히 노력했지만 사용자는 여전히 기존 버전을 열었습니까? 이 기사에서는이 뒤에있는 비틀기와 회전을 살펴 보고이 문제를 우아하게 해결하는 방법을 살펴 보겠습니다. 읽은 후에는 다양한 캐싱 문제를 쉽게 처리 할 수있어 사용자가 항상 가장 신선한 콘텐츠를 경험할 수 있습니다. 기본 사항에 대해 먼저 이야기 해 봅시다. 액세스 속도를 향상시키기 위해 브라우저 또는 서버는 일부 정적 리소스 (예 : 그림, CSS, JS) 또는 페이지 컨텐츠를 저장합니다. 다음에 액세스 할 때 다시 다운로드하지 않고도 캐시에서 직접 검색 할 수 있으며 자연스럽게 빠릅니다. 그러나 이것은 또한 양날의 검입니다. 새 버전은 온라인입니다.

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

이 기사는 CSS를 사용한 웹 페이지에 효율적인 PNG 테두리 추가를 보여줍니다. CSS는 JavaScript 또는 라이브러리에 비해 우수한 성능을 제공하며, 미묘하거나 눈에 띄는 효과를 위해 테두리 너비, 스타일 및 색상 조정 방법을 자세히 설명합니다.

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
