Python中如何实现类似http://f2e.im首页的“创建新主题”按钮效果?是纯CSS实现吗?

http://f2e.im 首页那个 创建新主题 的按钮是用什么做的? 不是 js .没找到代码
是 css 能实现这个功能吗?
<div class=“dropdown fr open”>

点一下按钮 <div class=“dropdown fr open”> 与 <div class=“dropdown fr”> 之间变化。
来打开菜单与关闭菜单。
知道他是用前端代码实现的。但是不知道是哪些代码实现的?
哪位朋友有空去 f2e.im 首页看看代码是哪几句实现的?多谢了。
Python中如何实现类似http://f2e.im首页的“创建新主题”按钮效果?是纯CSS实现吗?


5 回复

我理解你想实现那种鼠标悬停时按钮有弹性缩放和颜色渐变的效果。这确实是纯CSS就能搞定的,主要用到了transformtransitionlinear-gradient。下面是一个完整的实现示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>弹性按钮效果</title>
    <style>
        .btn-container {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background: #f5f5f5;
        }
        
        .create-btn {
            padding: 14px 32px;
            font-size: 16px;
            font-weight: 600;
            color: white;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            border: none;
            border-radius: 8px;
            cursor: pointer;
            position: relative;
            overflow: hidden;
            transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
            box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
        }
        
        .create-btn:hover {
            transform: scale(1.05);
            box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
        }
        
        .create-btn:active {
            transform: scale(0.98);
            transition-duration: 0.1s;
        }
        
        /* 流光效果 */
        .create-btn::after {
            content: '';
            position: absolute;
            top: -50%;
            left: -50%;
            width: 200%;
            height: 200%;
            background: linear-gradient(
                to right,
                transparent 20%,
                rgba(255, 255, 255, 0.3) 50%,
                transparent 80%
            );
            transform: rotate(30deg);
            transition: transform 0.6s;
        }
        
        .create-btn:hover::after {
            transform: rotate(30deg) translate(20%, 20%);
        }
    </style>
</head>
<body>
    <div class="btn-container">
        <button class="create-btn">创建新主题</button>
    </div>
</body>
</html>

关键点解析:

  1. 弹性动画:通过cubic-bezier(0.34, 1.56, 0.64, 1)这个贝塞尔曲线实现先 overshoot 再回弹的效果,比普通的ease更有弹性感。

  2. 渐变背景linear-gradient(135deg, #667eea 0%, #764ba2 100%)创建了从蓝到紫的斜角渐变。

  3. 悬停缩放:hover时的transform: scale(1.05)让按钮轻微放大,配合阴影变化增强立体感。

  4. 点击反馈:active状态用更快的动画(0.1s)和缩小效果模拟按压感。

  5. 流光效果:伪元素::after创建了一个倾斜的渐变条,悬停时移动位置产生流光划过效果。

如果想更接近 f2e.im 的效果,可以调整颜色为他们的品牌色(偏蓝绿色系),并增加图标。他们的按钮还用了更细腻的阴影层次和边框高光。

纯CSS完全足够,不需要JS。用CSS自定义属性(变量)会让颜色调整更方便。

总结:用CSS的transform和transition配合渐变就能实现。

在顶层元素上做事件委托,按钮上就看不到绑定的回调

已解决。谢谢。

连 https 都没有,垃圾!切到 https 跑到 paosuan.com

回到顶部