less copy protection, more size visualization
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

807 行
13 KiB

  1. @import url('https://fonts.googleapis.com/css?family=Coda&display=swap');
  2. html {
  3. height: 100%;
  4. width: 100%;
  5. box-sizing: border-box;
  6. overflow-x: hidden;
  7. overflow-y: hidden;
  8. color: #eee;
  9. }
  10. body {
  11. position: relative;
  12. background: #333;
  13. display: flex;
  14. flex-direction: column;
  15. align-items: center;
  16. justify-content: flex-start;
  17. height: 100%;
  18. width: 100%;
  19. font-family: 'Coda', sans-serif;
  20. }
  21. .entity-box {
  22. position: absolute;
  23. --height: 100px;
  24. max-height: var(--height);
  25. height: var(--height);
  26. text-align: center;
  27. -webkit-user-drag: none;
  28. -khtml-user-drag: none;
  29. -moz-user-drag: none;
  30. -o-user-drag: none;
  31. pointer-events: none;
  32. transition: left 0.2s cubic-bezier(.1,.41,.18,.99), top 0.2s cubic-bezier(.1,.41,.18,.99), height 0.2s cubic-bezier(.1,.41,.18,.99), max-height 0.2s cubic-bezier(.1,.41,.18,.99);
  33. }
  34. .entity-image {
  35. height: 100%;
  36. pointer-events: auto;
  37. -webkit-user-drag: none;
  38. -khtml-user-drag: none;
  39. -moz-user-drag: none;
  40. -o-user-drag: none;
  41. --offset: -100%;
  42. transform: translate(-50%, var(--offset));
  43. }
  44. .entity-name {
  45. display: none;
  46. position: absolute;
  47. top: calc(-100% + var(--extra) / 2);
  48. left: 0%;
  49. transform: translate(-50%, -36px);
  50. font-size: 24px;
  51. pointer-events: none;
  52. max-width: 250px;
  53. width: 250px;
  54. transition: all 0s;
  55. }
  56. body.toggle-entity-name .entity-name,
  57. .entity-box.selected .entity-name {
  58. display: inline;
  59. }
  60. .entity-box.selected > img {
  61. filter: drop-shadow(0px 0px 5px gold);
  62. }
  63. body.toggle-entity-glow .entity-box:not(.selected) > img{
  64. filter: drop-shadow(0px 0px 2px white);
  65. }
  66. #main-area {
  67. min-height: 0px;
  68. display: flex;
  69. flex: 1 1 90vh;
  70. width: 100%;
  71. flex-direction: row;
  72. }
  73. #options {
  74. position: relative;
  75. flex: 1 1 15vw;
  76. min-width: 100pt;
  77. display: flex;
  78. justify-content: start;
  79. flex-direction: column;
  80. background: #444;
  81. overflow-x: hidden;
  82. overflow-y: auto;
  83. height: 100%;
  84. scrollbar-color: #e1e1e1 #888;
  85. }
  86. #options.hidden {
  87. min-width: 0pt;
  88. flex: 0 1 0vw;
  89. }
  90. #options-attribution {
  91. display: none;
  92. }
  93. #options::-webkit-scrollbar {
  94. height: 2px;
  95. }
  96. #options::-webkit-scrollbar-button {
  97. width: 0px;
  98. height: 0px;
  99. }
  100. #options::-webkit-scrollbar-thumb {
  101. background: #e1e1e1;
  102. border: 0px none #ffffff;
  103. border-radius: 50px;
  104. }
  105. #options::-webkit-scrollbar-thumb:hover {
  106. background: #ffffff;
  107. }
  108. #options::-webkit-scrollbar-thumb:active {
  109. background: #000000;
  110. }
  111. #options::-webkit-scrollbar-track {
  112. background: #00000000;
  113. border: 0px none #ffffff;
  114. border-radius: 50px;
  115. }
  116. #options::-webkit-scrollbar-track:hover {
  117. background: #666666;
  118. }
  119. #options::-webkit-scrollbar-track:active {
  120. background: #333333;
  121. }
  122. #options::-webkit-scrollbar-corner {
  123. background: transparent;
  124. }
  125. .options-two-buttons {
  126. display: flex;
  127. justify-content: space-evenly;
  128. }
  129. .options-category {
  130. position: relative;
  131. }
  132. .options-row {
  133. position: relative;
  134. flex-direction: column;
  135. display: flex;
  136. text-align: center;
  137. align-items: center;
  138. margin-left: auto;
  139. margin-right: auto;
  140. margin-top: 8px;
  141. margin-bottom: 8px;
  142. max-width: 90%;
  143. }
  144. .options-row.full {
  145. min-width: 90%;
  146. }
  147. .options-block {
  148. display: flex;
  149. text-align: center;
  150. min-width: 90%;
  151. width: 90%;
  152. margin: auto;
  153. flex-direction: column;
  154. }
  155. .options-label {
  156. text-align: center;
  157. user-select: none;
  158. margin-top: 12px;
  159. margin-bottom: 4px;
  160. }
  161. .options-block.options-block-optional {
  162. display: none;
  163. }
  164. body.show-extra-options .options-block.options-block-optional {
  165. display: flex;
  166. }
  167. .options-header {
  168. text-align: center;
  169. font-size: 24pt;
  170. margin-top: 10px;
  171. margin-bottom: 10px;
  172. background: #333;
  173. user-select: none;
  174. }
  175. .options-banner {
  176. text-align: center;
  177. font-size: 24pt;
  178. margin-top: 10px;
  179. margin-bottom: 10px;
  180. background: #232;
  181. text-decoration: none;
  182. user-select: none;
  183. }
  184. .options-banner:hover {
  185. color: #222;
  186. background: #494;
  187. }
  188. .options-selector {
  189. font-size: 150%;
  190. width: 100%;
  191. }
  192. #entities {
  193. position: absolute;
  194. user-select: none;
  195. width: 100%;
  196. height: 100%;
  197. }
  198. #world {
  199. position: relative;
  200. flex: 1 1 85vw;
  201. height: 100%;
  202. overflow: hidden;
  203. }
  204. #menubar {
  205. display: flex;
  206. flex: 1 0 5vh;
  207. flex-direction: row;
  208. justify-content: space-evenly;
  209. align-items: center;
  210. flex-wrap: wrap;
  211. min-width: 100vw;
  212. background: #222;
  213. }
  214. #menubar.hover-delete {
  215. background: #922;
  216. }
  217. .menubar-group {
  218. display: flex;
  219. flex-direction: row;
  220. }
  221. .popout-group {
  222. margin: 20px;
  223. display: flex;
  224. flex-direction: column;
  225. }
  226. .menu-item {
  227. font-size: 24px;
  228. color: #ccc;
  229. margin: 20px;
  230. }
  231. select.menu-item {
  232. color: #000;
  233. }
  234. #display {
  235. display: none;
  236. width: 100%;
  237. height: 100%;
  238. background: #333;
  239. }
  240. body.toggle-scale #display {
  241. display: block;
  242. }
  243. #options .options-label,
  244. #options .options-banner {
  245. flex: 0 1;
  246. width: 100%;
  247. font-size: 150%;
  248. }
  249. .options-row .options-field-numeric {
  250. flex: 1 1 100%;
  251. max-width: 90%;
  252. font-size: 150%;
  253. }
  254. .options-row .options-field-text {
  255. flex: 1 0 90%;
  256. max-width: 90%;
  257. font-size: 150%;
  258. }
  259. .options-row .options-field-unit {
  260. flex: 1 1 10%;
  261. max-width: 90%;
  262. font-size: 150%;
  263. }
  264. .options-row .options-field-picker {
  265. flex: 1;
  266. width: 100%;
  267. min-width: 90%;
  268. max-width: 90%;
  269. font-size: 150%;
  270. overflow: hidden;
  271. white-space: pre-wrap;
  272. word-break: normal;
  273. text-overflow: ellipsis;
  274. }
  275. .options-row .symbol-button {
  276. width: 75px;
  277. font-size: 70px;
  278. }
  279. .options-row .options-button {
  280. flex: 1;
  281. width: 100%;
  282. font-size: 150%;
  283. }
  284. .options-block .options-button {
  285. flex: 1;
  286. width: 100%;
  287. font-size: 150%;
  288. }
  289. .options-row label {
  290. flex: 1;
  291. width: 100%;
  292. font-size: 150%;
  293. }
  294. body #test-canvas {
  295. position: fixed;
  296. top: 500vh;
  297. }
  298. .switch {
  299. height: 24pt;
  300. }
  301. .switch input {
  302. transform: scale(2);
  303. }
  304. .top-name {
  305. display: none;
  306. text-align: center;
  307. position: fixed;
  308. max-width: 150px;
  309. height: 50px;
  310. transform: translate(-50%, 20pt);
  311. z-index: 1001;
  312. }
  313. body.toggle-top-name .top-name.top-name-needed {
  314. display: block;
  315. }
  316. .top-name::after {
  317. display: block;
  318. background-image: url("./media/ui/arrow.svg");
  319. width: 70px;
  320. height: 70px;
  321. background-size: 70px 70px;
  322. background-repeat: no-repeat;
  323. content: "";
  324. transform: translate(0, -120%);
  325. }
  326. .bottom-name {
  327. display: none;
  328. text-align: center;
  329. position: fixed;
  330. width: 150px;
  331. height: 50px;
  332. z-index: 349539534;
  333. transform: translate(-50%, 0pt);
  334. }
  335. body.toggle-bottom-name .bottom-name {
  336. display: inline;
  337. }
  338. #menubar select {
  339. font-size: 16pt;
  340. max-width: 200pt;
  341. min-width: 120pt;
  342. height: 40pt;
  343. max-height: 180pt;
  344. overflow: hidden;
  345. white-space: pre-wrap;
  346. word-break: normal;
  347. text-overflow: ellipsis;
  348. }
  349. #menubar button {
  350. position: relative;
  351. font-size: 32pt;
  352. height: 40pt;
  353. z-index: 1;
  354. }
  355. #open-help {
  356. padding-top: 1pt;
  357. }
  358. #open-help.highlighted::before {
  359. position: absolute;
  360. top: 0;
  361. left: 0;
  362. content: " ";
  363. display: block;
  364. height: 100%;
  365. width: 100%;
  366. background: white;
  367. filter: drop-shadow(0px 0px 10px white);
  368. z-index: -1;
  369. animation: pulsing 5s linear 0s infinite;
  370. }
  371. @keyframes pulsing {
  372. 0% {
  373. opacity: 100%;
  374. }
  375. 50% {
  376. opacity: 25%;
  377. }
  378. 100% {
  379. opacity: 100%;
  380. }
  381. }
  382. #help {
  383. display: none;
  384. flex-direction: column;
  385. justify-content: space-evenly;
  386. align-items: center;
  387. position: absolute;
  388. width: 60vw;
  389. height: 60vh;
  390. margin: 0pt;
  391. padding-top: 20vh;
  392. padding-bottom: 20vh;
  393. padding-left: 20vw;
  394. padding-right: 20vw;
  395. text-align: center;
  396. background: #333;
  397. opacity: 0;
  398. z-index: 9999999;
  399. backdrop-filter: blur(5px);
  400. }
  401. #help.visible {
  402. display: flex;
  403. opacity: 0.9;
  404. justify-content: center;
  405. }
  406. #help h1 {
  407. font-size: 150%;
  408. }
  409. #help p {
  410. font-size: 125%;
  411. }
  412. #help ul {
  413. text-align: left;
  414. list-style: circle;
  415. width: 75vw;
  416. }
  417. #help li {
  418. padding: 10px;
  419. }
  420. #help button {
  421. height: 10vh;
  422. font-size: 9vh;
  423. }
  424. a {
  425. color: #999;
  426. }
  427. #options-attribution-authors {
  428. text-align: center;
  429. }
  430. #options-attribution-owners {
  431. text-align: center;
  432. }
  433. #options-attribution-source {
  434. text-align: center;
  435. }
  436. .no-transition {
  437. transition: 0s !important;
  438. }
  439. .corner-ribbon {
  440. width: 200px;
  441. background: #e43;
  442. position: fixed;
  443. top: 25px;
  444. left: -50px;
  445. text-align: center;
  446. padding: 10px;
  447. letter-spacing: 1px;
  448. color: #f0f0f0;
  449. transform: rotate(-45deg);
  450. -webkit-transform: rotate(-45deg);
  451. }
  452. .corner-ribbon.bottom-right{
  453. top: auto;
  454. right: -50px;
  455. bottom: 25px;
  456. left: auto;
  457. transform: rotate(-45deg);
  458. -webkit-transform: rotate(-45deg);
  459. }
  460. a.corner-ribbon {
  461. text-decoration: none;
  462. }
  463. input[type=checkbox] {
  464. transform: scale(2);
  465. margin-left: 10px;
  466. margin-right: 10px;
  467. }
  468. input ~ label {
  469. user-select: none;
  470. }
  471. body.toggle-height-bars .height-bar,
  472. .entity-box.selected .height-bar {
  473. display: block;
  474. }
  475. .height-bar {
  476. display: none;
  477. min-width: calc(var(--xpos));
  478. min-height: 3px;
  479. height: 3px;
  480. position: absolute;
  481. opacity: 50%;
  482. background: repeating-linear-gradient(90deg, #ffffff, #ffffff 20px, #ffffff00 20px, #ffffff00 40px);
  483. top: calc(-100% + var(--extra));
  484. left: calc(-1 * var(--xpos));
  485. transition: 0s all;
  486. z-index: -1;
  487. }
  488. .height-bar::before {
  489. display: block;
  490. background: gray;
  491. position: absolute;
  492. content: var(--entity-height);
  493. transition: 0s all;
  494. }
  495. .height-bar::after {
  496. display: block;
  497. min-width: 24px;
  498. min-height: 3px;
  499. background: #ffffff;
  500. position: absolute;
  501. left: calc(var(--xpos) - 24px);
  502. transition: 0s all;
  503. content: "";
  504. }
  505. .sr-only {
  506. position: absolute;
  507. width: 1px;
  508. height: 1px;
  509. padding: 0;
  510. margin: -1px;
  511. overflow: hidden;
  512. clip: rect(0,0,0,0);
  513. border: 0;
  514. }
  515. .bottom-cover {
  516. display: none;
  517. position: absolute;
  518. width: 100%;
  519. height: 10vh;
  520. left: 0%;
  521. top: calc(100% - 51px);
  522. background: black;
  523. }
  524. body.toggle-bottom-cover .bottom-cover {
  525. display: inline-block;
  526. }
  527. .transitions {
  528. transition: 0.2s all;
  529. }
  530. .rotate-forward {
  531. transform: rotate(-90deg);
  532. }
  533. .rotate-backward {
  534. transform: rotate(90deg);
  535. }
  536. i.fas
  537. i.far {
  538. pointer-events: none;
  539. }
  540. #help-icons {
  541. display: flex;
  542. flex-direction: column;
  543. flex-wrap: wrap;
  544. width: 50vw;
  545. }
  546. #help-icons > div {
  547. flex-basis: 25%;
  548. font-size: 150%;
  549. }
  550. #entity-view {
  551. text-align: center;
  552. font-weight: bold;
  553. font-size: 200%;
  554. }
  555. #spawners > select,
  556. #spawners > button {
  557. padding-top: 2pt;
  558. display: none;
  559. }
  560. #spawners > select#category-picker {
  561. display: block;
  562. }
  563. #spawners > select.category-visible,
  564. #spawners > select.category-visible + button {
  565. display: block;
  566. }
  567. #spawners > select {
  568. font-size: 24pt;
  569. }
  570. #spawners > button {
  571. font-size: 30pt;
  572. }
  573. #spawners-categories {
  574. font-size: 24pt;
  575. }
  576. .scroll-button {
  577. position: absolute;
  578. height: 25%;
  579. width: 50px;
  580. font-size: 40px;
  581. background: #ffffff33;
  582. border: 0px;
  583. z-index: 1002;
  584. }
  585. .scroll-button:active {
  586. background: #ffffff66;
  587. }
  588. .scroll-button:hover {
  589. background: #ffffff44;
  590. }
  591. .scroll-button:disabled {
  592. background: #ffffff11;
  593. }
  594. #zoom-out {
  595. left: 0%;
  596. top: 0%;
  597. }
  598. #zoom-in {
  599. right: 0%;
  600. top: 0%;
  601. }
  602. #scroll-left {
  603. left: 0%;
  604. top: 25%;
  605. }
  606. #scroll-right {
  607. right: 0%;
  608. top: 25%;
  609. }
  610. #shrink {
  611. left: 0%;
  612. top: 50%;
  613. }
  614. #grow {
  615. right: 0%;
  616. top: 50%;
  617. }
  618. #fit {
  619. right: 0%;
  620. top: 75%;
  621. }
  622. #toggle-menu {
  623. padding-top: 2pt;
  624. position: relative;
  625. }
  626. #popout-menu {
  627. display: none;
  628. flex-direction: column;
  629. height: 80vh;
  630. justify-content: space-around;
  631. position: fixed;
  632. top: 10%;
  633. left: 10%;
  634. z-index: 10000;
  635. background: #111;
  636. }
  637. #popout-menu.visible {
  638. display: flex;
  639. }
  640. .menu-button {
  641. height: 48pt;
  642. width: 56pt;
  643. font-size: 40pt;
  644. }
  645. .menu-button-holder {
  646. display: flex;
  647. align-items: center;
  648. }
  649. .menu-text {
  650. font-size: 24pt;
  651. margin-left: 6pt;
  652. }
  653. #options-entity-defaults > button {
  654. word-break: break-word;
  655. }
  656. button {
  657. border: 3px;
  658. border-style: outset;
  659. border-color: gray;
  660. padding: 5px;
  661. background: #eee;
  662. }
  663. button:hover {
  664. background: #ccc;
  665. }
  666. button:enabled:active {
  667. border-style: inset;
  668. background: #aaa;
  669. }
  670. .toast {
  671. position: absolute;
  672. bottom: 10%;
  673. left: 50%;
  674. animation-name: toast-animation;
  675. animation-duration: 5s;
  676. animation-timing-function: linear;
  677. z-index: 1001;
  678. }
  679. @keyframes toast-animation {
  680. 0% {
  681. transform: translate(-50%, 0);
  682. opacity: 1;
  683. }
  684. 50% {
  685. transform: translate(-50%, -10vh);
  686. opacity: 1;
  687. }
  688. 100% {
  689. transform: translate(-50%, -20vh);
  690. opacity: 0;
  691. }
  692. }