galaxy-uniapp-mcp-server
Version:
Galaxy组件库到UniApp组件转换MCP服务器 - 支持跨平台组件转换、兼容性分析和项目集成
110 lines • 11.9 kB
JSON
{
"id": "Philibert-JF_fresh-impala-20",
"name": "fresh-impala-20",
"category": "buttons",
"author": "Philibert-JF",
"description": "fresh-impala-20 组件 (button, hover, animated, animation, interactive)",
"tags": [
"button",
"hover",
"animated",
"animation",
"interactive"
],
"original": {
"html": "<a class=\"button type--A\" href=\"#\">\n <div class=\"button__line\"></div>\n <div class=\"button__line\"></div>\n <span class=\"button__text\">ENTRY</span>\n <div class=\"button__drow1\"></div>\n <div class=\"button__drow2\"></div>\n</a>",
"css": "/* From Uiverse.io by Philibert-JF - Website: https://codepen.io/ash_creator/pen/oNyNbNO - Name: パステルドローなボタン - Tags: button, hover, animated */\n.type--A {\n --line_color: #555555;\n --back_color: #ffecf6;\n}\n\n.button {\n position: relative;\n z-index: 0;\n width: 240px;\n height: 56px;\n text-decoration: none;\n font-size: 14px;\n font-weight: bold;\n color: var(--line_color);\n letter-spacing: 2px;\n transition: all 0.3s ease;\n}\n.button:not(:last-child) {\n margin-bottom: 64px;\n}\n.button__text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.button::before,\n.button::after,\n.button__text::before,\n.button__text::after {\n content: \"\";\n position: absolute;\n height: 3px;\n border-radius: 2px;\n background: var(--line_color);\n transition: all 0.5s ease;\n}\n.button::before {\n top: 0;\n left: 54px;\n width: calc(100% - 56px * 2 - 16px);\n}\n.button::after {\n top: 0;\n right: 54px;\n width: 8px;\n}\n.button__text::before {\n bottom: 0;\n right: 54px;\n width: calc(100% - 56px * 2 - 16px);\n}\n.button__text::after {\n bottom: 0;\n left: 54px;\n width: 8px;\n}\n.button__line {\n position: absolute;\n top: 0;\n width: 56px;\n height: 100%;\n overflow: hidden;\n}\n.button__line::before {\n content: \"\";\n position: absolute;\n top: 0;\n width: 150%;\n height: 100%;\n box-sizing: border-box;\n border-radius: 300px;\n border: solid 3px var(--line_color);\n}\n.button__line:nth-child(1),\n.button__line:nth-child(1)::before {\n left: 0;\n}\n.button__line:nth-child(2),\n.button__line:nth-child(2)::before {\n right: 0;\n}\n.button:hover {\n letter-spacing: 6px;\n}\n.button:hover::before,\n.button:hover .button__text::before {\n width: 8px;\n}\n.button:hover::after,\n.button:hover .button__text::after {\n width: calc(100% - 56px * 2 - 16px);\n}\n.button__drow1,\n.button__drow2 {\n position: absolute;\n z-index: -1;\n border-radius: 16px;\n transform-origin: 16px 16px;\n}\n.button__drow1 {\n top: -16px;\n left: 40px;\n width: 32px;\n height: 0;\n transform: rotate(30deg);\n}\n.button__drow2 {\n top: 44px;\n left: 77px;\n width: 32px;\n height: 0;\n transform: rotate(-127deg);\n}\n.button__drow1::before,\n.button__drow1::after,\n.button__drow2::before,\n.button__drow2::after {\n content: \"\";\n position: absolute;\n}\n.button__drow1::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 32px;\n border-radius: 16px;\n transform-origin: 16px 16px;\n transform: rotate(-60deg);\n}\n.button__drow1::after {\n top: -10px;\n left: 45px;\n width: 0;\n height: 32px;\n border-radius: 16px;\n transform-origin: 16px 16px;\n transform: rotate(69deg);\n}\n.button__drow2::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 32px;\n border-radius: 16px;\n transform-origin: 16px 16px;\n transform: rotate(-146deg);\n}\n.button__drow2::after {\n bottom: 26px;\n left: -40px;\n width: 0;\n height: 32px;\n border-radius: 16px;\n transform-origin: 16px 16px;\n transform: rotate(-262deg);\n}\n.button__drow1,\n.button__drow1::before,\n.button__drow1::after,\n.button__drow2,\n.button__drow2::before,\n.button__drow2::after {\n background: var(--back_color);\n}\n.button:hover .button__drow1 {\n animation: drow1 ease-in 0.06s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow1::before {\n animation: drow2 linear 0.08s 0.06s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow1::after {\n animation: drow3 linear 0.03s 0.14s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow2 {\n animation: drow4 linear 0.06s 0.2s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow2::before {\n animation: drow3 linear 0.03s 0.26s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow2::after {\n animation: drow5 linear 0.06s 0.32s;\n animation-fill-mode: forwards;\n}\n@keyframes drow1 {\n 0% {\n height: 0;\n }\n 100% {\n height: 100px;\n }\n}\n@keyframes drow2 {\n 0% {\n width: 0;\n opacity: 0;\n }\n 10% {\n opacity: 0;\n }\n 11% {\n opacity: 1;\n }\n 100% {\n width: 120px;\n }\n}\n@keyframes drow3 {\n 0% {\n width: 0;\n }\n 100% {\n width: 80px;\n }\n}\n@keyframes drow4 {\n 0% {\n height: 0;\n }\n 100% {\n height: 120px;\n }\n}\n@keyframes drow5 {\n 0% {\n width: 0;\n }\n 100% {\n width: 124px;\n }\n}",
"file_path": "/mnt/persist/workspace/Buttons/Philibert-JF_fresh-impala-20.html"
},
"uniapp": {
"template": "<navigator class=\"button type--A\" href=\"#\"></navigator>\n <view class=\"button__line\"></view>\n <view class=\"button__line\"></view>\n <text class=\"button__text\">ENTRY</text>\n <view class=\"button__drow1\"></view>\n <view class=\"button__drow2\"></view>\n</a>",
"script": "export default {\n name: 'GalaxyFreshImpala20',\n props: {\n // 根据组件类型动态生成props\n },\n data() {\n return {\n // 组件状态\n };\n },\n methods: {\n // 组件方法\n }\n}",
"style": "\n/* From Uiverse.io by Philibert-JF - Website: https://codepen.io/ash_creator/pen/oNyNbNO - Name: パステルドローなボタン - Tags: button, hover, animated */\n.type--A {\n --line_color: #555555;\n --back_color: #ffecf6;\n}\n\n.button {\n position: relative;\n z-index: 0;\n width: 480rpx;\n height: 112rpx;\n text-decoration: none;\n font-size: 28rpx;\n font-weight: bold;\n color: var(--line_color);\n letter-spacing: 4rpx;\n transition: all 0.3s ease;\n}\n.button:not(:last-child) {\n margin-bottom: 128rpx;\n}\n.button__text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.button::before,\n.button::after,\n.button__text::before,\n.button__text::after {\n content: \"\";\n position: absolute;\n height: 6rpx;\n border-radius: 4rpx;\n background: var(--line_color);\n transition: all 0.5s ease;\n}\n.button::before {\n top: 0;\n left: 108rpx;\n width: calc(100% - 112rpx * 2 - 32rpx);\n}\n.button::after {\n top: 0;\n right: 108rpx;\n width: 16rpx;\n}\n.button__text::before {\n bottom: 0;\n right: 108rpx;\n width: calc(100% - 112rpx * 2 - 32rpx);\n}\n.button__text::after {\n bottom: 0;\n left: 108rpx;\n width: 16rpx;\n}\n.button__line {\n position: absolute;\n top: 0;\n width: 112rpx;\n height: 100%;\n overflow: hidden;\n}\n.button__line::before {\n content: \"\";\n position: absolute;\n top: 0;\n width: 150%;\n height: 100%;\n box-sizing: border-box;\n border-radius: 600rpx;\n border: solid 6rpx var(--line_color);\n}\n.button__line:nth-child(1),\n.button__line:nth-child(1)::before {\n left: 0;\n}\n.button__line:nth-child(2),\n.button__line:nth-child(2)::before {\n right: 0;\n}\n.button:hover {\n letter-spacing: 12rpx;\n}\n.button:hover::before,\n.button:hover .button__text::before {\n width: 16rpx;\n}\n.button:hover::after,\n.button:hover .button__text::after {\n width: calc(100% - 112rpx * 2 - 32rpx);\n}\n.button__drow1,\n.button__drow2 {\n position: absolute;\n z-index: -1;\n border-radius: 32rpx;\n transform-origin: 32rpx 32rpx;\n}\n.button__drow1 {\n top: -32rpx;\n left: 80rpx;\n width: 64rpx;\n height: 0;\n transform: rotate(30deg);\n}\n.button__drow2 {\n top: 88rpx;\n left: 154rpx;\n width: 64rpx;\n height: 0;\n transform: rotate(-127deg);\n}\n.button__drow1::before,\n.button__drow1::after,\n.button__drow2::before,\n.button__drow2::after {\n content: \"\";\n position: absolute;\n}\n.button__drow1::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 64rpx;\n border-radius: 32rpx;\n transform-origin: 32rpx 32rpx;\n transform: rotate(-60deg);\n}\n.button__drow1::after {\n top: -20rpx;\n left: 90rpx;\n width: 0;\n height: 64rpx;\n border-radius: 32rpx;\n transform-origin: 32rpx 32rpx;\n transform: rotate(69deg);\n}\n.button__drow2::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 64rpx;\n border-radius: 32rpx;\n transform-origin: 32rpx 32rpx;\n transform: rotate(-146deg);\n}\n.button__drow2::after {\n bottom: 52rpx;\n left: -80rpx;\n width: 0;\n height: 64rpx;\n border-radius: 32rpx;\n transform-origin: 32rpx 32rpx;\n transform: rotate(-262deg);\n}\n.button__drow1,\n.button__drow1::before,\n.button__drow1::after,\n.button__drow2,\n.button__drow2::before,\n.button__drow2::after {\n background: var(--back_color);\n}\n.button:hover .button__drow1 {\n animation: drow1 ease-in 0.06s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow1::before {\n animation: drow2 linear 0.08s 0.06s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow1::after {\n animation: drow3 linear 0.03s 0.14s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow2 {\n animation: drow4 linear 0.06s 0.2s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow2::before {\n animation: drow3 linear 0.03s 0.26s;\n animation-fill-mode: forwards;\n}\n.button:hover .button__drow2::after {\n animation: drow5 linear 0.06s 0.32s;\n animation-fill-mode: forwards;\n}\n@keyframes drow1 {\n 0% {\n height: 0;\n }\n 100% {\n height: 200rpx;\n }\n}\n@keyframes drow2 {\n 0% {\n width: 0;\n opacity: 0;\n }\n 10% {\n opacity: 0;\n }\n 11% {\n opacity: 1;\n }\n 100% {\n width: 240rpx;\n }\n}\n@keyframes drow3 {\n 0% {\n width: 0;\n }\n 100% {\n width: 160rpx;\n }\n}\n@keyframes drow4 {\n 0% {\n height: 0;\n }\n 100% {\n height: 240rpx;\n }\n}\n@keyframes drow5 {\n 0% {\n width: 0;\n }\n 100% {\n width: 248rpx;\n }\n}\n\n",
"component_name": "GalaxyFreshImpala20"
},
"platforms": {
"h5": true,
"mp-weixin": true,
"mp-alipay": true,
"mp-baidu": true,
"mp-toutiao": true,
"app-plus": true
},
"props": [
{
"name": "disabled",
"type": "Boolean",
"default": false,
"required": false,
"description": "是否禁用"
},
{
"name": "text",
"type": "String",
"default": "按钮",
"required": false,
"description": "按钮文字"
},
{
"name": "type",
"type": "String",
"default": "primary",
"required": false,
"description": "按钮类型"
}
],
"events": [
{
"name": "click",
"description": "点击事件",
"parameters": [
"event"
]
}
],
"slots": [
{
"name": "",
"description": "",
"props": []
}
],
"compatibility": {
"h5": {
"supported": true,
"issues": [],
"alternatives": []
},
"mp-weixin": {
"supported": true,
"issues": [],
"alternatives": []
},
"mp-alipay": {
"supported": true,
"issues": [],
"alternatives": []
},
"app-plus": {
"supported": true,
"issues": [],
"alternatives": []
}
},
"performance": {
"complexity": "high",
"bundle_size": 4422,
"render_cost": "high",
"memory_usage": "high"
},
"dependencies": [],
"examples": [
{
"title": "",
"description": "",
"code": ""
}
],
"created_at": "2025-07-31T07:55:34.234Z",
"updated_at": "2025-07-31T07:55:34.234Z"
}