CSS属性(transition/transform)和CSS变量

一、CSS3 box-shadow 和 text-shadow 属性:
1.1 box-shadow语法:

box-shadow: h-offset v-offset blur-radius spread-radius color inset;
对象选择器 {box-shadow:X轴偏移量 Y轴偏移量 阴影模糊半径 阴影扩展半径 阴影颜色 [投影方式]}
默认值是none

1. h-offset:必需。水平阴影的位置。允许负值。如果值为0,则对象的左右边都有阴影,如果值为正值,则阴影在对象的右边,其值为负值时,阴影在对象的左边(默认是outset,如果是inset相反);
2. v-offset:必需。垂直阴影的位置。允许负值。如果值为0,则对象的底部和顶部都有阴影,如果为正值,阴影在对象的底部,其值为负值时,阴影在对象的顶部(默认是outset,如果是inset相反);
3. blur-radius:此参数可选,但其值只能是正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊;
4. spread-radius:可选。其值可以是正负值,如果值为正,则整个阴影都延展扩大,反之值为负值时,则缩小;  
5. color:可选。阴影的颜色;
6. inset:可选。如不设值,默认投影方式是外阴影;如取其唯一值“inset”,其投影为内阴影;
注意:box-shadow和text-shadow一样可以使用一个或多个投影,如果使用多个投影时必须需要用逗号“,”分开。

1.2 text-shadow语法:

text-shadow 属性向文本设置阴影。默认值是none
text-shadow: h-shadow v-shadow blur color;
1. h-shadow必需。水平阴影的位置。允许负值。
2. v-shadow必需。垂直阴影的位置。允许负值。
3. blur可选。模糊的距离。
4. color可选。阴影的颜色。

二、CSS3 transition 属性
2.1 定义和用法

transition 属性是一个简写属性,用于设置四个过渡属性:默认值是all 0 ease 0
transition-property
transition-duration
transition-timing-function
transition-delay
注:请始终设置 transition-duration 属性,否则时长为 0,就不会产生过渡效果。

2.2 语法

transition: property duration timing-function delay;

transition-property 规定设置过渡效果的 CSS 属性的名称。
-one 没有属性会获得过渡效果。
-all 所有属性都将获得过渡效果。
-property 定义应用过渡效果的 CSS 属性名称列表,列表以逗号分隔。

transition-duration 规定完成过渡效果需要多少秒或毫秒。
-time 规定完成过渡效果需要花费的时间(以秒或毫秒计)。默认值是 0,意味着不会有效果。

transition-timing-function 规定速度效果的速度曲线。
-linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
-ease-in    规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
-ease-out   规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
-ease-in-out    规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
-cubic-bezier(n,n,n,n)  在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。

transition-delay 定义过渡效果何时开始。

参考CSS详解

三、CSS3 transform 属性
3.1 定义和用法

transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜:默认值是none
-none   定义不进行转换。
-matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)  定义 3D 转换,使用 16 个值的 4x4 矩阵。  
-translate(x,y) 定义 2D 转换。   
-translate3d(x,y,z) 定义 3D 转换。   
-translateX(x)  定义转换,只是用 X 轴的值。 
-translateY(y)  定义转换,只是用 Y 轴的值。 
-translateZ(z)  定义 3D 转换,只是用 Z 轴的值。 
-scale(x,y) 定义 2D 缩放转换。 
-scale3d(x,y,z) 定义 3D 缩放转换。 
-scaleX(x)  通过设置 X 轴的值来定义缩放转换。  
-scaleY(y)  通过设置 Y 轴的值来定义缩放转换。  
-scaleZ(z)  通过设置 Z 轴的值来定义 3D 缩放转换。  
-rotate(angle)  定义 2D 旋转,在参数中规定角度。  
-rotate3d(x,y,z,angle)  定义 3D 旋转。   
-rotateX(angle) 定义沿着 X 轴的 3D 旋转。    
-rotateY(angle) 定义沿着 Y 轴的 3D 旋转。    
-rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。    
-skew(x-angle,y-angle)  定义沿着 X 和 Y 轴的 2D 倾斜转换。  
-skewX(angle)   定义沿着 X 轴的 2D 倾斜转换。  
-skewY(angle)   定义沿着 Y 轴的 2D 倾斜转换。  
-perspective(n) 为 3D 转换元素定义透视视图。

3.2 语法

transform: none|transform-functions;

3.3 转换属性

transform-origin    允许你改变被转换元素的位置。  
transform-style 规定被嵌套元素如何在 3D 空间中显示。    
perspective 规定 3D 元素的透视效果。  
perspective-origin  规定 3D 元素的底部位置。  
backface-visibility 定义元素在不面对屏幕时是否可见。

3.4 transform-origin

3.4.1 定义和用法
transform-origin 属性允许您改变被转换元素的位置。
2D 转换元素能够改变元素 x 和 y 轴。3D 转换元素还能改变其 Z 轴。
3.4.2 语法
transform-origin: x-axis y-axis z-axis; 默认值:50% 50% 0
x-axis  定义视图被置于 X 轴的何处。
可能的值:left center right length %
y-axis  定义视图被置于 Y 轴的何处。
可能的值:top center bottom length %
z-axis  定义视图被置于 Z 轴的何处。
可能的值:length
注:该属性必须与 transform 属性一同使用。

四、CSS3 filter(滤镜) 属性
4.1 定义和使用

filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度)。默认值是none
支持的效果有:
-blur(模糊) 给图像设置高斯模糊,"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;如果没有设定值,
则默认是0;这个参数可设置css长度值,但不接受百分比值。
-grayscale(灰度)
-drop-shadow(阴影)
-sepia(褐色滤镜)
-brightness(亮度)
-contrast(对比)
-hue-rotate(色相)
-invert(反相)
-saturate(饱和度)
-opacity(透明度)

五、:root 伪类

这个伪元素匹配的是文档的根元素,也就是 <html> 标签。
所以常用于声明全局的 CSS 变量:
:root {
  --color: #fff;
}

在使用时:
img {
  background: var(--base);
}

六、CSS 变量(自定义属性)
参考:CSS 变量教程
6.1 变量的声明

声明变量的时候,变量名前面要加两根连词线(--)。
body {
  --foo: #7F583F;
  --bar: #F7EFD2;
}
上面代码中,body选择器里面声明了两个变量:--foo和--bar。
它们与color、font-size等正式属性没有什么不同,只是没有默认含义。所以 CSS 变量(CSS variable)又叫做"CSS 自定义属性"(CSS custom properties)。因为变量与自定义的 CSS 属性其实是一回事。
注:变量名大小写敏感,--header-color和--Header-Color是两个不同变量。

6.2 var() 函数

6.2.1 var()函数用于读取变量。

a {
  color: var(--foo);
  text-decoration-color: var(--bar);
}

6.2.2 var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。

color: var(--foo, #7F583F);

6.2.3 第二个参数不处理内部的逗号或空格,都视作参数的一部分。

var(--font-stack, "Roboto", "Helvetica");
var(--pad, 10px 15px 20px);

6.2.4 var()函数还可以用在变量的声明。

:root {
  --primary-color: red;
  --logo-text: var(--primary-color);
}

6.2.5 变量值只能用作属性值,不能用作属性名。

.foo {
  --side: margin-top;
  /* 无效 */
  var(--side): 20px;
}
上面代码中,变量--side用作属性名,这是无效的。

6.3 JavaScript 操作

JavaScript 操作 CSS 变量的写法如下。
// 设置变量
document.body.style.setProperty('--primary', '#7F583F');

// 读取变量
document.body.style.getPropertyValue('--primary').trim();
// '#7F583F'

// 删除变量
document.body.style.removeProperty('--primary');

七、HTML5 中的自定义数据属性 dataset

HTML5 中可以为元素添加非标准的自定义属性,只需要加上 data- 前缀,可以随便添加和命名。添加之后,可以通过元素的 dataset 属性来访问这些值,dataset 的值是 DOMStringMap 的一个实例化对象,其中包含之前所设定的自定义属性的“名-值”对。
例如:在项目中处理参数值(一个有 px 、另一个没有)
运用 dataset 储存后缀,有 px 后缀的标签中设置 <input data-sizing: px>:
<input type="range" name="blur" min="0" max="25" value="10" data-sizing="px">
<input type="color" name="base" value="#8aa8af">
JS 中通过 dataset.sizing 来获取后缀值:
const suffix = this.dataset.sizing || ''; 
此时 suffix 获取到的值,针对颜色为空,而针对长度类的则为 'px'。

八、用 JavaScript 改变 CSS 属性值

在 JavaScript 中 document.documentElement 即代表文档根元素。所以要改变全局的 CSS 变量,可以这样写:
document.documentElement.style.setProperty('--base', '#fff');
或
document.body.style.setProperty('--primary', '#7F583F');

document.documentElement和document.body的区别
参考:document.documentElement和document.body的区别

页面具有 DTD,或者说指定了 DOCTYPE 时,使用 document.documentElement。
页面不具有 DTD,或者说没有指定了 DOCTYPE,时,使用 document.body。

documentElement 和 body 相关说明:
(1) body是DOM对象里的body子节点,即 <body> 标签;
(2) documentElement 是整个节点树的根节点root,即<html> 标签;
(3DOM把层次中的每一个对象都称之为节点,就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,根目录下有子目录,子目录下还有子目录。
以HTML超文本标记语言为例:整个文档的一个根就是,在DOM中可以使用document.documentElement来访问它,它就是整个节点树的根节点。而body是子节点,要访问到body标签,在脚本中应该写:document.body。

九、toggle() 方法
9.1 定义和用法

toggle() 方法切换元素的可见状态。
如果被选元素可见,则隐藏这些元素,如果被选元素隐藏,则显示这些元素。

9.2 语法

$(selector).toggle(speed,callback,switch)

speed   
可选。规定元素从可见到隐藏的速度(或者相反)。默认为 "0"。
可能的值:毫秒 (比如 1500)"slow" "normal" "fast"
在设置速度的情况下,元素从可见到隐藏的过程中,会逐渐地改变其高度、宽度、外边距、内边距和透明度。
如果设置此参数,则无法使用 switch 参数。

callback    
可选。toggle 函数执行完之后,要执行的函数。
除非设置了 speed 参数,否则不能设置该参数。

switch  
可选。布尔值。规定 toggle 是否隐藏或显示所有被选元素。
True - 显示所有元素
False - 隐藏所有元素
如果设置此参数,则无法使用 speed 和 callback 参数。

注:该效果适用于通过 jQuery 隐藏的元素,或在 CSS 中声明 display:none 的元素(但不适用于 visibility:hidden 的元素)。

9.3 向 Toggle 事件绑定两个或更多函数

toggle() 方法用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。该方法也可用于切换被选元素的 hide() 与 show() 方法。
在javascript中toggle()为连续点击事件,当里面含有多个function(){}函数时,每次点击依次执行里面的function的函数,直至最后一个.随后每次点击都重复对这几个函数的轮番调用
语法:$(selector).toggle(function1(),function2(),functionN(),...)
function1() 必需。规定当元素在每偶数次被点击时要运行的函数。
function2() 必需。规定当元素在每奇数次被点击时要运行的函数。
functionN(),... 可选。规定需要切换的其他函数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容