CSS3 案例研究与学习

loading加载效果

效果如下所示,点击预览:

http://codepen.io/hawx1993/pen/YyYVpX

box-shadow 属性

box-shadow: 投影方式,X轴偏移量,Y轴偏移量,阴影模糊半径,阴影扩展半径,阴影颜色;

box-shadow可以多层阴影同时使用,每层阴影之间用逗号隔开。最先写的阴影将显示在最顶层

box-shadow:
    -10px 0 10px red, /*X轴为负,阴影在左边*/
    10px 0 10px yellow, /*右边阴影*/
    0 -10px 10px blue, /*Y轴为负,阴影在顶部*/
    0 10px 10px green; /*底边阴影*/
  
  //分割线
  -webkit-box-shadow: 1px 4px 4px rgba(0,0,0,0.2),/* 外阴影*/
  1px 2px 30px rgba(0,0,0,0.2) inset;/*内阴影*/

具有动感的loading动画效果

效果如下所示,点击预览:

http://codepen.io/hawx1993/pen/wKRPmN

winphone loading

http://codepen.io/hawx1993/pen/yYRzZB

animation属性

animation: name duration timing-function delay iteration-count direction fill-mode  play-state ;

参数依次为:

动画名称,动画持续时间,动画过渡类型,动画延迟时间,动画的循环次数,动画在循环中是否反向运动, 动画时间之外的状态 , 动画的状态

timing-function取值如下

linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)
ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)
ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)
ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)

direction取值如下:

normal:正常方向
reverse:反方向运行
alternate:动画先正常运行再反方向运行,并持续交替运行
alternate-reverse:动画先反运行再正方向运行,并持续交替运行

fill-mode的取值如下

none:默认值。不设置对象动画之外的状态
forwards:设置对象状态为动画结束时的状态
backwards:设置对象状态为动画开始时的状态
both:设置对象状态为动画结束或开始的状态

play-state: 运动 | 暂停

animation-play-state = running | paused

border-radius属性

border-radius:如果"/"反斜杠符存在,"/"前面的值是设置元素圆角的水平方向半径,"/"后面的值是设置元素圆角的垂直方向的半径;

另外四个值是按照top-left、top-right、bottom-right、bottom-left顺序来设置的。

  • border-radius:设置三个值,第一个值设置top-left,第二个值设置top-rightbottom-left,第三个值设置bottom-right

  • border-radius:设置两个值,top-left等于 bottom-right,并且取第一个值;top-right等于bottom-left,并且取第二个值

  • border-radius:水平半径 / 垂直半径(60px 40px 30px 20px)/ (30px 20px 10px 5px):每个数值分别为上右下左的方向值

border-radius: 左上角水平圆角半径大小,右上角水平圆角半径大小 ,右下角水平圆角半径大小 ,左下角水平圆角半径大小 / 左上角垂直圆角半径大小 ,右上角垂直圆角半径大小 ,右下角垂直圆角半径大小 ,左下角垂直圆角半径大小;

border-radius:300px ===
border-radius: 300px 300px 300px 300px/300px 300px 300px 300px;

flex弹性盒模型

响应式DEMO:

http://codepen.io/hawx1993/pen/KdrVrZ

伸缩性flex

flex:none | <' flex-grow '> <' flex-shrink >'? || <' flex-basis '>


flex-grow:扩展比例:默认值1
flex-shrink:收缩比例:默认值1
flex-basis:伸缩基准值。`「flex子项」`长度的起始数值。

如果缩写「flex: 1」, 则其计算值为「1 1 0%」
如果缩写「flex: auto」, 则其计算值为「1 1 auto」
如果「flex: none」, 则其计算值为「0 0 auto」

flex-flow 定义了伸缩容器的主轴和侧轴

flex-flow:<' flex-direction '> || <' flex-wrap '>

<' flex-direction '>: 定义弹性盒子元素的排列方向。row、row-reverse、column、column-reverse
<' flex-wrap '>: 控制flex容器是单行或者多行。
默认值:row nowrap

flex-wrap 定义伸缩容器里是单行还是多行显示

flex-wrap:nowrap | wrap | wrap-reverse

nowrapflex容器为单行。该情况下flex子项可能会溢出容器
wrapflex容器为多行。该情况下flex子项溢出的部分会被放置到新行,子项内部会发生断行
wrap-reverse:反转 wrap 排列。

flex-direction 决定伸缩布局主轴的方向

  • row:伸缩项目按照他们在文档流中出现的顺序进行显示

  • row-reverse:如果书写模式是ltr,伸缩项目从右向左排列

  • column:按照文档流从上到下排列

  • column-reverse:伸缩项目从下到上排列

/* flex-flow: <'flex-direction'> */
flex-flow: row;
flex-flow: row-reverse;
flex-flow: column;
flex-flow: column-reverse;

/* flex-flow: <'flex-wrap'> */
flex-flow: nowrap;
flex-flow: wrap;
flex-flow: wrap-reverse;

/* flex-flow: <'flex-direction'> and <'flex-wrap'> */
flex-flow: row nowrap;
flex-flow: column wrap;
flex-flow: column-reverse wrap-reverse;

/* Global values */
flex-flow: inherit;
flex-flow: initial;
flex-flow: unset;

图片描述

响应式布局Media Queries

类型 解释
@meida all and (min-width:800px) 所有最小水平屏幕宽度为800像素的屏幕应用规则
@meida and (min-width:800px) 简写方式,同上
@media (not min-width:800px) 当最小宽度不是800像素时会应用下列CSS规则


具有动感的下拉选择框

效果如下所示:

http://codepen.io/hawx1993/pen/rOoGpP

transform-origin

设置旋转元素的基点位置:

transform-origin: x-axis y-axis z-axis;

transform:rotate()

角度值为正,则顺时针旋转,反之则逆时针旋转

总结

指定x轴,y轴的值的属性有translate()scale()

  • translate(x,y)

  • translate3d(x,y,z)

  • translateX(x)

  • translateY(y)

  • scale(x,y)

  • scaleX(number)

  • scaleY(number)

translate3d(tx,ty,tz)

  • tx:代表横向坐标位移向量的长度

  • tz: 代表z轴位移向量的长度。此值不能是一个百分比值,如果取百分比将会认为是无效

指定角度的属性有rotate()skew()

  • rotate(angle)

  • rotateX(angle)

  • rotateY(angle)

  • rotateZ(angle)

rotateX(a) 函数功能等同于rotate3d(1,0,0,a)
rotate3d(x,y,z,a):x,y,z取0~1的数值,用来描述元素围绕X/Y/Z轴旋转的矢量值。

  • skewX(angle)

  • skewY(angle)

  • skew(x-angle,y-angle)

具有动感的复选框

http://codepen.io/hawx1993/pen/vNvWgW

beforeafter属性

:before是在元素的内容之前插入或创建一个虚拟的元素,:after是在元素的内容之后插入或创建一个虚拟的元素 (这相当于插入一个first-childlast-child属性)

<label> 标签的 for 属性应当与相关元素的 id 属性相同。
"for" 属性可把 label 绑定到另外一个元素。请把 "for" 属性的值设置为相关元素的 id 属性的值。

css3图片缩放

效果如下所示,点击预览:

http://codepen.io/hawx1993/pen/zvyjEp


30.2k 声望
4.7k 粉丝
0 条评论
推荐阅读
谈谈react hooks UI与业务逻辑分离的必要性与技术方案
当前端业务复杂度上升到一定程度的时候,如何提升前端代码质量便成了老生常谈的话题。似乎前端总逃不开改他人代码,重构,修复bug的宿命。那么,我们要如何从项目代码层面,改变这一局面呢?才能保证项目A之于开...

trigkit41阅读 710

还在用 JS 做节流吗?CSS 也可以防止按钮重复点击
举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,比如只允许每300ms提交一次,这时候我想大部分同学都会到网上直接拷贝一段throttle函数,或者直接引用lodash工具库

XboxYan35阅读 2.7k评论 2

封面图
CSS transition 小技巧!如何保留 hover 的状态?
欢迎关注我的公众号:前端侦探通常情况下,hover 是无法保存状态的。鼠标移入触发额外样式,一旦移出就还原了 {代码...} 这就意味着,如果需要保留hover的状态,可能就不得不借助JS了,比如下面是某某书院的首页...

XboxYan30阅读 3.9k评论 2

封面图
CSS 如何设置自动滚动定位的“安全”间距?
欢迎关注我的公众号:前端侦探介绍两个和滚动定位相关的 CSS 属性:scroll-padding和 scroll-margin在平时开发中,经常会碰到需要快速定位的问题,比如常见的锚点定位 {代码...} 这样,在点击a标签时会自动定位到...

XboxYan31阅读 2.5k评论 2

封面图
由小见大!不规则造型按钮解决方案
今天,有个群友在群里提问,使用 CSS 能否实现下述这个图形:emmm,中间这个酷似三次贝塞尔曲线的造型,使用 CSS 不太好实现。我的建议是切图实现,然而群友要求一定要用 CSS 实现。虽然麻烦,但是这个图形勉强也...

chokcoco17阅读 1.3k

封面图
CSS 如何根据背景色自动切换黑白文字?
在项目中,经常会碰到背景色不确定的场景,为了让内容文字足够清晰可见,文字和背景之间需要有足够的对比度。换句话说,当背景是深色时,文字为白色,当背景是浅色时,文字为黑色,就像这样:

XboxYan19阅读 1.7k

封面图
妙用 CSS 动画来实现颜色加深、减淡等混合操作
欢迎关注我的公众号:前端侦探在上一篇 CSS 如何根据背景色自动切换黑白文字?中,讲述了文本自适应背景色的一些小技巧,不过还存在一定局限性,比如:如果是背景是渐变色该怎么办?很容易想到的思路是将两个渐变...

XboxYan13阅读 1.9k评论 1

封面图
30.2k 声望
4.7k 粉丝
宣传栏