@media not screen and (color),print and (color)
@media not screen and (color) or print and (color)
@media (not(screen and (color))), print and (color)
//上面三个等价
//加了not有效范围只到逗号
/*-----------iphone 4 and 4s -------------*/
/* Portrait and Landscape */
@media only screen
and (min-device-width: 320px)
and (max-device-width: 480px)
and (-webkit-min-device-pixel-ratio:2){}
/*--------------iphone5 and 5s --------------*/
/* Portrait and Landscape */
@media only screen
and (min-device-width:320px)
and (max-device-width:568px)
and (-webkit-min-device-pixel-ratio:2){
}
CSS(高级)
CSS 动画
[Transform(变换)]()
2D 转换
CSS3 2D转换,我们可以斜拉(skew),缩放(scale),旋转(rotate)以及位移(translate)元素。
注意: Internet Explorer 10, Firefox, 和 Opera支持transform 属性。Chrome 和 Safari 要求前缀 -webkit- 版本。 Internet Explorer 9 要求前缀 -ms- 版本.
常用 2D 变换方法:
translate()
translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动
rotate()
rotate()方法,在一个给定度数沿着元素中心顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。
scale()
scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:
skew()
skew()方法,该元素会根据横向(X轴)和垂直(Y轴)线参数给定角度:
以上几种方法都有其各自的利弊,在实际应用中建议使用第一种和第四种,因为这两种方法是在项目制作中是常用的方法,对于他们的具体区别skewX(30deg) 如下图:
![](https://cdn.nlark.com/yuque/0/2019/jpeg/247789/1576482303936-afd89a67-02b6-473e-82ba-18de2e39af95.jpeg#align=left&display=inline&height=115&originHeight=115&originWidth=159&size=0&status=done&style=none&width=159)
#
skewY(10deg) 如下图:
skew(30deg, 10deg) 如下图:
matrix()
matrix()方法和2D变换方法合并成一个。
matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能。
源码
https://gitee.com/turingitclub/css-learning/blob/dev/base/2d_transform.html
3D 转换
CSS3 3D Transform,用于 3 维动画或旋转。
CSS3 3D 转换是一个属性,用于改变元素的实际形式。这个特性可以改变元素的形状、大小和位置。
主要有下列方法:
注意:Internet Explorer 10 和 Firefox 支持 3D 转换; Chrome 和 Safari 必须添加前缀 -webkit-; Opera 还不支持 3D 转换(支持 2D 转换 )
otateX()
rotateX()方法,围绕其在一个给定度数X轴旋转的元素。
rotateY()
rotateY()方法,围绕其在一个给定度数Y轴旋转的元素。
rotateZ()
rotateZ()方法,围绕其在一个给定度数Z轴旋转的元素。
rotate3d()
otate3d(x,y,z,a)中取值说明:
例子
转换方法
n,n,n,n,n,n,n,n,n,n)
源码
https://gitee.com/turingitclub/css-learning/blob/dev/base/3d_transform.html
[Transition(过渡)]()
CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。
https://codepen.io/AlexZ33/pen/KKwXLea
尽管 CSS3 过渡效果是足够的过渡的一个元素,但是 text-transform 属性可以提高 CSS3 过渡效果的风格。
主要有四个属性的CSS3转换效果,已被描述如下:
注意:Internet Explorer 10, Firefox, Opera, Chrome, 和Opera 支持transition 属性。Safari 需要前缀 -webkit-。Internet Explorer 9 以及更早的版本,不支持 transition 属性。Chrome 25 以及更早的版本,需要前缀 -webkit-
transition-property
规定应用过渡的 CSS 属性的名称。
transition-duration
定义过渡效果花费的时间。默认是 0。 时间单位可以是秒/毫秒。
transition-timing-function
规定过渡效果的时间曲线。默认是 "ease"。
其中:
<integer>[, [ start | end ] ]?
):接受两个参数的步进函数。第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。<number>, <number>, <number>, <number>
):特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内https://codepen.io/AlexZ33/pen/KKwvWjg
注意,emmet语法。 我要生成下面的html结构,用的 div#wrapper>(p+div.progress-bar#bar$)*9 再按Tab键
transition-delay
规定过渡效果何时开始。默认是 0。
https://codepen.io/AlexZ33/pen/eYmBYmW
CSS 3D transition
https://codepen.io/AlexZ33/pen/VwYMOBR
[Animation(动画)]()
CSS3,我们可以创建动画,它可以取代许多网页动画图像,Flash 动画,和 Javascripts。
CSS3 @keyframes 规则
要创建CSS3动画,你将不得不了解
@keyframes
规则。@keyframes
规则是用来创建动画。@keyframes
规则内指定一个 CSS样式和动画将逐步从目前的样式更改为新的样式。注意:Internet Explorer 10、Firefox 以及 Opera 支持
@keyframes
规则和 animation 属性。 Chrome 和 Safari 需要前缀 -webkit-。CSS3 动画
当在
@keyframe
创建动画,把它绑定到一个选择器,否则动画不会有任何效果。指定至少这两个 CSS3 的动画属性绑定向一个选择器:
例子:
CSS3动画是什么?
例子:
常用属性
其他还有:
- linear
- ease-in
- ease-out
- ease-in-out
- step-start
- step-end
- steps(int, start/end)
- cubic-bezier(n,n,n,n): 三次贝塞尔
负值 animation-delay —— 进阶
源码
示例01:
https://gitee.com/turingitclub/css-learning/blob/dev/base/animation.html
示例02:
https://gitee.com/turingitclub/css-learning/blob/dev/base/animation_2.html
示例03 running hourse:
https://gitee.com/turingitclub/css-learning/blob/dev/base/animation_3.html
steps(int, start|end)
算是step-start
和step-end
的进化型,step
等同于steps(1, start)
step-end
等同于steps(1, end)
因为只走了
一步
,如果我们把int步数增加,就会看到每个关键影格之间多了一些演算出来的影格,当然如果步数设定越多,看到的动画也会越流畅。 (但需要这样,不用step就好了)比如: 如果把上面的
step-start
改成steps(3, start)
,step-end
改成steps(3,end)
会得到下面的结果https://codepen.io/AlexZ33/pen/PowpKLb
如果熟练 steps 的用法,就能够很简单的使用 sprite 图片来做动画,什麽是 sprite 图片 呢?就是将许多图案集合成一张图,接著透过 CSS 的语法使这些图案分别呈现在网页裡,这样就能大幅减少多张图片载入的 request 数量。
上图是一张经典的 sprite 图片 ( Leland Stanford 所拍摄 ),只要透过 CSS 动画的 steps,我们也能很简单的让图片中的马儿跑起来。
示例04: marriage-proposal:
僵尸行走
running house
动画的区别, 用js (jquery)的animate函数来做帧动画的控制源码: https://gitee.com/turingitclub/css-learning/tree/dev/task04/zoombieWalking
酷炫3D动画 (旋转的正方体)
源码: https://codepen.io/AlexZ33/pen/yLyzWwo
炫酷页面开发(轮播图)
酷炫页面开发(3D 视频展示区)
代码 : https://codepen.io/AlexZ33/pen/zYxNVzw
css-only-dropdown-menu
源码 : https://gitee.com/turingitclub/css-learning/blob/dev/task04/css-only-dropdown/index.html
CSS-only-tooltip
源码 : https://gitee.com/turingitclub/css-learning/blob/dev/task04/CSS-only-Tooltip/index.html
漂亮ToolTips效果
CSS响应式设计
Viewport
什么是 Viewport?
viewport 是用户网页的可视区域。
viewport 翻译为中文可以叫做"视区"。
手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。
设置 Viewport
一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:
以下实例演示了使用viewport和没使用viewport在移动端上的效果:
实例1、没有添加 viewport:点击查看
代码:https://gitee.com/turingitclub/css-learning/blob/dev/base/%E5%93%8D%E5%BA%94%E5%BC%8F%E8%AE%BE%E8%AE%A1/example_withoutviewpoint.html
实例2、添加 viewport:点击查看
![image.png](https://cdn.nlark.com/yuque/0/2020/png/247789/1579507832530-af15f843-2a98-465b-98a8-e0a5bbd1f0aa.png#align=left&display=inline&height=422&name=image.png&originHeight=845&originWidth=834&size=278026&status=done&style=none&width=417)
![](https://cdn.nlark.com/yuque/0/2020/png/247789/1579506969399-382d4acf-89f8-4ac4-b05e-2753bc66ff5a.png#align=left&display=inline&height=355&originHeight=355&originWidth=200&size=0&status=done&style=none&width=200)
如果你在平板电脑或手机上访问,可以直接点击查看效果。
代码:https://gitee.com/turingitclub/css-learning/blob/dev/base/%E5%93%8D%E5%BA%94%E5%BC%8F%E8%AE%BE%E8%AE%A1/example_withviewpoint.html
不同的地方在这里:
viewport视口
上面这句告诉设备要使用理想视口 ,理想视口的宽度作为布局视口的宽度(width定义布局视口的宽度 如果不指定 布局视口的宽度就是厂商的默认值)
最小缩放比例 最大缩放比例都为1 禁用了用户缩放
Media Query(媒体查询)
媒体(media)查询在W3CH CSS3 上有介绍:CSS3 @media 查询。
使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
基础可以戳W3CH教程 响应式 Web 设计 – 媒体查询
下面我们对教程未详细提到的内容做个补充
Media Type
上面的media语句表示的是:当页页宽度小于或等于600px,调用small.css样式表来渲染你的Web页面。首先来看media()的语句中包含的内容:
1、screen:这个不用说大家都知道,指的是一种媒体类型 --> 详情戳MDN文档;
2、and:被称为关键词,与其相似的还有not,only,稍后会介绍;
3、(max-width:600px):这个就是媒体特性,说得通俗一点就是媒体条件。
前面这个简单的实例引出两个概念性的东西,一个就是媒体类型(Media Type)和 媒体特性(Media Query)
all 可以是 screen ,print.这是媒体类型可以通过媒体类型对不同的设备指定不同的样式,在css2中我们常碰到的就是all(全部),screen(屏幕),print(页面打印或打邱预览模式),其实在媒体类型不止这三种,w3c总共列出了10种媒体类型。
页面中引入媒体类型方法也有多种:
1、link方法引入
2、xml方式引入
3、@import方式引入
@import引入有两种方式,一种是在样式文件中通过@import调用别一个样式文件;另一种方法是在>/head>中的中引入,单这种使用方法在ie6-7都不被支持 如
样式文件中调用另一个样式文件:
在>/head>中的中调用:以上几种方法都有其各自的利弊,在实际应用中建议使用第一种和第四种,因为这两下面我们对教程未详细提到的内容做个补充
4、@media引入
这种引入方式和@import是一样的,也有两种方式:
样式文件中使用:
在>/head>中的中调用:
以上几种方法都有其各自的利弊,在实际应用中建议使用第一种和第四种,因为这两下面我们对教程未详细提到的内容做个补充种方法是在项目制作中是常用的方法,对于他们的具体区别
Media Query
前面有简单的提到,Media Query是CSS3 对Media Type的增强版,其实可以将Media Query看成Media Type(判断条件)+CSS(符合条件的样式规则),常用的特性w3c共列出来13种。具体的可以参阅:Media features。为了更能理解Media Query,我们在次回到前面的实例上:
转换成css中的写法为:
其实就是把small.css文件中的样式放在了
@media srceen and (max-width;600px){…}
的大括号之中。在语句上面的语句结构中,可以看出Media query和css的属性集合很相似,主要区别在:1、Media query只接受单个的逻辑表达式作为其值,或者没有值;
2、css属性用于声明如何表现页页的信息;而Media Query是一个用于判断输出设备是否满足某种条件的表达式;
3、Media Query其中的大部分接受min/max前缀,用来表示其逻辑关系,表示应用于大于等于或者小于等于某个值的情况
4、CSS属性要求必须有属性值,Media Query可以没有值,因为其表达式返回的只有真或假两种
第一个,如果是老浏览器不支持媒体查询,只解析到only,老浏览器是不会应用后面的样式的 因为没有叫only的设备
第二个,不管后面的媒体查询样式怎么写,对于老的浏览器来说,都会应用这样一段样式,因为它已经把后面的逻辑表达式忽略掉了,它的值永远为真。
注意: 一般我们在对某个设备需要用媒体查询时候最好带上only 除非不需要兼容老浏览器
css3主要的媒体属性
响应式设计的断点
以上这种 **针对特定设备来做样式选择*** 做法不推荐,除非特例
要对屏幕类型
小屏幕 0-480
中屏幕 481-800
大屏 801-1400
巨屏 1400+
这种划分结构
以上是常用的Media Query
这篇文章有对标准的各个标准设备总结Media Queries for Standard Devices
图片(Responsive Images)
视频
框架
Media Query 不得单独编排,必须与相关的规则一起定义
Media Query 如果有多个逗号分隔的条件时,应将每个条件放在单独一行
精灵图
响应式网站设计原则
整站项目示例(自学能力强的同学亲启)
注意: 我知道这不部分内容对同学们来说有点像天书,但是如果你觉得自己学习能力不错,直接看这部分代码,并对照文档和有效使用搜索引擎。基本上把它学透,你就可以找工作了。
项目内有文档
https://gitee.com/turingitclub/css-learning/tree/dev/task05/%E5%93%8D%E5%BA%94%E5%BC%8F%E5%BC%80%E5%8F%91
【拓展】CSS标准学习
CSS标准列表:http://www.w3.org/Style/CSS/current-work
学习目标:8周完成以下CSS标准的学习
学习进度:
拓展阅读