diff --git a/asserts/css/live2dv3.init.css b/asserts/css/live2dv3.init.css new file mode 100644 index 0000000..bad91a0 --- /dev/null +++ b/asserts/css/live2dv3.init.css @@ -0,0 +1,317 @@ +#l2d-toggle { + background-color: #fa0; + border-radius: 5px; + bottom: 66px; + color: #fff; + cursor: pointer; + font-size: 12px; + left: 0; + margin-left: -100px; + padding: 5px 2px 5px 5px; + position: fixed; + transition: margin-left 1s; + width: 60px; + writing-mode: vertical-rl; +} + +#l2d-toggle.l2d-toggle-active { + margin-left: -50px; +} + +#l2d-toggle.l2d-toggle-active:hover { + margin-left: -30px; +} + +#l2d { + bottom: 0px; + left: 0; + line-height: 0; + position: fixed; + transform: translateY(3px); + transition: transform .3s ease-in-out, bottom 3s ease-in-out; + z-index: 1; +} + +#l2d:hover { + transform: translateY(0); +} + +@media (max-width: 768px) { + #l2d { + display: none; + } +} + +#L2dCanvas { + cursor: grab; + position: fixed; + bottom: 0px; + right: 0px; + right: -120px; + bottom: 5px; + z-index: 1; +} + +#L2dCanvas:active { + cursor: grabbing; +} + +#L2dCanvas #l2d-tips { + animation: shake 50s ease-in-out 5s infinite; + background-color: rgba(236, 217, 188, .5); + border: 1px solid rgba(224, 186, 140, .62); + border-radius: 12px; + box-shadow: 0 3px 15px 2px rgba(191, 158, 118, .2); + font-size: 14px; + line-height: 24px; + margin: -30px 20px; + min-height: 55px; + opacity: 0; + overflow: hidden; + padding: 5px 10px; + position: absolute; + bottom: 300px; + right: 110px; + text-overflow: ellipsis; + transition: opacity 1s; + width: 250px; + word-break: break-all; +} + +#L2dCanvas #l2d-tips.l2d-tips-active { + opacity: 1; + transition: opacity .2s; +} + +#L2dCanvas #l2d-tips span { + color: #0099cc; +} + +#L2dCanvas #l2d-tool { + color: #aaa; + opacity: 0; + position: absolute; + right: 125px; + bottom: 50px; + transition: opacity 1s; + z-index: 100; +} + +.l2d #L2dCanvas:hover #l2d-tool { + opacity: 1; +} + +#L2dCanvas #l2d-tool span { + color: #5b6c7d; + cursor: pointer; + display: block; + line-height: 30px; + text-align: center; + transition: color .3s; +} + +#L2dCanvas #l2d-tool span:hover { + color: #0684bd; /* #34495e */ +} + +@keyframes shake { + 2% { + transform: translate(.5px, -1.5px) rotate(-.5deg); + } + + 4% { + transform: translate(.5px, 1.5px) rotate(1.5deg); + } + + 6% { + transform: translate(1.5px, 1.5px) rotate(1.5deg); + } + + 8% { + transform: translate(2.5px, 1.5px) rotate(.5deg); + } + + 10% { + transform: translate(.5px, 2.5px) rotate(.5deg); + } + + 12% { + transform: translate(1.5px, 1.5px) rotate(.5deg); + } + + 14% { + transform: translate(.5px, .5px) rotate(.5deg); + } + + 16% { + transform: translate(-1.5px, -.5px) rotate(1.5deg); + } + + 18% { + transform: translate(.5px, .5px) rotate(1.5deg); + } + + 20% { + transform: translate(2.5px, 2.5px) rotate(1.5deg); + } + + 22% { + transform: translate(.5px, -1.5px) rotate(1.5deg); + } + + 24% { + transform: translate(-1.5px, 1.5px) rotate(-.5deg); + } + + 26% { + transform: translate(1.5px, .5px) rotate(1.5deg); + } + + 28% { + transform: translate(-.5px, -.5px) rotate(-.5deg); + } + + 30% { + transform: translate(1.5px, -.5px) rotate(-.5deg); + } + + 32% { + transform: translate(2.5px, -1.5px) rotate(1.5deg); + } + + 34% { + transform: translate(2.5px, 2.5px) rotate(-.5deg); + } + + 36% { + transform: translate(.5px, -1.5px) rotate(.5deg); + } + + 38% { + transform: translate(2.5px, -.5px) rotate(-.5deg); + } + + 40% { + transform: translate(-.5px, 2.5px) rotate(.5deg); + } + + 42% { + transform: translate(-1.5px, 2.5px) rotate(.5deg); + } + + 44% { + transform: translate(-1.5px, 1.5px) rotate(.5deg); + } + + 46% { + transform: translate(1.5px, -.5px) rotate(-.5deg); + } + + 48% { + transform: translate(2.5px, -.5px) rotate(.5deg); + } + + 50% { + transform: translate(-1.5px, 1.5px) rotate(.5deg); + } + + 52% { + transform: translate(-.5px, 1.5px) rotate(.5deg); + } + + 54% { + transform: translate(-1.5px, 1.5px) rotate(.5deg); + } + + 56% { + transform: translate(.5px, 2.5px) rotate(1.5deg); + } + + 58% { + transform: translate(2.5px, 2.5px) rotate(.5deg); + } + + 60% { + transform: translate(2.5px, -1.5px) rotate(1.5deg); + } + + 62% { + transform: translate(-1.5px, .5px) rotate(1.5deg); + } + + 64% { + transform: translate(-1.5px, 1.5px) rotate(1.5deg); + } + + 66% { + transform: translate(.5px, 2.5px) rotate(1.5deg); + } + + 68% { + transform: translate(2.5px, -1.5px) rotate(1.5deg); + } + + 70% { + transform: translate(2.5px, 2.5px) rotate(.5deg); + } + + 72% { + transform: translate(-.5px, -1.5px) rotate(1.5deg); + } + + 74% { + transform: translate(-1.5px, 2.5px) rotate(1.5deg); + } + + 76% { + transform: translate(-1.5px, 2.5px) rotate(1.5deg); + } + + 78% { + transform: translate(-1.5px, 2.5px) rotate(.5deg); + } + + 80% { + transform: translate(-1.5px, .5px) rotate(-.5deg); + } + + 82% { + transform: translate(-1.5px, .5px) rotate(-.5deg); + } + + 84% { + transform: translate(-.5px, .5px) rotate(1.5deg); + } + + 86% { + transform: translate(2.5px, 1.5px) rotate(.5deg); + } + + 88% { + transform: translate(-1.5px, .5px) rotate(1.5deg); + } + + 90% { + transform: translate(-1.5px, -.5px) rotate(-.5deg); + } + + 92% { + transform: translate(-1.5px, -1.5px) rotate(1.5deg); + } + + 94% { + transform: translate(.5px, .5px) rotate(-.5deg); + } + + 96% { + transform: translate(2.5px, -.5px) rotate(-.5deg); + } + + 98% { + transform: translate(-1.5px, -1.5px) rotate(-.5deg); + } + + 0%, 100% { + transform: translate(0, 0) rotate(0); + } +} diff --git a/asserts/js/charData.js b/asserts/js/charData.js new file mode 100644 index 0000000..112f68f --- /dev/null +++ b/asserts/js/charData.js @@ -0,0 +1,33 @@ +// 角色列表 +var charData = { + "Sirius (Midsummer Seirios)": "tianlangxing_3", + "Bismarck (Majesty of the Ironblood)": "bisimai_2", + "Ark Royal (Banquet Guardian)": "huangjiafangzhou_3", + "Taihou (Forbidden Feast)": "dafeng_2", + "Atago (Midsummer March)": "aidang_2", + "Eldridge (New Year's Handholding)": "aierdeliqi_4", + "Emile Bertin (Côte d'Azur)": "aimierbeierding_2", + "Centaur (Undine of the Beach)": "banrenma_2", + "Belfast (Iridescent Rose)": "beierfasite_2", + "Javelin": "biaoqiang", + "Javelin (Beach Picnic!)": "biaoqiang_3", + "Fubuki (Music Pixy)": "chuixue_3", + "Deutschland (Service Time?!)": "deyizhi_3", + "Unicorn (Amusement Park Date)": "dujiaoshou_4", + "Dunkerque (Summer Sucré)": "dunkeerke_2", + "Honolulu (Summer Accident?!)": "huonululu_3", + "Cleveland (Gentry Knight)": "kelifulan_3", + "Laffey": "lafei", + "Laffey (New Year Rabbit)": "lafei_4", + "Ayanami": "lingbo", + "Akashi": "mingshi", + "Graf Zeppelin (Beachside Urd)": "qibolin_2", + "St. Louis (Splendor of Spring)": "shengluyisi_2", + "St. Louis (Tipsy Snow)": "shengluyisi_3", + "Tai Yuan (Clamorous Tortoise)": "taiyuan_2", + "Tirpitz (Snow-melting Summer)": "tierbici_2", + "Yukikaze": "xuefeng", + "Ibuki (Wish of a Snow Goddess)": "yichui_2", + "Z23": "z23", + "Z46 (First Summer)": "z46_2", +}; \ No newline at end of file diff --git a/asserts/js/live2dv3.init.js b/asserts/js/live2dv3.init.js index 8dc4444..7d5d5a1 100644 --- a/asserts/js/live2dv3.init.js +++ b/asserts/js/live2dv3.init.js @@ -1,4 +1,23 @@ -document.write('
'); +// 创建看板娘div +document.body.insertAdjacentHTML("beforeend", + `