加入彩蛋的保存按钮

This commit is contained in:
枫谷剑仙 2023-03-03 19:46:24 +08:00
parent 62de261e98
commit 4b8e788e97
6 changed files with 52 additions and 34 deletions

View File

@ -796,14 +796,14 @@ var formation = new Formation(teamsCount,5);
<div class="attrs-div"><!--属性-->
<label class="monster">
<input type="file" accept="image/*" id="avatar-select" />
<div class="custom-avatar"></div>
<canvas class="custom-avatar" width="100" height="100"></canvas>
<div class="attrs">
<div class="attr"></div>
<div class="attr"></div>
<div class="attr"></div>
</div>
</label>
<ul class="attr-list attr-list-1">
<ul class="attr-list">
<li><input type="radio" name="attr-1" class="attr-radio" value="1111111" id="search-attr-1-any" checked/><label for="search-attr-1-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-1" class="attr-radio" value="0000001" id="search-attr-1-0" /><label for="search-attr-1-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-1" class="attr-radio" value="0000010" id="search-attr-1-1" /><label for="search-attr-1-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -812,7 +812,7 @@ var formation = new Formation(teamsCount,5);
<li><input type="radio" name="attr-1" class="attr-radio" value="0010000" id="search-attr-1-4" /><label for="search-attr-1-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-1" class="attr-radio" value="1000000" id="search-attr-1-6" /><label for="search-attr-1-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无主属性-->
</ul>
<ul class="attr-list attr-list-2">
<ul class="attr-list">
<li><input type="radio" name="attr-2" class="attr-radio" value="1111111" id="search-attr-2-any" checked/><label for="search-attr-2-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-2" class="attr-radio" value="0000001" id="search-attr-2-0" /><label for="search-attr-2-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-2" class="attr-radio" value="0000010" id="search-attr-2-1" /><label for="search-attr-2-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -821,7 +821,7 @@ var formation = new Formation(teamsCount,5);
<li><input type="radio" name="attr-2" class="attr-radio" value="0010000" id="search-attr-2-4" /><label for="search-attr-2-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-2" class="attr-radio" value="1000000" id="search-attr-2-6" /><label for="search-attr-2-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
</ul>
<ul class="attr-list attr-list-3">
<ul class="attr-list">
<li><input type="radio" name="attr-3" class="attr-radio" value="1111111" id="search-attr-3-any" checked/><label for="search-attr-3-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-3" class="attr-radio" value="0000001" id="search-attr-3-0" /><label for="search-attr-3-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-3" class="attr-radio" value="0000010" id="search-attr-3-1" /><label for="search-attr-3-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -830,7 +830,7 @@ var formation = new Formation(teamsCount,5);
<li><input type="radio" name="attr-3" class="attr-radio" value="0010000" id="search-attr-3-4" /><label for="search-attr-3-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-3" class="attr-radio" value="1000000" id="search-attr-3-6" /><label for="search-attr-3-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
</ul>
<div class="options"><input type="checkbox" name="fix-main-color" id="fix-main-color" checked><label class="config-checkbox-lbl fix-main-color-label" for="fix-main-color"></label></div>
<div class="options"><button id="avatar-save" class="display-none">💾</button><input type="checkbox" name="fix-main-color" id="fix-main-color" checked><label class="config-checkbox-lbl fix-main-color-label" for="fix-main-color"></label></div>
</div>
<div class="types-div"><!--类型-->
<ul class="type-list">

View File

@ -3504,13 +3504,38 @@ function initialize() {
//可以自行打开图片设定头像的彩蛋
const avatarSelect = attrPreview.querySelector("#avatar-select");
const customAvatar = attrPreview.querySelector(".custom-avatar");
avatarSelect.onchange = function(event){
let fileUrlmatch = /url\("(blob:.+?)"\)/.exec(customAvatar.style.backgroundImage);
if (fileUrlmatch?.[1]) URL.revokeObjectURL(fileUrlmatch[1]); //如果找到旧的blob网址就删除
avatarSelect.onchange = async function(event){
let img = await createImageBitmap(event.target.files[0]);
let fileUrl = URL.createObjectURL(this.files[0]);
customAvatar.style.backgroundImage = `url(${fileUrl})`;
customAvatar.style.backgroundImage = `none`;
const ctx = customAvatar.getContext("2d");
let imgScale = Math.max(customAvatar.offsetWidth / img.width, customAvatar.offsetHeight / img.height);
//清空画布
ctx.clearRect(0, 0, customAvatar.offsetWidth, customAvatar.offsetHeight);
//保持比例居中填充画图
ctx.drawImage(img,
-(img.width * imgScale - customAvatar.offsetWidth) / 2,
-(img.height * imgScale - customAvatar.offsetHeight) / 2,
img.width * imgScale,
img.height * imgScale
);
img.close();
btnCustomAvatarSave.classList.remove(className_displayNone);
};
const btnCustomAvatarSave = searchBox.querySelector(".attrs-div #avatar-save");
btnCustomAvatarSave.onclick = function(event) {
const downLink = controlBox.querySelector(".down-capture");
html2canvas(attrPreview, {backgroundColor: null}).then(canvas => {
canvas.toBlob(function(blob) {
window.URL.revokeObjectURL(downLink.href);
downLink.href = URL.createObjectURL(blob);
downLink.download = `custom-avatar.png`;
downLink.click();
});
});
}
function s_types_onchange(){
const newClassName = `type-killer-${this.value}`;

View File

@ -11523,7 +11523,7 @@ const cachesMap = new Map([
],
[
"multi.html",
"d4ea0f7a22e42cd35bf2ee803884f59b"
"e78a3826c15caf874b6e988de4e36fca"
],
[
"script-custom_elements.js",
@ -11543,11 +11543,11 @@ const cachesMap = new Map([
],
[
"script.js",
"b21c8e4dfbc65b3553e5cb00a8d94f6f"
"4343f2d266951e67d12f507e49a2cc2e"
],
[
"solo.html",
"6420486982262c8d2b32faa581fa10e9"
"fc534488791e3bfe54b53fba022facd0"
],
[
"style-monsterimages.css",
@ -11555,7 +11555,7 @@ const cachesMap = new Map([
],
[
"style.css",
"8e09f4adfba107cb104aaba7e109c89c"
"4ffe954bedfaf3a2a185b98e1ffbb971"
],
[
"temp.js",
@ -11563,7 +11563,7 @@ const cachesMap = new Map([
],
[
"triple.html",
"fb5368a1802eff84a96e0d96ab23d1f3"
"7c18057f20e9bfbbfa0256e3b707f825"
],
[
"languages/en.css",

View File

@ -631,14 +631,14 @@ var formation = new Formation(teamsCount,6);
<div class="attrs-div"><!--属性-->
<label class="monster" for="avatar-select">
<input type="file" accept="image/*" id="avatar-select" />
<div class="custom-avatar"></div>
<canvas class="custom-avatar" width="100" height="100"></canvas>
<div class="attrs">
<div class="attr"></div>
<div class="attr"></div>
<div class="attr"></div>
</div>
</label>
<ul class="attr-list attr-list-1">
<ul class="attr-list">
<li><input type="radio" name="attr-1" class="attr-radio" value="1111111" id="search-attr-1-any" checked/><label for="search-attr-1-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-1" class="attr-radio" value="0000001" id="search-attr-1-0" /><label for="search-attr-1-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-1" class="attr-radio" value="0000010" id="search-attr-1-1" /><label for="search-attr-1-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -647,7 +647,7 @@ var formation = new Formation(teamsCount,6);
<li><input type="radio" name="attr-1" class="attr-radio" value="0010000" id="search-attr-1-4" /><label for="search-attr-1-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-1" class="attr-radio" value="1000000" id="search-attr-1-6" /><label for="search-attr-1-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无主属性-->
</ul>
<ul class="attr-list attr-list-2">
<ul class="attr-list">
<li><input type="radio" name="attr-2" class="attr-radio" value="1111111" id="search-attr-2-any" checked/><label for="search-attr-2-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-2" class="attr-radio" value="0000001" id="search-attr-2-0" /><label for="search-attr-2-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-2" class="attr-radio" value="0000010" id="search-attr-2-1" /><label for="search-attr-2-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -656,7 +656,7 @@ var formation = new Formation(teamsCount,6);
<li><input type="radio" name="attr-2" class="attr-radio" value="0010000" id="search-attr-2-4" /><label for="search-attr-2-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-2" class="attr-radio" value="1000000" id="search-attr-2-6" /><label for="search-attr-2-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
</ul>
<ul class="attr-list attr-list-3">
<ul class="attr-list">
<li><input type="radio" name="attr-3" class="attr-radio" value="1111111" id="search-attr-3-any" checked/><label for="search-attr-3-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-3" class="attr-radio" value="0000001" id="search-attr-3-0" /><label for="search-attr-3-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-3" class="attr-radio" value="0000010" id="search-attr-3-1" /><label for="search-attr-3-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -665,7 +665,7 @@ var formation = new Formation(teamsCount,6);
<li><input type="radio" name="attr-3" class="attr-radio" value="0010000" id="search-attr-3-4" /><label for="search-attr-3-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-3" class="attr-radio" value="1000000" id="search-attr-3-6" /><label for="search-attr-3-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
</ul>
<div class="options"><input type="checkbox" name="fix-main-color" id="fix-main-color" checked><label class="config-checkbox-lbl fix-main-color-label" for="fix-main-color"></label></div>
<div class="options"><button id="avatar-save" class="display-none">💾</button><input type="checkbox" name="fix-main-color" id="fix-main-color" checked><label class="config-checkbox-lbl fix-main-color-label" for="fix-main-color"></label></div>
</div>
<div class="types-div"><!--类型-->
<ul class="type-list">

View File

@ -1626,6 +1626,7 @@ icon.inflicts::after
grid-row: 1 / 4;
}
.search-box .attrs-div .monster .custom-avatar {
display: block;
width: 100%;
height: 100%;
box-sizing: border-box;
@ -1660,15 +1661,7 @@ icon.inflicts::after
margin-right: 3px;
display: inline-block;
}
/*.search-box .attrs-div-div .attr-list-1::before{
content: "属性1";
}
.search-box .attrs-div-div .attr-list-2::before{
content: "属性2";
}
.search-box .attrs-div-div .fix-main-color-label::after{
content: "限制属性1为主属性属性2为副属性";
}*/
.attr-radio,
.attr-check,
.type-check,

View File

@ -1717,14 +1717,14 @@ var formation = new Formation(teamsCount,6);
<div class="attrs-div"><!--属性-->
<label class="monster">
<input type="file" accept="image/*" id="avatar-select" />
<div class="custom-avatar"></div>
<canvas class="custom-avatar" width="100" height="100"></canvas>
<div class="attrs">
<div class="attr"></div>
<div class="attr"></div>
<div class="attr"></div>
</div>
</label>
<ul class="attr-list attr-list-1">
<ul class="attr-list">
<li><input type="radio" name="attr-1" class="attr-radio" value="1111111" id="search-attr-1-any" checked/><label for="search-attr-1-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-1" class="attr-radio" value="0000001" id="search-attr-1-0" /><label for="search-attr-1-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-1" class="attr-radio" value="0000010" id="search-attr-1-1" /><label for="search-attr-1-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -1733,7 +1733,7 @@ var formation = new Formation(teamsCount,6);
<li><input type="radio" name="attr-1" class="attr-radio" value="0010000" id="search-attr-1-4" /><label for="search-attr-1-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-1" class="attr-radio" value="1000000" id="search-attr-1-6" /><label for="search-attr-1-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无主属性-->
</ul>
<ul class="attr-list attr-list-2">
<ul class="attr-list">
<li><input type="radio" name="attr-2" class="attr-radio" value="1111111" id="search-attr-2-any" checked/><label for="search-attr-2-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-2" class="attr-radio" value="0000001" id="search-attr-2-0" /><label for="search-attr-2-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-2" class="attr-radio" value="0000010" id="search-attr-2-1" /><label for="search-attr-2-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -1742,7 +1742,7 @@ var formation = new Formation(teamsCount,6);
<li><input type="radio" name="attr-2" class="attr-radio" value="0010000" id="search-attr-2-4" /><label for="search-attr-2-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-2" class="attr-radio" value="1000000" id="search-attr-2-6" /><label for="search-attr-2-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
</ul>
<ul class="attr-list attr-list-3">
<ul class="attr-list">
<li><input type="radio" name="attr-3" class="attr-radio" value="1111111" id="search-attr-3-any" checked/><label for="search-attr-3-any"><span class="attr" data-attr-icon="any"></span></label></li><!--任意-->
<li><input type="radio" name="attr-3" class="attr-radio" value="0000001" id="search-attr-3-0" /><label for="search-attr-3-0"><span class="attr" data-attr-icon="0"></span></label></li><!---->
<li><input type="radio" name="attr-3" class="attr-radio" value="0000010" id="search-attr-3-1" /><label for="search-attr-3-1"><span class="attr" data-attr-icon="1"></span></label></li><!---->
@ -1751,7 +1751,7 @@ var formation = new Formation(teamsCount,6);
<li><input type="radio" name="attr-3" class="attr-radio" value="0010000" id="search-attr-3-4" /><label for="search-attr-3-4"><span class="attr" data-attr-icon="4"></span></label></li><!---->
<li><input type="radio" name="attr-3" class="attr-radio" value="1000000" id="search-attr-3-6" /><label for="search-attr-3-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
</ul>
<div class="options"><input type="checkbox" name="fix-main-color" id="fix-main-color" checked><label class="config-checkbox-lbl fix-main-color-label" for="fix-main-color"></label></div>
<div class="options"><button id="avatar-save" class="display-none">💾</button><input type="checkbox" name="fix-main-color" id="fix-main-color" checked><label class="config-checkbox-lbl fix-main-color-label" for="fix-main-color"></label></div>
</div>
<div class="types-div"><!--类型-->
<ul class="type-list">