zoukankan      html  css  js  c++  java
  • CSS3一些新的UI方案

    文本新增属性

    一、文字阴影

    用法: text-shadow: h-shadow v-shadow blur color;

    可以一次设置多层阴影,用逗号分开,如下,
    text-shadow: -5px -10px -5px mediumpurple, 5px 10px 5px pink;

    二、文字描边

    用法:-webkit-text-stroke: px值 color;

    -webkit-text-stroke:4px pink;

    此属性还未完全进入w3c标准,所以需要加上-webkit-前缀,在chrome上运行

    三、文字排版

    用法:

    direction: 排版方向;

    unicode-bidi:bidi-override;   (配合这句代码使用)   

    排版方向有如下八个,

     

    四、文字溢出部分显示省略号

    共有四步:

    (1)限宽盒子模型

    number值px;

    (2)文本不换行

    white-space:nowrap;   

    (3)该盒子设置溢出部分隐藏

    overflow:hidden;

    (4)溢出部分省略号代替

    text-overflow:ellipsis;

    盒模型新增属性

    一、盒模型阴影

    用法:box-shadow: h-shadow v-shadow blur spread color;   (外阴影)

    box-shadow: 10px 10px 30px 40px blueviolet;

    还可为盒子同时设置外阴影和内阴影,之间用逗号隔开,如下:

    box-shadow: 0 0 30px 30px #000, inset 0 0 30px 10px yellow;

    二、盒模型倒影

    用法:-webkit-box-reflect: 方向值 px值 linear-gradien(用法如下);

    方向值可取值有如下7个,px值表示盒子和倒影之间的间隔大小

    linear-gradient(-90deg,rgba(0,0,0,1) 0,rgba(0,0,0,0) 70%) 

    默认自上而下渐变,渐变方向可以改变,百分比表示渐变到这里截至

    三、通过拖拉盒模型右下角来重置盒模型大小

    resize: val;

    overflow:auto;  (不可少)

    其中val可以是both表示水平垂直方向都可重置,horizontal表示只可水平方向重置,vertical表示只可垂直方向重置

    四、使用width、height固定死盒模型的大小,使其大小不会因盒子本身border值或padding值的改变而改变

    box-sizing: border-box;

    五、盒模型圆角

    border-radius: px值;

    作用:设置盒子四个角的弯曲度

    只写一个px值,代表作用于所有角,写多个px值时,作用顺序可参看下图

    另一种书写形式如下所示(原理是利用椭圆的短长轴)

    新增UI样式

    一、边框图片

    该样式较为复杂,截图说明,如下所示:

      

    设置边框图片需要提供一个九宫格图片,为border-image-slice属性设置百分比或具体数值(注意不加px)来分隔图片,为border-image-repeat属性设置伸缩方式,到这已经可以实现边框图片效果。

    二、盒模型背景图片(1、2、3属性在css2就有了,因为比较重要,特意列出!)

    盒模型的背景图片默认显示在盒模型的内容区、padding区、右下border区。或则说成是盒模型背景图片绘制于padding区,截止于右下border区

    (1)background-image

    作用:设置背景图片

    可以设置多个背景图片,多个url用逗号隔开

    background-image:url(img/lhh.png), url(img/lzp.png);

    (2)background-position

    作用:设置背景图片的位置。默认背景图片左上角和盒模型除去边框后的左上角重合

    取值为百分比时,0% 0%表示图片左上角和盒模型左上角重合,100% 100%表示图片右下角和盒模型右下角重合

    取值为px值时,正值:背景图片右移动或者下移动;负值:背景图片左移动或者上移动(这种情况实际开发中用的较多,常用于控制精灵图)

    两种取值方式都是,第一个值为x轴偏移量,第二个值为y轴偏移量,如果只设置一个值,这个值表示x轴偏移量,y轴会隐式设置为居中效果 

    (3)background-attachment

    作用:设置背景图片相对于谁固定

    取值为fixed,表示相对于浏览器视口固定,默认是相对于浏览器视口的左上角

    取值为scroll,该属性默认值就是scroll,表示相对于该盒模型除去边框后的左上角固定

    (4)background-size

    作用:规定背景图片的尺寸

    取值为普通值,如10px,直接设置背景图像的宽度和高度

    取值为百分比时,参照盒模型自身尺寸(不包含盒子边框大小)来设置背景图像的宽度和高度,若取为100% 100%,背景图片会填满盒子,图片可能会出现拉伸现象

    两种取值方式都是,第一个值设置宽度,第二个值设置高度。如果只设置一个值,这个值表示设置宽度,第二个值会被隐式设置为 "auto"

    (5)background-origin

    作用:设置背景图片的渲染起始位置,默认是从padding-box开始的

    可选值有3个:padding-box、border-box、content-box

    (6)background-clip

    作用:设置背景图片的渲染截止位置(如果设置有背景色,该属性会一并影响背景色的渲染效果)

    可选值有4个:padding-box、border-box、content-box、text

    注意:text,表示使用文本截止背景渲染,即只在文字内渲染背景图片,使用text值时,属性要加前缀-webkit-,还要将文本设置成透明色

    (7)线性渐变

    linear-gradient(direction, color1 percent1, color2 percent2, ...)

    作用:为盒模型创建一个颜色线性渐变的背景色

    direction:默认自上而下渐变,可通过direction该变渐变方向,direction可取值有角度如-90deg、方向如to right。角度值0deg表示自上而下渐变,角度值为正 顺时针变换,为负 逆时针变换。方向值有八个,分别是:top、top right、right、bottom right、bottom、bottom left、left、left top

    color:可取具体颜色值,也可取rgba()透明色

    percent:表示各个颜色的颜色阈值,从0%至100%,如果不从0%开始或者不在100%结束,这些区域就用对应的纯色填充,默认均匀分布

    background: linear-gradient(90deg, red 10%, orange 15%, yellow 20%, pink 30%, blue 50%, indigo 65%, violet 80%);

    重复渐变

    repeating-linear-gradient()

    用法如上,需要配合颜色阈值使用

    background: repeating-linear-gradient(to right, red 10%, pink 30%);

    (8)径向渐变

    radial-gradient(fcsc xingzhuang, color1 percent1, color2 percent2, ...)

    默认,盒子为正方形就以圆形扩散渐变,为长方形就以椭圆扩散渐变,而且在盒子模型中心到顶角的方向上均匀分布

    可通过xingzhuang值改变渐变的形状,可选值有circle(圆)、ellipse(椭圆)

    可通过fcsc值改变渐变的结束位置,可选值有farthest-corner(最远角)、closest-corner(最近角)、farthest-side(最远边)、closest-side(最近边)

    若形状为圆形,还可改变圆心位置,如下所示,

    background: radial-gradient(closest-corner circle at xpx ypx, red, pink);

    at后的px值相对于盒子模型去除边框后的左上角进行偏移

    重复渐变

    repeating-radial-gradient()

    需要配合颜色阈值使用

    三、过渡

    css样式变化往往一瞬间完成,transition提供了一种机制,可以让css样式变化成为一个持续一段时间的过程。

    用法:transition: property duration timing-function delay;  (从display: block;到display: none;属性变化没法设置过渡)

    transition属性是一个简写属性,用于依次设置以下四个过渡属性:

    transition-property:指定过渡动画的属性(指定多个变化的属性时用逗号隔开,其他三个过渡属性的设置应与之一一对应)
    transition-duration:指定过渡动画的时间(单位可以是s、ms,如果是0也要加上一个单位,否则不会出现过渡效果)
    transition-timing-function:指定过渡动画的形式,可取值有linear(匀速)、ease(先快后慢)、ease-in(越来越快)、ease-out(越来越慢)
    transition-delay:指定过渡动画的延迟(单位可以是s、ms)

    transitionend:当过渡完成后,会触发该事件

    如果简写属性transition中只有一个时间值,给transition-duration。例子,transition: 2s 3s width,3s height;  (谁需要过渡动画这种效果,就把transition属性写在谁的css样式里)

    注意:浏览器对css的解析速度极快,如果说一个属性在正要触发过渡时被替换成另一个了,就是替换之后的属性触发过渡; 

    元素在页面渲染还没有结束时,属性改变不触发过渡;(这种情况往往出现在js代码中少写了window.onload,从而导致没有等页面绘制完,就去改变属性)

    四、2D变换

    变换也是瞬间完成,和过渡配合使用,就有了美妙的动画效果

    变换只关注元素变换前的开始状态和变换后的结束状态

    transform:只对块级元素生效,默认以元素中心为基点做变换,可通过transform-origin属性改变元素基点

    (1)平移

    transform: translate(xpx, ypx); 表示相对自己原来的位置进行平移,取值百分比时表示相对自身大小。

    translateX()表示只在X轴方向上平移

    translateY()表示只在Y轴方向上平移

    (2)旋转

    transform: rotate(deg)

    取值为一个角度值,单位deg

    rotateX()表示围绕贯穿元素基点的X轴做旋转

    rotateY()表示围绕贯穿元素基点的Y轴做旋转

    (3)倾斜

    transform: skew(xdeg, ydeg);

    理解xdeg的取值时,如果为正值,可以理解成在X轴正方向上倾斜了xdeg,为负值,就是在X轴负方向上倾斜了xdeg

    skewY()表示只在Y轴方向上倾斜

    skewX()表示只在X轴方向上倾斜

    (4)缩放

    transform: scale(数字值);

    取值为1表示不缩放,取值为0表示缩小至消失

    取值小于1表示缩小,取值大于1表示放大

    取值为负数表示先消失后出现

    scaleX()表示只在X轴方向上缩放

    scaleY()表示只在Y轴方向上缩放

    (5)基点(不算变换)

    transform-origin: x y;用来改变元素的变换基点

    以元素(包含边框)的左上角为原点建立浏览器坐标系,

    x表示将元素基点置于X轴的何处

    y表示将元素基点置于Y轴的何处

    x的可取值类型有:left、center、right、px值、百分比

    y的可取值类型有:top、center、bottom、px值、百分比

    取值为百分比时,相对于元素(包含边框)自身大小,0% 0%表示基点在元素左上角(包含边框),100% 100%表示基点在元素右下角(包含边框)

    (6)变换组合

    变换原理是根据高数中的矩阵设计的,矩阵运算不满足交换律,所以一个元素同时有多个变换时,各个变换的书写顺序变了,呈现出的效果也不一样。

    变换组合的执行顺序是从右往左执行。不是先执行完这个,再去执行下一下,而是通过矩阵运算,算出过渡结束时元素上各个点的坐标,直接往结束状态变换。

    五、3D变换

    比2D变换多了Z轴,Z轴特点是往屏幕里面是负值,往屏幕外面是正值

    (1)平移

    translateZ(zpx)表示只在Z轴方向上平移,取值只能是px值(视觉效果是缩放),如果zpx大于景深,超出景深的部分将看不到

    translate3d(x, y, zpx)表示一次设置三个轴上的平移量

    (2)旋转

    rotateZ(deg)表示围绕贯穿元素基点的Z轴做旋转,取值是角度值,单位为deg,rotate()的默认效果就是rotateZ()

    rotate3d(x, y, z, deg)

    作用:(x, y, z)确定空间中的一个坐标点,该属性作用就是围绕着坐标系原点和该点确定的直线做旋转

    (3)缩放

    scaleZ(num)需要和translateZ(zpx)配合使用才有效果,num*zpx就是Z轴方向上移动的距离,从而产生缩放效果。必须先移动后缩放,就像transform: scaleZ(2) translateZ(100px);

    scale3d(xnum, ynum, znum)表示一次设置三个轴上的缩放量

    (4)基点

    transform-origin: x y z;用来改变元素的变换基点

    以元素(包含边框)的左上角为原点建立浏览器空间坐标系,

    x表示将元素基点置于X轴的何处

    y表示将元素基点置于Y轴的何处

    z表示将元素基点置于Z轴的何处

    x的可取值类型有:left、center、right、px值、百分比

    y的可取值类型有:top、center、bottom、px值、百分比

    z只能取px值

    (5)景深(一种特殊的变换,不可继承)

    景深就是在Z轴方向上元素到电脑屏幕的距离,景深越大,元素离我们越远,元素变形越小

    有景深的元素称为舞台元素,舞台元素的所有后代元素都会具有该景深,如果后代元素也设置了景深,景深就叠加成为一个更大的景深,而不是覆盖掉

    (5.1)给元素设置景深有两种方式,

    a:通过transform属性  (作用于元素自身)

    transform: perspective(px值), rotateZ();  (perspective()必须放在最前面)

    案例,使用这种方式开启景深的div元素hover之后若要成功变换,div:hover所在的选择器中也需要设置一遍transform: perspective(px值), rotateZ(别的值);与div元素中transform属性的设置一一对应

    b:通过perspective属性  (作用于元素的后代元素)

    perspective: px值;   本身不会有什么效果,只对其后代元素起作用

    (5.2)景深基点  (不可继承)

    perspective-origin: x-axis y-axis;  (该属性只能设置X轴和Y轴上的值,Z轴上的值由perspective属性设置)

    作用:控制视角的位置,perspective-origin: left top; 视角位置在元素左上角

    x-axis可取值:left、center、right、px值、百分比

    y-axis可取值:top、center、bottom、px值、百分比

    默认值都是50%,视角位置在元素中心

    取值为百分比时,相对于元素自身(包含边框)大小

    (6)舞台样式

    transform-style: val;  (作用于所有的直接子元素,不可继承)

    作用:设置直接子元素在空间中如何展示

    val可取值:preserve-3d(表示所有直接子元素在3D空间呈现)、flat(表示所有直接子元素在2D平面呈现,也是默认值)

    由于不可继承,所以必须为元素所有非叶子后代节点设置该属性

    (7)是否显示元素背面

    backface-visibility: val;

    val可取值有visible(显示)、hidden(不显示,默认值)

    该属性需要结合透明背景色使用

    六、动画

    动画不像过渡那样需要手动触发,动画是自动触发的

    animation: name duration timing-function delay iteration-count direction;

    animation 属性是一个简写属性,用于设置六个动画属性:
    (1)animation-name:设置绑定到选择器的keyframe名称,每个关键帧名称代表一个动画序列

    (2)animation-duration:设置完成动画所花费的时间,单位s或ms
    (3)animation-timing-function:设置动画的速度曲线,可取值linear(匀速)、ease(先快后慢,默认值)、ease-in(越来越快)、ease-out(越来越慢)、ease-in-out(先快后慢)、steps(n, [start|end])

    其中steps(n, [start|end]),n(常常为1)表示将关键帧的每一小节(每一小节由百分比值分隔而来)n等分,当关键帧重复运行时,start表示从关键帧的开头开始执行,end表示从关键帧的结尾开始执行,end是默认值(此处甚是难懂,知道有这回事就行了)  

    (4)animation-delay:设置动画开始之前的延迟(只在动画开始前延迟一次)
    (5)animation-iteration-count:设置连续重复播放关键帧次数,取值为num、infinite(无限循环播放)
    (6)animation-direction:设置关键帧的播放方向,可取值normal(正常,从from到to播放)、reverse(反过来,从to到from播放,同时animation-timing-function也会反过来,原来从快到慢,反过来后就是从慢到快)、alternate(from到to到from到to...)、alternate-reverse(to到from到to到from...)

    (7)animation-fill-mode:元素在动画外的状态,包括动画开始前的状态、动画停止后的状态,可取值forwards(动画停止后的状态与to保持一致)、backwards(动画开始前的状态与from保持一致)、both(动画开始前的状态与from保持一致,停止后的状态与to保持一致)

    (8)animation-play-state:定义动画执行的运行和暂停,可取值paused(停止)、running(运行,默认值)

    (9)关键帧

    @keyframes move{
      0%{
        transform: translateY(-200px);
      }
      25%{
        transform: translateY(-90px);
      }
      50%{
        transform: translateY(0px);
      }
      75%{
        transform: translateY(90px);
      }
      100%{
        transform: translateY(200px);
      }
    }

    使用百分比值分隔动画持续时间,from代表的百分比值是0%,to代表的百分比值是100%   
    注意:请始终规定 animation-duration 属性,否则时长为 0,就不会播放动画了

    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
  • 相关阅读:
    (原).NET程序加入多语言包解决方案工具,超级棒
    c++标准库中的四个智能指针比较
    Mongodb c++ API的测试和封装
    MongoDB的c++驱动安装痛苦历程
    GLC_Player DOWNLOAD
    MongoDB的连接、创库、删库、插入文档、更新文档
    非关系型数据库--MongoDB的安装及概念
    虚拟机的安装
    OpenGL ES 学习
    QT学习
  • 原文地址:https://www.cnblogs.com/chasesunforever/p/12106005.html
Copyright © 2011-2022 走看看