CSS高效开发实战 4567

4 设计更炫目的字体
5 背景和颜色
6 更个性的边框
7 变换和动画

个性化字体的定义
@font-face{
    font-family: myFirstFont;
    src: url('Sansation_Light.ttf'), url('Sansation_Light.eot');
}
div{
    font-family:myFristFont;
}
Font Awesome的使用,引入css和字体文件,然后在使用的地方使用<i class="图标类"></i>即可,如<i class="fa fa-camera-retro"></i>

反射box-reflect,图片文字均可以用。目前 只有webkit核心浏览器支持。所以不是标准的。
.box-reflect:{ <方向><间距><渐变效果>}
方向:above/below/left/right
间距 倒影和元素之间的额外距离
渐变效果:
  • none:无遮罩图像
  • <url>:使用绝对或相对地址指定遮罩图像
  • <linear-gradient>:使用线性渐变创建遮罩图像
  • <radial-gradient>:使用径向(放射性)渐变创建遮罩图像
  • <repeating-linear-gradient>: 使用重复的线性渐变
  • <repeating-radial-gradient>: 使用重复的径向
<h1 style="-webkit-box-reflect: below 1px radial-gradient(transparent, transparent 50%, rgba(0,0,0,.3))">dfdfdfdf</h1>
        linear-gradient一共有三个参数:
    • 第一个表示线性渐变的方向,top:从上到下、left从左到右,left top,从左上到右下。该参数可省略,默认top
    • 第二个和第三个参数分别是起点颜色和重点颜色。之间还可以插入更多的参数,表示多种颜色的渐变
    • transparent是rgba(0,0,0,0)的别名

字体阴影--光晕、浮雕、投影效果
<h1 style="text-shadow: 0 0 5px #ff0000;color:white;font-size: 60px;">光晕效果</h1>
<h1 style="text-shadow: 2px 2px 5px #000000;color:white;font-size: 60px;">浮雕效果</h1>
    
h-shadow,水平阴影的位置,允许负值;v-shadow,垂直阴影的位置,允许负值
blur,可选,模糊的距离;color可选阴影的颜色

字体描边
仅webkit核心浏览器支持,其实可以通过text-shadow定义多个值来实现。
IE6-9可以使用特有的滤镜来实现该效果

字体分栏
css3的多列效果,需要用到3个属性
  • column-count: 定义分列的数量
  • column-gap: 定义每一列中间的宽度
  • column-rule: 定义分栏中间的样式。中间装饰线的宽度不会影响column-gap中定义的宽度
    • column-rule: 样式宽度  样式类型  样式颜色  column-rule: 2px outset red
    • div{
        column-count:3;
        -webkit-column-count:3;
        column-gap:30px;
        -webkit-column-gap:30px;
        column-rule:1px dashed black;
        -webkit-column-rule:1px dashed black;
      }
      .container{
        margin:auto;
        width:700px;
      }

字体溢出
example dd .user_name{
    display: block;
    white-space: nowrap;  //不允许换行
    text-overflow: ellipsis; //clip修剪文本  ellipsis 省略号代替  string 指定的字符串来代替
    overflow: hidden; //不允许出现滚动条
    width: 100px;  
}

第5章 背景和颜色

背景图片的大小
在 CSS3 之前,背景图片的尺寸是由图片的实际尺寸决定的。
background-size: 80px 60px;  第一个值是宽度,第二个值是高度;如果只设一个值,则高度默认是auto;
background-size:  length | percentage |cover|contain;
描述 测试
length

设置背景图像的高度和宽度。

第一个值设置宽度,第二个值设置高度。

如果只设置一个值,则第二个值会被设置为 "auto"。

测试
percentage

以父元素的百分比来设置背景图像的宽度和高度。

第一个值设置宽度,第二个值设置高度。

如果只设置一个值,则第二个值会被设置为 "auto"。

测试
cover

把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。

背景图像的某些部分也许无法显示在背景定位区域中。

测试
contain 把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。 测试
100%指的是相对于外围元素的100%,因此如果都配置成100%、100%,反而可能导致比例失调。
把图片拉伸、或者压缩成100%,然后高度或宽度auto去匹配。
还有两个可选项:cover和contain。 这两个选项都不会造成比例失真
cover:相当于图片宽度等于元素宽度,高度auto
contain:相当于图片高度等于元素高度,宽度auto
使用图片背景的origin和clip属性
注意: background-size一定要在指定图片之后设定,否则不生效。

图层叠加
允许设置多个背景图片,每个图片一层,写在前面的在最上面
可实现简单的层叠效果,但是会影响系统性能,多次服务器请求。
background:url( http://...) 0 0 no-repeat, url(...) 200px 0 no-repeat;

图片的Origin和clip属性
图像默认从内边距的左上角开始延展。origin可以指定从以下位置开始延展
  • 边框左上角:border-box
  • 内边距左上角: padding-box
  • 内容左上角: content-box
origin控制的是开始延展图片的范围,clip控制的是元素背景的显示范围。
可选参数同origin相同,都是border-box、padding-box、content-box。
origin和clip是可以同时使用的。比如,origin确定整个图片从左上角开始延展,然后clip决定了只显示内容部分的范围。

颜色模式
RGB基础上,增加透明通道的RBGA模式,和工业届常用的HSLA颜色模式。
RGB可显示256× 256×256 = 16 777 216种颜色
RGBA是在RGB基础上添加了一个Alpha透明通道,可表示颜色的透明度。
如果Alpha数值为0%,就是完全透明的;100%是完全不透明。

HSLA中4个参数:色调、饱和度、亮度、透明度
Hue(色调):0或360表示红色、120绿色、240蓝色,可取其他数值
Saturation(饱和度):0%-100%之间的值
Lightness(亮度):0%-100%之间的值
alpha(透明度):0-1之间

HSLA的维度人类可以理解,rgb则便于计算机识别,可以先用HSLA调整颜色,然后再转换为RGBA。
以上只能处理颜色的透明度,可以通过opacity来处理图片的透明度。

渐变
渐变效果分为线性渐变(linear-gradient)和放射渐变(radial-gradient)两种。
线性渐变
三个参数:方向、起始颜色、结束颜色。
最简单的模式只需要定义其实颜色和结束颜色,起点、终点和方向默认字元素的顶部到底部。
.test{
    background:linear-gradient(red, blue);
}
.test{
    background: -webkit-linear-gradient(left, red, blue); //webkit
    background: -o-linear-gradient(left, red, blue); //opera
    background: -moz-linear-gradient(left, red, blue); //firefox
    background: linear-gradient(to right, red, blue);   //标准写法
}
标准写法写的是to right,火狐和opera下用right,webkit用起始位置left表示。

还可以用角度来表示:
0deg 相当于to top、90deg相当于to right、180deg相当于to bottom、270deg to left
线性渐变可以支持任何中颜色的渐变,如构造彩虹效果:
.test{
    background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);
}
放射渐变
放射渐变默认对指定颜色进行均匀渐变。但是可以指定发生渐变的位置,还可以指定中心点的位置。
还可以指定渐变的形状、circle还是ellipse。指定反射渐变范围的可选参数。

bootstrap通过渐变使得按钮具有立体感。

可以通过放射渐变来制作光影效果
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style>
            .test {
                width:200px;
                height:200px;
                font-size:80px;
                line-height: 200px;
                text-align:center;
                background: radial-gradient(#ffffff 20%, #000000);
            }
            .test1 {
                width:200px;
                height:200px;
                font-size:80px;
                line-height: 200px;
                text-align:center;
                background: radial-gradient(#feb3ad, #fd695d);
            }
        </style>
    </head>
    <body>
        <div  class="test">赞</div>
        <div  class="test1">赞</div>
    </body>
</html>

第6章 更个性的边框
CSS3新增了三种边框属性border:
  • border-radius: 圆形边框
  • box-shadow:边框阴影
  • border-image:图片边框
border-radius 圆角边框:
可以使用像素做单位,可以使用百分比做单位(超过50%无效)
不同的角可以设置不同的弧度: border-top-left-radius: 30px;  border-bottom-left-radius: 3o0px;
border-shadow属性:
h-shadow 水平阴影的位置,可负值、v-shadow、blur(可选,模糊距离)、spread(可选,阴影的尺寸)
color(阴影颜色)inset(outset外部的阴影改为内部的阴影)
box-shadow{ color 水平偏移 垂直偏移 模糊距离 阴影尺寸 inset}
图片边框
border-image的属性:
border-image-source:边框向内位移
border-image-slice:
border-image-width:边框宽度
border-image-outset:边框图像区域超出边框的量
border-image-repeat:  repeat平铺、round铺满、stretch拉伸

第7章 变换和动画
变换 transform、渐变 transition、关键帧 @keyframes

变换类型
rotate旋转: transform:rotate(7deg); rotateX; rotateY; rotate3d;    rotateZ 等效于rotate
skew扭曲变换: transform:skew(30deg, 10deg); skewX,skewY; skew没有3d和skewZ选项
scale比例缩放: scale(1.1, 1.1)    scaleX   scaleY
translate位移变换:translate(100px, 20px) 向右位移100px,向下位移20px。可使用translateX(), translateY(), translateZ()

transition制作交互动画
jQuery可是改变某个元素的宽度,如$(element).css('width','300px');
执行结果是瞬间变到300px。平滑渐进也可以用js实现,但繁琐。
transition允许css在一定时间区间内平滑过渡。可在单击、获得焦点等时机出发,并圆滑地以动画效果改变CSS属性值。
.content{
    height: 100px;
    width:100px;
    -webkit-transition: height 0.6s;
    -moz-transition: height 0.6s;
    -o-transition: height 0.6s;
    transition: height 0.6s;  //如果高度发生改变,在0.6秒内完成平滑过渡
}
.content:hover{
    height:300px;
}
如果要改变多个属性,可以用逗号隔开。
transition 还可以包含设置渐进动画的函数,可选择的有六种:
  • ease:默认值,逐渐变慢
  • linear:匀速
  • ease-in:加速
  • ease-out:减速
  • ease-in-out : 加速后减速
  • cubic-bezier:允许自定义时间曲线
transition: all .5s ease-in-out 1s;
all表示任意属性的变化都应用过渡动画效果; 四个参数一次为 属性、过渡事件、过渡函数、延迟时间

@keyframes制作动画
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            @-webkit-keyframes test { //定义名为test的动画
                0% {
                    -webkit-transform: rotateY(0);
                }
                100% {
                    -webkit-transform: rotateY(-360deg);
                }
            }
            .aaa {
                font-size: 29px;
                width:80px;
                height: 50px;
                background: green;
                animation: test 8s infinite linear;  //通过animation使用名为 test的动画
                -webkit-animation: test 8s infinite;
            }
        </style>
    </head>
    <body>
        <div class="aaa">Good!</div>
    </body>
</html>
animation: test 8s infinite linear;
8s:动画执行一次的四件
infinite:动画循环的次数,infinite表示无限次
linear:动画的速度函数,同transition中的速度函数
还可以定义动画开始前的延迟时间、动画是否轮流反向播放等。
animation: name 8s linear 2s infinite alternate; //alternate表示动画正向循环后再反向循环

动画的控制:
animation-play-state: paused;  //paused暂停,running用于开启动画
-webkit-animation-play-state: paused;


CSS本身只能提供hover、visited等有限的几种触发条件,对于更复杂的场景,需要借助于JavaScript
如Move.js。  http://visionmedia.github.io/move.js/












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值