效果预览

代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="author" content="https://www.cnblogs.com/beixuan">
<meta name="version" content="1.0.0">
<meta name="date" content="2021/12/01 18:00:26">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CSS动画大全之按钮组[b]</title>
</head>
<style type="text/css"> /* 设置 body 内、外边距为 0 */
body {
margin: 0;
padding: 0;
display: grid;
grid-template-columns: 100%;
grid-template-rows: 100%;
justify-items: center;
align-items: center;
width: 100vw;
height: 100vh;
background-color: #FFF;
} .page-wrapper {
display: grid;
grid-template-columns: 33% 34% 33%;
grid-template-rows: 100%;
justify-items: center;
align-items: center;
width: 100vw;
height: 100vh;
} .page-wrapper > div {
display: inline-block;
} .btn {
width: 12.5rem;
height: 3.125rem;
line-height: 3.125rem;
font-size: 1.5rem;
padding: 0.5rem;
text-align: center;
box-shadow: 0 0 1px #000;
position: relative;
transition: all 0.5s;
margin-bottom: 1rem;
cursor: pointer;
overflow: hidden;
} .btn:hover {
box-shadow: 0 0 0px #000;
} .btn-danger, .btn-success {
height: 7.85rem;
line-height: 7.85rem;
} /* 默认 */
.btn-default:hover {
color: #00aaff;
} .btn-default::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #00aaff;
border-right: 5px solid #00aaff;
top: -100%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-default:hover::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #00aaff;
border-right: 5px solid #00aaff;
top: 0%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-default::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #00aaff;
border-bottom: 5px solid #00aaff;
top: 0;
left: 100%;
transition: all 0.4s;
z-index: -1;
} .btn-default:hover::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #00aaff;
border-bottom: 5px solid #00aaff;
top: 0;
left: 0;
transition: all 0.4s;
z-index: -1;
} /* 警告 */
.btn-warning:hover {
color: #ffaa00;
} .btn-warning::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #ffaa00;
border-right: 5px solid #ffaa00;
top: 100%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-warning:hover::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #ffaa00;
border-right: 5px solid #ffaa00;
top: 0%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-warning::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #ffaa00;
border-bottom: 5px solid #ffaa00;
top: 0;
left: 100%;
transition: all 0.4s;
z-index: -1;
} .btn-warning:hover::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #ffaa00;
border-bottom: 5px solid #ffaa00;
top: 0;
left: 0;
transition: all 0.4s;
z-index: -1;
} /* 失败 */
.btn-danger:hover {
color: #e30000;
} .btn-danger::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #e30000;
border-right: 5px solid #e30000;
top: -100%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-danger:hover::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #e30000;
border-right: 5px solid #e30000;
top: 0%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-danger::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #e30000;
border-bottom: 5px solid #e30000;
top: 0;
left: -100%;
transition: all 0.4s;
z-index: -1;
} .btn-danger:hover::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #e30000;
border-bottom: 5px solid #e30000;
top: 0;
left: 0;
transition: all 0.4s;
z-index: -1;
} /* 成功 */
.btn-success:hover {
color: #00d064;
} .btn-success::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #00d064;
border-right: 5px solid #00d064;
top: 100%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-success:hover::before {
content: '';
width: calc(100% - 10px);
height: 100%;
position: absolute;
border-left: 5px solid #00d064;
border-right: 5px solid #00d064;
top: 0%;
left: 0;
transition: all 0.4s;
z-index: -1;
} .btn-success::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #00d064;
border-bottom: 5px solid #00d064;
top: 0;
left: -100%;
transition: all 0.4s;
z-index: -1;
} .btn-success:hover::after {
content: '';
width: 100%;
height: calc(100% - 10px);
position: absolute;
border-top: 5px solid #00d064;
border-bottom: 5px solid #00d064;
top: 0;
left: 0;
transition: all 0.4s;
z-index: -1;
} </style>
<body>
<!-- 页面容器 -->
<div class="page-wrapper">
<div class="btn btn-danger">失败 Left</div>
<div>
<div class="btn btn-default">默认 Top</div>
<div class="btn btn-warning">警告 Bottom</div>
</div>
<div class="btn btn-success">成功 Right</div>
</div>
</body>
</html>

往期回顾

【全】一、CSS动画大全之按钮组【a】

【全】一、CSS动画大全之按钮组【b】

【全】CSS动画大全之按钮【c】的更多相关文章

  1. 【2016年特别福利】史上最全CSS学习资料大全

    css学习篇 [2016年特别福利]史上最全CSS学习资料大全

  2. 原生html,css+js写下载按钮有提示动画效果的落地页

    <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8&q ...

  3. 这样使用 GPU 渲染 CSS 动画(转)

    大多数人知道现代网络浏览器使用GPU来渲染部分网页,特别是具有动画的部分. 例如,使用transform属性的CSS动画看起来比使用left和top属性的动画更平滑. 但是如果你问,“我如何从GPU获 ...

  4. Web高性能动画及渲染原理(1)CSS动画和JS动画

    目录 一. CSS动画 和 JS动画 1.1 CSS动画 1.2 JS动画 1.3 小结 二. 使用Velocity.js实现动画 示例代码托管在:http://www.github.com/dash ...

  5. 高性能Web动画和渲染原理系列(1)——CSS动画和JS动画

    [摘要] 介绍CSS动画和JS动画的基本特点,以及轻量级动画库velocity.js的基本用法. 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园 ...

  6. JS框架_(JQuery.js)文章全屏动画切换

    百度云盘 传送门 密码:anap 文章全屏动画切换效果 <!doctype html> <html lang="zh"> <head> < ...

  7. Css 动画的回调

    在做项目中经常会遇到使用动画的情况.以前的情况是用js写动画,利用setTimeout函数或者window.requestAnimationFrame()实现目标元素的动画效果.虽然后者解决了刷新频率 ...

  8. [转]CSS hack大全&详解

    转自:CSS hack大全&详解 1.什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的, ...

  9. CSS动画与GPU

    写在前面 满世界的动画性能优化技巧,例如: 只允许改变transform.opacity,其它属性不要动,避免重新计算布局(reflow) 对动画元素应用transform: translate3d( ...

  10. 15个来自 CodePen 的酷炫 CSS 动画效果【下篇】

    CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...

随机推荐

  1. 深入了解 C# Span:高性能内存操作的利器

    深入了解 C# Span:高性能内存操作的利器 在 C# 7.2 中引入的 Span<T> 类型为我们提供了一种高效且安全地对内存进行操作的方式.Span<T> 是一个轻量级的 ...

  2. python 二次封装logging,打印日志文件名正确,且正确写入/结合pytest执行,日志不输出的问题

    基于之前日志问题,二次封装日志后,导致日志输出的文件名不对,取到的文件一直都是当前二次封装的log的文件名,基于这个问题,做了优化,详细看 https://www.cnblogs.com/cuitan ...

  3. 【经验分享】Docker容器部署方法说明

    前  言 本案例适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 64bit Linux开发环境:Ubuntu 18.04.4 64bit 虚拟机:VMwa ...

  4. Spring注解之参数校验@Validated和@Valid

    @Validated和@Valid的区别 Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范,是标准 JSR-303 的一个变 ...

  5. 【PHP】关于fastadmin框架中使用with进行连表查询时setEagerlyType字段的理解

    前言 FastAdmin是我第一个接触的后台管理系统框架.FastAdmin是一款开源且免费商用的后台开发框架,它基于ThinkPHP和Bootstrap两大主流技术构建的极速后台开发框架,它有着非常 ...

  6. 通俗讲解promise

        JavaScript 中的 Promise 是一种特殊的对象,它用于解决异步编程中的复杂性问题,特别是回调的问题.我们可以把它比喻成现实生活中的一个"承诺": 想象一下,你 ...

  7. [oeasy]python0116_文字的起源_苏美尔文明_楔形文字_两河流域

    文字起源 回忆上次内容 上次回顾了西里尔字符的编码过程 KOI-7 KOI-8   ISO-8859 系列进行总结 字符扩展 ascii 共 16 种 由iso组织制定 从 iso-8859-1 到 ...

  8. 2023 CSP 游记

    目录 \(\text{CSP-J}\) 游记 \(\text{CSP-S}\) 游记 \(\text{CSP-J}\) 游记 省流:\(\text{B}\) 题挂了 \(100\text{ pts}\ ...

  9. 第四节 JMeter基础-初级登录【固定用户登录】

    声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 1.认识JMeter (1)测试计划:测试的起点,所有组件的容器.相当于一个测试项目,对测试计划展开一系列的操作. (2)线 ...

  10. DASCTF 2023六月挑战赛|二进制专项 PWN (上)

    DASCTF 2023六月挑战赛|二进制专项 PWN (上) 1.easynote edit函数对长度没有检查 free函数存在UAF漏洞 思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使 ...