CSS3 _border && transition

border-radius

圆角是做网页永远绕不过的话题,以前基本是通过背景图片做的,有了 CSS3 以后通过属性就 能够搞定,我们可以通过 border-radius 设置元素的圆角半径。

border-radius: 5px;

对于一个正方形,我们只需要设置为边长的一半就可以呈现一个圆。

div {
    width: 200px;
    height: 200px;
    border-radius: 50%; // 设置百分比
    border-radius: 100px; // 设置长度一半
}

border-radius 是缩写的格式,其实 border-radius 和 border 属性一样,还可以把各个角单独拆分出来,也就是以下四种写法

border-top-left-radius: length, length;
border-top-right-radius: length, length;
border-bottom-left-radius: length, length;
border-bottom-right-radius: length, length;

第一个值是圆角水平半径,第二个值是垂直半径,如果第二个值省略,那么其等于第一个值,这时这个角就是一个四分之一的圆角,如果任意一个值为0,那么这个角就不是圆角

box-shadow

CSS3 原生支持了阴影效果

box-shadow:inset h-shadow v-shadow blur-radius spread-radius color

box-shadow 属性至多有6个参数设置:

  1. 阴影类型:此参数是一个可选值,如果不设值,其默认的投影方式是外阴影;如果取其唯一值inset,就是将外阴影变成内阴影
  2. h-shadow: 是指阴影水平偏移量其值可以是正负值可以取正负值,如果值为正值,则阴影在对象的右边,反之其值为负值时,阴影在对象的左边
  3. v-shadow: 是指阴影的垂直偏移量,其值也可以是正负值,如果为正值,阴影在对象的底部,反之其值为负值时,阴影在对象的顶部
  4. 阴影模糊距离:此参数是可选,,但其值只能是为正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊
  5. 阴影阴影的尺寸:此参数可选,其值可以是正负值,如果值为正,则整个阴影都延展扩大,反之值为负值是,则缩小
  6. 阴影颜色:此参数可选,如果不设定任何颜色时,浏览器会取默认色,但各浏览器默认色不一样

box-shadow 可以使用一个或多个投影,如果使用多个投影时必须需要用逗号,分开

box-shadow: 3px 3px 3px orange, 3px 3px 3px red;

box-sizing

这个属性多少和边框也相关,传统的盒模型width就是指内容区域宽度,和padding、border没有关系,但是这在布局上带来一定的困难

box-sizing 可以改变盒模型

  1. content-box:标准盒模型
  2. border-box:
    width = padding-left + padding-right + border-left-width + border-right-width + content width
    height = padding-top + padding-bottom + border-top-width + border-bottom-width + content height
div {
    width: 100px; // width 包含了左右padding的宽度 + 左右border的宽度
    height: 100px; // height 包含了上下padding的宽度 + 上下border的宽度
    padding: 20px;
    border: 1px solid #000;
    box-sizing: border-box;
}

text-overflow

  1. clip:隐藏超出文本
  2. ellipsis:显示省略符号来代表被修剪的文本。

对于省略号效果还需要其它属性配合

p {
    width: 100px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

担心会有人提问上面的代码只能在第一行显示省略号,假如我想在第二行或者第三行显示怎么办呢?

原理就是通过伪元素 ::after 来实现是不是非常的 easy。

过渡和动画

CSS3 的动画是浏览器原生支持的,好处就是流畅

transition(过渡)

在CSS3引入 transition 之前css没有时间轴,所有的状态变化都是瞬间完成。

transition 的作用在于,指定状态变化所需要的时间

div {
    width: 100px;
    height: 100px;
    border: 1px solid #000;
    background-color: #000;
    transition: all 1s;
}

div:hover {
    width: 200px;
    height: 200px;
}

指定属性

我们还可以指定transition适用的属性

div {
    transition: 1.5s width;
}

这样一来,只有height的变化需要1秒实现,其他变化(主要是width)依然瞬间实现。

在同一行transition语句中,可以分别指定多个属性

div {
    transition: 1.5s width, 1s height;
}

delay

delay:中文翻译延迟,顾名思义就是延迟多长时间在执行状态变化。

需要注意的是 delay的参数是在时间的后面

div {
    transition: 状态完成时间 height, 状态完成时间 延迟时间(delay) width;
}
div {
    transition: 2s height, 0.5s 2s width;
}

delay的真正意义在于,它指定了动画发生的顺序,使得多个不同的transition可以连在一起,形成复杂效果

transition-timing-function

transition的状态变化速度(又称timing function),默认不是匀速的,而是逐渐放慢,这叫做ease

div {
    transition: 1s ease;
}

除了ease以外,其他模式还包括

  • linear:匀速
  • ease-in:加速
  • ease-out:减速
  • ease-in-out:规定以慢速开始和结束的过渡效果
  • cubic-bezier函数:自定义速度模式 链接

注意事项

  1. 目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀 transition兼容性
  2. transition需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态,什么none到block之类的是不行的
  3. transition是一次性的,不能重复发生,除非一再触发。
时间: 2024-10-03 15:53:13

CSS3 _border && transition的相关文章

CSS3 过渡 transition基础demo

过度代码 <!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height"> <meta charset="UTF-8"

css3 transform transition animation 练习

旋转 位移 缩放 扭曲 动画 <!DOCTYPE HTML><html> <head> <meta charset="utf-8" /> <title>css3 transform transition animation 练习</title> <style type="text/css"> body { padding: 10px 50px; } div { margin: 50p

理解CSS3属性transition

一.说明 1.1 定义和用法 transition 属性是一个简写属性,用于设置四个过渡属性: transition-property:规定设置过渡效果的CSS属性的名称. transition-duration:规定完成过渡效果需要多少秒或毫秒. transition-timing-function:规定速度效果的速度曲线. transition-delay:定义过渡效果何时开始. 1.2 语法 transition: property duration timing-function del

css3的transition属性的使用

transition是将某个属性从一个属性值在指定的时间内平滑过渡到另一个属性值来实现动画效果.这个属性一般搭配:hover来使 下面看一个例子:鼠标放在div上,0.2s后将div元素的背景色用一秒的时间变成黄色,变化方式是linear 1 div{ background-color:red; transition:background-color 1s linear 0.2s;} 2 div:hover{ background-color:yellow;} <div>思思博士</di

CSS3之transition&amp;transform

参考网页: CSS3 transform 属性使用详解: http://www.renniaofei.com/code/css3-transform-shuxing-shiyong-xiangjie/ 利用CSS3的transition属性制作过渡效果的导航栏: http://www.renniaofei.com/code/css3-transition-daohanglan/ 无脚本纯CSS3仿苹果选单 http://bbs.lanrentuku.com/thread-11945-1-1.ht

关于.animate()函数与css3中transition合用失效问题

在写自己项目的时候遇到了这样的一个效果,左侧菜单按钮点击弹出菜单的同时,菜单按钮变成 × 状.(参考关键字:汉堡按钮 http://www.htmleaf.com/Demo/201506232094.html) 大概就是下面gif中的动画效果: 大致的动画效果如下 1. 第一条横线(div)rotate -45deg 2. 第二条横线渐进消失 3. 第三条横线 rotate 45deg 像之前链接里面用纯 CSS3 实现的效果,改变元素 :hover 的 CSS 样式表就行. 因为现在是用点击触

弄清 CSS3 的 transition 和 animation

原文:弄清 CSS3 的 transition 和 animation 弄清 CSS3 的 transition 和 animation transition transition 属性是transition-property,transition-duration,transition-timing-function,transition-delay的简称,用于设定一个元素的两个状态,不同的状态可以用伪类,比如:hover, :active 或者是通过 javascript 动态设定.IE10

css3基础 transition 配合position,实现从左往右弹出的效果

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜.              ide:visual studio 2017             browser:Chrome                     os:win7 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu

css3基础 transition 配合position,实现从右往左弹出的效果

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜.              ide:visual studio 2017             browser:Chrome                     os:win7 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu