【HTML5】Web前端 您所在的位置:网站首页 css的高级属性有哪几种 【HTML5】Web前端

【HTML5】Web前端

2024-06-09 21:42| 来源: 网络整理| 查看: 265

知识点:CSS3 的 2D 变形属性、 3D 变形属性、过渡属性、动画属性、多列属性

先导知识:【HTML5】Web前端——第五课:CSS3新增背景属性、文本属性、盒模型属性

 

CSS3 在原来的基础上增加了变形和动画相关属性,通过这些属性,以前需要用 JavaScript 才能实现的功能,现在可以很轻松地实现。CSS3 的变形功能可以对元素进行位移、旋转、缩放、倾斜 4 种几何变换的操作; CSS3 的动画功能则是和位移、旋转、缩放、倾斜 4 种几何变换操作相结合,从而产生平滑的动画效果。

 

1、  CSS3 的 2D 变形属性 1.1   transform 属性

transform 属性用于设置元素的变形, 这个属性允许你将元素旋转,缩放,移动,倾斜等。

      属性值                                     说明                              参数取值translate(x,y)

表示元素水平方向移动 x ,垂直方向移动 y ,

其中 y 可以省略,表示垂直方向没有位移。

x 和 y 的取值,可以是长度单位,如30px ,

也可以是百分比,如20%

translateX(x)表示元素水平方向移动 x 。translateY(y)表示元素垂直方向移动 y 。rotate(angle)表示元素顺时针旋转 angle 角度

angle 单位通常是deg ,1 deg = 1 度。比如 45deg

scale(x,y)

表示元素水平方向的缩放比为 x ,垂直方向缩放比为 y ,

其中 y 可以省略,表示 y 和 x 相同,以保持相同缩放比。

x 和 y 的取值是数字,默认值是 1 

大于 1,放大

小于 1,缩小

改变的不是元素的宽高,而是 x 和 y 轴的刻度。

scaleX(x)表示元素水平方向的缩放比为 x 。scaleY(y)表示元素垂直方向的缩放比为 y 。skew(angleX angleY)表示元素沿着 x 轴方向倾斜 angleX 角度,沿着 y 轴方向倾斜 angleY 角度,其中 angleY 可以省略,表示 y 轴方向不倾斜。angleX 和 angleY 取值是数字+ deg ,比如 30degskewX(angleX)表示元素沿着 x 轴方向倾斜 angleX 角度skewY(angleY)表示元素沿着 y 轴方向倾斜 angleY 角度matrix(a,b,c,d,e,f)将所有2D变形函数(旋转、缩放、移动及倾斜)组合在一起

新增变形属性-王迪 div{ width: 200px; height: 50px; border: 1px solid; background-color: red; margin-left: 300px; } #box2 { position: absolute; top:60px; transform: translate(20px,30px);/*设置元素水平和垂直方向的偏移*/ } #box3 { position: absolute; top:100px; left:300px; transform:rotate(45deg);/*设置元素顺时针旋转45度*/ } #box4 { position: absolute; top:180px; transform: scale(2,1);/*设置元素水平方向缩放比为2,垂直方向缩放比为1*/ } #box5 { position: absolute; top:300px; transform: skewX(30deg);/*设置元素沿着x轴倾斜*/ } 盒子1:没有变形 盒子2:水平方向移动20px,垂直方向移动30px 盒子3:顺时针,旋转45度 盒子4:元素水平方向缩放比为2,垂直方向缩放比为1 盒子5:沿着X轴方向,倾斜30度 示例练习1:制作如下效果(鼠标移上去,导航栏产生2D变形)

案例知识点: 伪类选择器的使用

案例延伸:试一试给一个元素同时添加多个变形,使用transform属性同时设置多个方法,不同方法之间用空格隔开。

举例:transform: rotate(45deg)  scale(0.5) skew(30deg, 30deg) translate(100px, 100px); 这四种变形方法顺序可以随意,但不同的顺序导致变形结果不同,原因是变形的顺序是从左到右依次进行,这个用法中的执行顺序为1.rotate  2.scalse  3.skew  4.translate

 

1.2   transform-origin 属性

transform-origin 属性用于表示元素旋转的中心点,默认值为 50% 50%。

第一个值,表示元素旋转中心的水平位置,它还可以赋值 left 、right 、center 、长度、百分比;

第二个值,表示元素旋转中心的垂直位置,它还可以赋值 top 、bottom 、center 、长度、百分比。

新增变形属性-王迪 div{ width: 100px; height: 100px; border: 1px solid; background-image:url(img/头像.jpg); background-size:cover; margin: 20px 50px; float: left; } #box2 { transform: rotate(45deg);/*设置元素顺时针旋转45度*/ } #box4 { transform: rotate(45deg); transform-origin: left top; } #box6{ transform: rotate(45deg); transform-origin: 60% 80px; } 盒子1 盒子2: 盒子3 盒子4 盒子5 盒子6

 

 

2、   CSS3 的 3D 变形属性

理解空间的三维:向上为-Y,向下为+Y,向左为-X,向右为+X,向前为+Z,向后为-Z。

 

2.1  transform 属性新增的3个变形函数        函数名称                     说明              使用方法rotateX(angle)表示元素沿着X轴旋转的角度,类似于我们的单杠运动。transform: rotateX(180deg);rotateY(angle)表示元素沿着Y轴旋转的角度transform: rotateY(180deg);rotateZ(angle)表示元素沿着Z轴旋转的角度transform: rotateZ(180deg); 示例练习2: transform 属性的 3D 变形函数

3D变形-transform属性-王迪 * { margin: 0; padding: 0;} ul li { list-style: none; float: left; width: 100px; margin: 20px; } div{ border: 1px solid red; width: 100px; height: 100px; background-image: url(img/头像.jpg); background-size: cover; margin: 20px; float: left; } .box2:hover { transform: rotateX(180deg); } .box3:hover { transform: rotateY(180deg); } .box4:hover { transform: rotateZ(180deg); } .box5:hover { transform: rotateX(60deg) rotateZ(180deg); } 正常显示 沿着X轴旋转180度 沿着Y轴旋转180度 沿着Z轴旋转180度 沿着X轴旋转60度,沿着Z轴旋转180度 2.2  transform-style属性

transform-style 属性是 3D 空间一个重要属性,指定嵌套元素如何在3D空间中呈现。他主要有两个属性值:flat 和 preserve-3d 。 transform-style属性的使用语法非常简单:

transform-style: flat;   默认值,表示所有子元素在2D平面呈现。transform-style: preserve-3d;  表示所有子元素在3D空间中呈现。

 

关键代码:

#box1 { width: 200px; height: 100px; transform-style: preserve-3d; background-color: red; } img { transform: rotateY(60deg); }

transform-style属性需要设置在父元素中,并且高于任何嵌套的变形元素。如果你的元素设置了transform-style值为preserve-3d,就不能为了防止子元素溢出容器而设置overflow值为hidden,如果设置了overflow:hidden同样可以迫使子元素出现在同一平面(和元素设置了transform-style为flat一样的效果)(可以修改上述代码,验证一下效果)

 

 

2.3  perspective属性

perspective的中文意思是:透视,视角。没有透视定义,不成 3D 。对于 perspective 属性,我们可以简单的理解为视距,用来设置用户和元素 3D 空间 Z 平面之间的距离。而其效应由他的值来决定,值越小,用户与 3D 空间 Z 平面距离越近,视觉效果更令人印象深刻;反之,值越大,用户与 3D 空间 Z 平面距离越远,视觉效果就很小。

CSS3中3D transform 的透视点是在浏览器的前方! 当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。 perspective(n) 定义视点离屏幕的距离。

perspective 取值为none或不设置,就没有真 3D 空间。perspective 取值越小,3D效果就越明显,也就是你的眼睛越靠近真 3D。perspective 的值无穷大,或值为 0 时与取值为 none 效果一样。

 

3、 CSS3 的过渡属性实现动画效果

CSS3 增加了一些过渡属性,可以为元素增加过渡动画效果,也可以设置在一定的时间内逐渐从一种样式变成另一种样式。过渡 transition 是一个复合属性,包括 transition-property、transition-duration、transition-timing-function、transition-delay 这四个子属性。通过这四个子属性的配合来完成一个完整的过渡效果。

               属性                          作用                  属性值transition-duration设置完成过渡的整体时间时间,如 2stransition-delay

设置开始过渡动画的,延迟时间

(多长时间以后,开始实现过渡)

时间,如 2stransition-property设置将哪条css使用过渡

none

all

css属性名称列表

transition-timing-function设置过渡的时间曲线

ease:慢速开始,然后变快,最后慢速结束

linear:以相同速度开始至结束的过渡效果

ease-in:以慢速开始

ease-out:以慢速结束

ease-in-out:以慢速开始和结束的过渡效果

cubic-bezier(x1,y1,x2,y2):贝济埃曲线控制动画速度

transition一条声明,设置所有过渡属性值之间,用空格隔开

复合属性

  过渡 transition 的这四个子属性只有 是必需值且不能为 0 。其中, 和 都是时间。当两个时间同时出现时,第一个是,第二个是 ;当只有一个时间时,它是,而 为默认值0

示例练习3: transition 属性实现的动画过渡

实现代码:

transition属性-王迪 div{/*设置div基本的样式*/ width: 200px; height: 100px; background-color: red; margin: 10px; } div:hover{/*设置div需要变化的样式*/ width:500px; } #box1{ transition: width 2s;/*设置过渡属性*/ } 设置transition属性 宽度变化直接完成

案例思考:

1、试一下改变元素的背景属性、或者改一下元素的透明度。

2、设置元素多个属性同时发生变化,过渡属性如何写?

3、完成以下效果:鼠标移上去以后,元素放大1.5倍,同时旋转90度,如何实现?推荐阅读:HTML+CSS项目实践三:鼠标悬浮在图片上时,图片有一个简单动画效果(放大、旋转等)

 

 

4、 CSS3 的动画属性 4.1  什么是动画?

动画的本质是快速切换大量图片时在人脑中形成的具有连续性的画面,我们将形成连续性画面的任意一张图片称为桢或动画帧,它是构成动画的最小单元,CSS 中专门提供了创建动画帧的属性,并以此为基础在网页中创建动画。

翻书动画

 

4.2  @keyframes 

@keyframes 是 CSS 中提供的专门用于定义动画关键帧的语法词。我们用它来创建动画,然后用 animation 属性来调用动画。

使用步骤:

第一步:@keyframes 用来定义动画序列。 以百分比规定改变发生的时间,如 0 和 100%。0 是动画的开始时间,100% 是动画的结束时间。也可以通过关键词 from 和 to 定义,等价于 0 和 100% 。第二步:给想调用动画的元素,添加 animation 属性,用来为标签盒子引用动画序列,同一个动画序列可以被多个标签盒子引用。

实现代码: 

@keyframes-王迪 div{/*设置div基本的样式*/ width: 200px; height: 100px; background-color: red; margin: 10px; } /*创建一个动画,名称自己起,这里叫move*/ @keyframes move{ from {/*设置动画从哪里开始*/ width: 100px; } to{/*设置动画到哪里结束*/ width: 300px; } } #box1{ animation: move 3s infinite;/*使用animation属性,调用动画move*/ } 设置循环播放动画 对比用的div

 

4.3   animation 属性

animation 属性是一个简写属性,用于设置六个动画属性:

值描述animation-name规定需要绑定到选择器的 keyframe 名称。。animation-duration规定完成动画所花费的时间,以秒或毫秒计。animation-timing-function规定动画的速度曲线。animation-delay规定在动画开始之前的延迟。animation-iteration-count规定动画应该播放的次数。animation-direction规定是否应该轮流反向播放动画。

 

 

推荐阅读内容:

HTML+CSS项目实践一:单纯利用CSS制作图片轮播效果(不使用JS)

HTML+CSS项目实践五:使用纯CSS实现点击文字切换图片效果(不使用JS)

 

 

5、CSS3新增的多列属性

CSS3 为文本排版增加了一种多列模式,如在一个 div 中实现文本左右分栏的效果。在实际开发中,因为浏览器的兼容性,有时还需要加上 -moz- 、-webkit-、 -o- 等前缀。

            属性                           描述                属性值column-count指定元素应该被分割的列数。数字/autocolumn-fill指定如何填充列 column-gap指定列与列之间的间隙长度/normalcolumn-rule所有 column-rule-* 属性的简写 column-rule-color指定两列间边框的颜色颜色名/十六进制数/rgb函数column-rule-style指定两列间边框的样式

none/hidden/dotted/dashed/solid/

double/groove/ridge/inset/outset

column-rule-width指定两列间边框的厚度thin/medium/thick/lengthcolumn-span指定元素要跨越多少列1/allcolumn-width指定列的宽度长度/autocolumnscolumn-width 与 column-count 的简写属性。 

实现效果:

关键代码:

CSS的多列属性-王迪 div{ width: 90%; margin: 10px auto; padding: 10px; background-color: pink; column-count: 3;/*将内容分成3列*/ column-rule-style: dashed;/*设置列之间,间隔的样式*/ column-rule-color: darkcyan;/*设置列之间,间隔的颜色*/ column-gap: 5%;/*设置列之间,的间隔*/ } h1 { column-span: all;/*设置元素应该横跨的列数,属性值,只能是 1 或者 all*/ text-align: center; } p:nth-of-type(n+2){/*这个选择器的作用,选择p元素,第二个以后的所有p元素*/ text-indent: 2em;/*设置段落首行缩进2个字符*/ } 给大学生的推荐阅读:《李开复给女儿的一封信》

亲爱的女儿:

我想写一封信给你,告诉你盘旋在我脑中的想法。我想告诉你我们为你感到特别骄傲。进入哥伦比亚大学证明你是一个全面发展的优秀学生。

大学将是你人生最重要的时光,在大学里你会发现学习的真谛。我希望你理解,最重要的不是你学到的具体的知识,而是你学习新事物和解决新问题的能力。大学学习的真正意义是,你从被动学习转向自主学习的阶段,之后你会变成一个很好的自学者。就算学习的技能你会忘记,学习的能力是你将受用终身的。

不要被教条所束缚,任何问题都没有一个唯一的简单的答案。还记得当我帮助你准备高中的辩论课程时,我总是让你站在你不认可的那一方来辩论吗?我这么做的理由就是希望你能够理解:看待一个问题不应该非黑即白,而是有很多方法和角度。这就是“批判的思维”——你需要包容和支持不同于你的其他观点。我永远记得我去找我的博士导师提出了一个新论题,他告诉我:“我不同意你,但我支持你。”多年后,我认识到这不仅仅是包容,而是一种批判式思考,更是令人折服的领导风格,现在这也变成了我的一部分。我希望这也能成为你的一部分。

在大学里你要追随自己的激情和兴趣,选你感兴趣的课程,不要困扰于别人怎么说或怎么想。史蒂夫•乔布斯在他著名的斯坦福毕业典礼演讲中,提到一个例子:他在大学里修了看似毫无用处的书法,而十年后,这成了苹果Macintosh里漂亮字库的基础,然后才带来了桌面出版和今天的办公软件(例如微软Office)。他对书法的探索就是一个点,而苹果Macintosh把多个点串结成了一条线。

在功课上要尽力,但不要给自己太多压力。你妈妈和我在成绩上对你没什么要求,最重要的是你在学习,你需要的唯一衡量标准是你的努力程度。成绩只不过是虚荣的人用以吹嘘和慵懒的人所恐惧的无聊数字而已,而你既不虚荣也不慵懒。

最重要的是在大学里你要交一些朋友,大学的朋友往往是生命中最好的朋友,因为在大学里你和朋友能够近距离交往。另外,在一块儿成长,一起独立,很自然地你们就会紧紧地系在一起,成为密友。不用太在乎他们的爱好、成绩、外表甚至性格。你要以最大的善意去对人,不要有成见,要宽容。只要他们很真诚,就信任他们,对他们友善。他们将给你相同的回报,这是我成功的秘密——以诚待人,信任他人。有人告诉我这样有时我会被占便宜,他们是对的,但是我可以告诉你:以诚待人让我得到的远远超过我失去的。在我做管理的18年里,我学到一件很重要的事——要想得到他人的信任和尊重,只有先去信任和尊重他人。无论是管理、工作、交友,这点都值得你参考。

不管是暑假计划,功课规划,抑或是选专业,管理时间,你都应该为自己的人生负责。我仍然会一直站在你身旁,但是现在是你自己掌舵的时候了。我常常记起我生命中那些令人振奋的时刻——在幼儿园决定跳级,决定转到计算机科学专业,决定离开学术界选择Apple,决定回中国,决定选择Google,乃至最近选择创办我的新公司。生命太短暂了,你不能过别人想要你过的生活。掌控自己的生命是很棒的感觉,试试吧!

亲爱的女儿,珍惜你的大学时光吧,好好利用你的空闲时间,成为掌握自己命运的独立思考者。希望在哥伦比亚大学的时光成为你一生中最快乐的四年,希望你成为你梦想成为的人!

 

 

===========这里是结束分割线=============

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有