基于css的一些动画

最近因为期末复习周,博客更新鸽了很久,趁着考完试还记得这件事,把之前的大作业里出现过的css动画总结一下

这个图片原型是一个静态图

动画效果如下

.footer{
    background: #3193d1;/*可选,动画的父级div的背景颜色*/
    padding: 2em 0;
    width: 100%;/*decide by yourself*/
    margin-left: 0;
}
.footer-left ul{
    padding: 0;
}
.footer-left ul li{
    list-style: none;
    display: inline-block;
}
.footer-left ul li span{
    background-image: url(../img/footer-sprit.png);
    width: 30px;
    height: 30px;
    /*这样设置行高考虑到图片的大小,只展现这么大的方块来显示图标*/
    display: block;
    /*以块形式呈现元素*/
    transition: 0.5s all;
    -webkit-transition:0.5s all;
    -moz-transition:0.5s all;
    -o-transition:0.5s all;
    -ms-transition:0.5s all;
    /*display on different browsers*/
}
.footer-left ul li span.fb{
    background-position: 0 0;
}
.footer-left ul li span.twit{
    background-position: -30px 0;
    /*向右移动30px,显示中上位置的图标*/
}
.footer-left ul li span.in{
    background-position: -60px 0;
}
.footer-left ul li span.fb:hover{
    background-position:0px -30px;
    /*第一个参数是向左偏移,第二个是向下偏移,取负数则向相反的方向移动*/
}
.footer-left ul li span.twit:hover{
    background-position:-30px -30px;
}
.footer-left ul li span.in:hover{
    background-position:-60px -30px;
}

该展示板块用css过渡,鼠标指针悬浮出现动画


            text

            text
            text

.mg .tile{margin-left: 120px}
.tile {
    width: 570px;
    height: 300px;
    margin: 20px;
    background-color: #99aeff;/*加载动画后的方块的颜色*/
    display: inline-block;
    /*block和inline-block的区别,前者独占一行,后者可以并排*/
    background-size: cover;/*把图片放大到元素容器合适的尺寸*/
    /*如果设置一个100%,平铺x轴,两个100%铺满容器,图片可能会被拉伸*/
    position: relative;
    cursor: pointer;
    transition: all 0.4s ease-out;
    /*默认值为all 0 ease
    all是设置过渡效果 第一个数字是过渡时间 ease是一个函数,用来控制过渡的快慢状态*/
    box-shadow: 0px 35px 77px -17px rgba(0, 0, 0, 0.44);
    /*四个数字,水平阴影位置,垂直阴影位置,模糊距离(可选),阴影大小(可选),阴影颜色*/
    overflow: hidden;/*隐藏溢出部分*/
    color: white;
    font-family: 'HPE';
}

同上一个,也是通过指针悬浮来显示动画


    Read more

.tool{position: relative; display: inline;}
a.tooltips span {
    position: absolute;
    width: 168px;
    background: #FFFFFF;
    border: 2px solid #ea5b60;
    height: 42px;
    text-align: center;
    color: #000;
    padding: 14px 0px 0px 0px;
}

a.tooltips span:hover {
    background: #ea5b60;
    color: #fff;
    transition: 0.5s all;
    -webkit-transition: 0.5s all;
    -moz-transition: 0.5s all;
    -o-transition: 0.5s all;
    -ms-transition: 0.5s all;
}

a.tooltips span:before {
    content: '';
    position: absolute;
    top: 22%;
    left: 81%;
    margin-left: -12px;
    width: 0;
    height: 0;
    border-top: 29px solid #ea5b60;
    border-right: 28px solid transparent;
    border-left: 28px solid transparent;
    transform: rotate(90deg);
}

a.tooltips span:after {
    content: '';
    position: absolute;
    top: 21%;
    left: 79%;
    margin-left: -8px;
    width: 0;
    height: 0;
    border-top: 30px solid #FFFFFF;
    border-right: 31px solid transparent;
    border-left: 30px solid transparent;
    transform: rotate(90deg);
}

.container1{
    padding-right: 15px;
    padding-left: 15px;
    margin-left: auto;
    margin-right: auto;
}

在文字上下方加动态划线


    text

.text1{
    position: relative;
}
.text1::before,
.text1::after{
  content: "";
  z-index: -1;
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  background: lightskyblue;
  transform: scaleX(0);
  transition: transform 0.2s ease-in-out;
}
.text1::before{
    top: 0;
    tranform-origin: center right;
}
.text1::after{
    bottom: 0;
    transform-origin: center left;
}
.text1:hover{
    cursor: pointer;
}
.text1:hover::before{
    transform-origin: center left;
    transform: scaleX(1);
}
.text:hover::after{
    transform-origin: center right;
    transform: sclaeX(1);
}

在上一个的基础上,对相关元素重写,呈现如下图效果


    text

.type {
    position: relative;
    /* font-size: 1em; */
    /* 不加relative会显示全屏划线 */
}

.type .inner {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* 如果说只要上下或者左右划线动画,可以不用加.inner标签,如果需要四条边,
则需要加上.inner标签的before和after,并设置相关属性 */

.type::before, .type::after, .type .inner::before, .type .inner::after
/* 这里有个一定要设置四个对象,一个对象对应一条边,before对应左和上,after对应右和下 */

    {
    position: absolute;
    content: '';
    display: block;
    background: lightskyblue;
    -webkit-transition: -webkit-transform 1s;
    transition: -webkit-transform 1s;
    transition: transform 1s;
    transition: transform 1s, -webkit-transform 1s;
}

.type.both::before, .type.both::after {
    left: 0;
    width: 100%;
    height: 2px;
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
}

.type.both .inner::after, .type.both .inner::before {
    top: 0;
    width: 2px;
    height: 100%;
    -webkit-transform: scaleY(0);
    transform: scaleY(0);
}

.type.both .inner::before {
    left: 0;
}

.type.both .inner::after {
    right: 0;
}

.type.both .inner:hover::before, .type.both .inner:hover::after {
    transform: scaleY(1);
    -webkit-transform: scaleY(1);
}

.type.both::before {
    top: 0;
}

.type.both::after {
    bottom: 0;
}

.type.both:hover::before, .type.both:hover::after {
    transform: scaleX(1);
    -webkit-transform: scaleX(1);
}

.type.both:hover .inner::before, .type.both:hover .inner::after {
    transform: scaleY(1);
    -webkit-transform: scaleY(1);
}

/* 关于transform-origin属性
top left | left top 等价于 0 0;
top | top center | center top 等价于 50% 0
right top | top right 等价于 100% 0
left | left center | center left 等价于 0 50%
center | center center 等价于 50% 50%(默认值)
right | right center | center right 等价于 100% 50%
bottom left | left bottom 等价于 0 100%
bottom | bottom center | center bottom 等价于 50% 100%
bottom right | right bottom 等价于 100% 100%
*/

.type.both.clock .inner::before {
    transform-origin: top center;
    -webkit-transform-origin: top center;
}

.type.both.clock .inner::after {
    transform-origin: bottom center;
    -webkit-transform-origin: bottom center;
}

.type.both.clock::before {
    transform-origin: right center;
    -webkit-transform-origin: right center;
}

.type.both.clock::after {
    transform-origin: left center;
    -webkit-transform-origin: left center;
}

.type.both.clock:hover .inner::before {
    transform-origin: bottom center;
    -webkit-transform-origin: bottom center;
}

.type.both.clock:hover .inner::after {
    transform-origin: top center;
    -webkit-transform-origin: top center;
}

.type.both.clock:hover::before {
    transform-origin: left center;
    -webkit-transform-origin: left center;
}

.type.both.clock:hover::after {
    transform-origin: right center;
    -webkit-transform-origin: right center;
}

.row {
    /* padding: 0.5em 1em 0.65em; */
    width: 50px;
    height: 20px;
}

.type {
    padding: 0.5em 1em 0.5em;
    /* margin: 0 10px; */
    width: 22px;
    height: 20px;
}

如果不设置 transform-origin属性,将会变为这种形式

css

.type {
    position: relative;
    /* font-size: 1em; */
    /* 不加relative会显示全屏划线 */
}

.type .inner {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* 如果说只要上下或者左右划线动画,可以不用加.inner标签,如果需要四条边,
则需要加上.inner标签的before和after,并设置相关属性 */

.type::before, .type::after, .type .inner::before, .type .inner::after
/* 这里有个一定要设置四个对象,一个对象对应一条边,before对应左和上,after对应右和下 */

    {
    position: absolute;
    content: '';
    display: block;
    background: lightskyblue;
    -webkit-transition: -webkit-transform 1s;
    transition: -webkit-transform 1s;
    transition: transform 1s;
    transition: transform 1s, -webkit-transform 1s;
}

.type.both::before, .type.both::after {
    left: 0;
    width: 100%;
    height: 2px;
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
}

.type.both .inner::after, .type.both .inner::before {
    top: 0;
    width: 2px;
    height: 100%;
    -webkit-transform: scaleY(0);
    transform: scaleY(0);
}

.type.both .inner::before {
    left: 0;
}

.type.both .inner::after {
    right: 0;
}

.type.both .inner:hover::before, .type.both .inner:hover::after {
    transform: scaleY(1);
    -webkit-transform: scaleY(1);
}

.type.both::before {
    top: 0;
}

.type.both::after {
    bottom: 0;
}

.type.both:hover::before, .type.both:hover::after {
    transform: scaleX(1);
    -webkit-transform: scaleX(1);
}

.type.both:hover .inner::before, .type.both:hover .inner::after {
    transform: scaleY(1);
    -webkit-transform: scaleY(1);
}
.row {
    /* padding: 0.5em 1em 0.65em; */
    width: 50px;
    height: 20px;
}

.type {
    padding: 0.5em 1em 0.5em;
    /* margin: 0 10px; */
    width: 22px;
    height: 20px;
}
  • 一个div里套了多个div,如果浏览器在低分辨率下,子div换行,除了检查子div有没有设置 display: inline-block;,还要看看父div有没有设置具体宽度
  • 如果很多时候如果样式的效果和图片不符,不妨检查下div的相关css参数,如长宽、 displayposition
  • 浏览器f12里的element一栏里可对css进行实时调试
  • transform-origin的方向,决定了动画线条的移动方向,在设置参数时自己在脑里演示一遍

Original: https://www.cnblogs.com/jaydenchang/p/15064312.html
Author: JaydenChang
Title: 基于css的一些动画

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585178/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 日程功能模块【从建模到代码实现】UML + JavaFX

    结合 uml 所学和 Javafx 从建模到实现一个子功能模块 —— 日程管理。新手上路,类图到代码实现的过程还是很曲折但所幸收获颇丰,记录一下学习心得。 日程功能模块 最后成果 …

    Java 2023年6月5日
    085
  • leetcode 572. Subtree of Another Tree 另一棵树的子树 (简单)

    一、题目大意 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 fa…

    Java 2023年6月14日
    081
  • IO流整的明明白白!

    ​ File课理解为文件和文件夹(目录),用于表示磁盘中某个文件或文件夹的路径。该类包含了文件的创建、删除、重命名、判断是否存在等方法。 ​ 只能设置和获取文件本身的信息(文件大小…

    Java 2023年6月7日
    0110
  • Spring ClassPathResource加载资源文件详解

    先看Demo 再看内部源码 获取资源内容 源码解读 该类获取资源的方式有两种:Class获取和ClassLoader获取。 运行结果: /home/temp/spring_test…

    Java 2023年5月30日
    061
  • MyBatis保姆级理解与使用专业学习eclipse版

    My Batis简介 1.1 M yBatis的特点 1 .2 MyBatis简介 MyB atis 是一个半自动化的持久化层的ORM 框架。 所谓的持久化层就是dao 。 ORM…

    Java 2023年6月16日
    083
  • Java八大基本数据类与对应包装类

    Java的八种基本数据类型 序号 数据类型 字节数 默认值 取值范围 示例 1 byte (位) 1 0 -2^7 ~ 2^7-1 byte b = 10; 2 short (短整…

    Java 2023年6月5日
    046
  • Java开发学习(五)—-bean的生命周期

    一、什么是生命周期 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。 bean生命周期是什么? bean对象从创建到销毁的整体过程…

    Java 2023年5月29日
    055
  • google和oracle闹掰,Java 会不会被抛弃?

    眼花缭乱的编程语言 程序界的语言实在太多,但有一种语言不得不说,那就是java语言,Java语言是Android系统的主要开发语言,现在和Google的关系不是很好,但是他会被淘汰…

    Java 2023年6月9日
    082
  • Failed to get D-Bus connection: Operation not permitted

    学docker时,使用 systemctl命令报错: Failed to get D-Bus connection: Operation not permitted 网上查询发现是…

    Java 2023年6月9日
    063
  • window.history.go 返回上一页 并判断是否后退的 然后决定是否刷新

    使用window.history.go(-1)返回上页的同时 断页面是通过链接打开还是通过后退按钮返回打开的?加入以下代码: 引用内容: 也可禁止缓存,重新进入页面 引用内容: 返…

    Java 2023年6月13日
    065
  • Vue

    Vue 的核心库只关注视图层,方便与 HTML + CSS + JS : 视图 : 给用户看…

    Java 2023年6月7日
    080
  • Redis基本数据结构ZipList

    为什么要有ziplist 有两点原因: 普通的双向链表,会有两个指针,在存储数据很小的情况下,我们存储的实际数据的大小可能还没有指针占用的内存大,是不是有点得不偿失?而且Redis…

    Java 2023年6月7日
    085
  • 数据结构之单链表

    总结: 链表是以节点的方式来存储的是链式存储的 每个节点包含data域,next域:指向下一个节点 每个节点的顺序不一定是连续的 链表有带头结点和没有带头节点两种形式(头节点不能动…

    Java 2023年6月5日
    088
  • Python 阿里云OSS文件上传下载与文件删除及检索示例

    实践环境 运行环境:Python 3.5.4CentOS Linux release 7.4.1708 (Core)/Win10 需要安装以下类库:pip3 install set…

    Java 2023年6月16日
    067
  • 【leetcode】42. 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2…

    Java 2023年6月6日
    073
  • 基于Redis&MySQL接口幂等性设计

    基于Redis&MySQL接口幂等性设计 欲把相思说似谁,浅情人不知。 幂等性即多次调用接口或方法不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。 前端重复提…

    Java 2023年6月5日
    058
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球