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

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