galaxy-uniapp-mcp-server
Version:
Galaxy组件库到UniApp组件转换MCP服务器 - 支持跨平台组件转换、兼容性分析和项目集成
108 lines • 11.8 kB
JSON
{
"id": "gustavofusco_lazy-starfish-84",
"name": "lazy-starfish-84",
"category": "buttons",
"author": "gustavofusco",
"description": "lazy-starfish-84 组件 (button, animation, interactive)",
"tags": [
"button",
"animation",
"interactive"
],
"original": {
"html": "<div class=\"container\">\n <button class=\"button\">\n <div class=\"button__line\"></div>\n <div class=\"button__line\"></div>\n <span class=\"button__text\">Hover Me</span>\n <div class=\"button__drow1\"></div>\n <div class=\"button__drow2\"></div>\n </button> \n</div>",
"css": "/* From Uiverse.io by gustavofusco - Tags: button */\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: #00135C;\n letter-spacing: 2px;\n transition: all .3s ease;\n border: none;\n background: transparent;\n}\n\n.button__text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n\n.button::before,\n.button::after,\n.button__text::before,\n.button__text::before {\n content: '';\n position: absolute;\n height: 3px;\n border-radius: 2px;\n background: #00135C;\n transition: all .5s ease;\n}\n\n.button::before {\n top: 0;\n left: 54px;\n width: calc(100% - 56px * 2 - 16px);\n}\n\n.button::after {\n top: 0;\n right: 54px;\n width: 8px;\n}\n\n.button__text::before {\n bottom: 0;\n right: 54px;\n width: calc(100% - 56px * 2 - 16px);\n}\n\n.button__text::after {\n top: 0;\n right: 54px;\n width: 8px;\n}\n\n.button__line {\n position: absolute;\n top: 0;\n width: 56px;\n height: 100%;\n overflow: hidden;\n}\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: #00135C;\n}\n\n.button__line:nth-child(1),\n.button__line:nth-child(1)::before {\n left: 0;\n}\n\n.button__line:nth-child(2),\n.button__line:nth-child(2)::before {\n right: 0;\n}\n\n.button:hover {\n letter-spacing: 6px;\n}\n\n.button:hover::before,\n.button:hover .button__text::before {\n width: 8px;\n}\n\n.button:hover::after,\n.button:hover .button__text::after {\n width: calc(100% - 56px * 2 - 16px);\n}\n\n.button__drow1,\n.button__drow2 {\n position: absolute;\n z-index: -1;\n border: 1rem;\n transform-origin: 1rem 1rem;\n}\n\n.button__drow1 {\n top: -1rem;\n left: 40px;\n width: 2rem;\n height: 0;\n transform: rotate(30deg);\n}\n\n.button__drow2 {\n top: 44px;\n left: 77px;\n width: 2rem;\n height: 0;\n transform: rotate(-127deg);\n}\n\n.button__drow1::before,\n.button__drow1::after,\n.button__drow2::before,\n.button__drow2::after {\n content: '';\n position: absolute;\n}\n\n.button__drow1::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-60deg);\n}\n\n.button__drow1::after {\n top: -10px;\n left: 45px;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-69deg);\n}\n\n.button__drow2::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-146deg);\n}\n\n.button__drow1::after {\n bottom: 26px;\n left: -40px;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-262deg);\n}\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: dodgerblue;\n}\n\n.button:hover .button__drow1 {\n animation: drow1 ease-in .06s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow1::before {\n animation: drow2 linear .08s .06s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow1::after {\n animation: drow3 linear .03s .14s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow2 {\n animation: drow4 linear .06s .2s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow2::before {\n animation: drow3 linear .03s .26s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow2::after {\n animation: drow5 linear .06s .32s;\n animation-fill-mode: forwards;\n}\n\n@keyframes drow1 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 100px;\n }\n}\n\n@keyframes drow2 {\n 0% {\n width: 0;\n opacity: 0;\n }\n\n 10% {\n opacity: 0;\n }\n\n 11% {\n opacity: 1;\n }\n\n 100% {\n height: 120px;\n }\n}\n\n@keyframes drow3 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 80px;\n }\n}\n\n@keyframes drow4 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 120px;\n }\n}\n\n@keyframes drow5 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 124px;\n }\n}\n\n.container {\n width: 100%;\n height: 300px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}",
"file_path": "/mnt/persist/workspace/Buttons/gustavofusco_lazy-starfish-84.html"
},
"uniapp": {
"template": "<view class=\"container\"></view>\n <button class=\"button\"></button>\n <view class=\"button__line\"></view>\n <view class=\"button__line\"></view>\n <text class=\"button__text\">Hover Me</text>\n <view class=\"button__drow1\"></view>\n <view class=\"button__drow2\"></view>\n </button> \n</div>",
"script": "export default {\n name: 'GalaxyLazyStarfish84',\n props: {\n // 根据组件类型动态生成props\n },\n data() {\n return {\n // 组件状态\n };\n },\n methods: {\n // 组件方法\n }\n}",
"style": "\n/* From Uiverse.io by gustavofusco - Tags: button */\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: #00135C;\n letter-spacing: 4rpx;\n transition: all .3s ease;\n border: none;\n background: transparent;\n}\n\n.button__text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n\n.button::before,\n.button::after,\n.button__text::before,\n.button__text::before {\n content: '';\n position: absolute;\n height: 6rpx;\n border-radius: 4rpx;\n background: #00135C;\n transition: all .5s ease;\n}\n\n.button::before {\n top: 0;\n left: 108rpx;\n width: calc(100% - 112rpx * 2 - 32rpx);\n}\n\n.button::after {\n top: 0;\n right: 108rpx;\n width: 16rpx;\n}\n\n.button__text::before {\n bottom: 0;\n right: 108rpx;\n width: calc(100% - 112rpx * 2 - 32rpx);\n}\n\n.button__text::after {\n top: 0;\n right: 108rpx;\n width: 16rpx;\n}\n\n.button__line {\n position: absolute;\n top: 0;\n width: 112rpx;\n height: 100%;\n overflow: hidden;\n}\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: #00135C;\n}\n\n.button__line:nth-child(1),\n.button__line:nth-child(1)::before {\n left: 0;\n}\n\n.button__line:nth-child(2),\n.button__line:nth-child(2)::before {\n right: 0;\n}\n\n.button:hover {\n letter-spacing: 12rpx;\n}\n\n.button:hover::before,\n.button:hover .button__text::before {\n width: 16rpx;\n}\n\n.button:hover::after,\n.button:hover .button__text::after {\n width: calc(100% - 112rpx * 2 - 32rpx);\n}\n\n.button__drow1,\n.button__drow2 {\n position: absolute;\n z-index: -1;\n border: 1rem;\n transform-origin: 1rem 1rem;\n}\n\n.button__drow1 {\n top: -1rem;\n left: 80rpx;\n width: 2rem;\n height: 0;\n transform: rotate(30deg);\n}\n\n.button__drow2 {\n top: 88rpx;\n left: 154rpx;\n width: 2rem;\n height: 0;\n transform: rotate(-127deg);\n}\n\n.button__drow1::before,\n.button__drow1::after,\n.button__drow2::before,\n.button__drow2::after {\n content: '';\n position: absolute;\n}\n\n.button__drow1::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-60deg);\n}\n\n.button__drow1::after {\n top: -20rpx;\n left: 90rpx;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-69deg);\n}\n\n.button__drow2::before {\n bottom: 0;\n left: 0;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-146deg);\n}\n\n.button__drow1::after {\n bottom: 52rpx;\n left: -80rpx;\n width: 0;\n height: 2rem;\n border-radius: 1rem;\n transform-origin: 1rem 1rem;\n transform: rotate(-262deg);\n}\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: dodgerblue;\n}\n\n.button:hover .button__drow1 {\n animation: drow1 ease-in .06s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow1::before {\n animation: drow2 linear .08s .06s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow1::after {\n animation: drow3 linear .03s .14s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow2 {\n animation: drow4 linear .06s .2s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow2::before {\n animation: drow3 linear .03s .26s;\n animation-fill-mode: forwards;\n}\n\n.button:hover .button__drow2::after {\n animation: drow5 linear .06s .32s;\n animation-fill-mode: forwards;\n}\n\n@keyframes drow1 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 200rpx;\n }\n}\n\n@keyframes drow2 {\n 0% {\n width: 0;\n opacity: 0;\n }\n\n 10% {\n opacity: 0;\n }\n\n 11% {\n opacity: 1;\n }\n\n 100% {\n height: 240rpx;\n }\n}\n\n@keyframes drow3 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 160rpx;\n }\n}\n\n@keyframes drow4 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 240rpx;\n }\n}\n\n@keyframes drow5 {\n 0% {\n height: 0;\n }\n\n 100% {\n height: 248rpx;\n }\n}\n\n.container {\n width: 100%;\n height: 600rpx;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n\n\n\n",
"component_name": "GalaxyLazyStarfish84"
},
"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": 4417,
"render_cost": "high",
"memory_usage": "high"
},
"dependencies": [],
"examples": [
{
"title": "",
"description": "",
"code": ""
}
],
"created_at": "2025-07-31T07:55:36.904Z",
"updated_at": "2025-07-31T07:55:36.904Z"
}