권주희

setting the basic layout of frontend

...@@ -1487,6 +1487,25 @@ ...@@ -1487,6 +1487,25 @@
1487 "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", 1487 "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
1488 "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" 1488 "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
1489 }, 1489 },
1490 + "@popperjs/core": {
1491 + "version": "2.4.0",
1492 + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.4.0.tgz",
1493 + "integrity": "sha512-NMrDy6EWh9TPdSRiHmHH2ye1v5U0gBD7pRYwSwJvomx7Bm4GG04vu63dYiVzebLOx2obPpJugew06xVP0Nk7hA=="
1494 + },
1495 + "@restart/context": {
1496 + "version": "2.1.4",
1497 + "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
1498 + "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q=="
1499 + },
1500 + "@restart/hooks": {
1501 + "version": "0.3.25",
1502 + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.25.tgz",
1503 + "integrity": "sha512-m2v3N5pxTsIiSH74/sb1yW8D9RxkJidGW+5Mfwn/lHb2QzhZNlaU1su7abSyT9EGf0xS/0waLjrf7/XxQHUk7w==",
1504 + "requires": {
1505 + "lodash": "^4.17.15",
1506 + "lodash-es": "^4.17.15"
1507 + }
1508 + },
1490 "@sheerun/mutationobserver-shim": { 1509 "@sheerun/mutationobserver-shim": {
1491 "version": "0.3.3", 1510 "version": "0.3.3",
1492 "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", 1511 "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz",
...@@ -1702,6 +1721,8 @@ ...@@ -1702,6 +1721,8 @@
1702 }, 1721 },
1703 "@testing-library/jest-dom": { 1722 "@testing-library/jest-dom": {
1704 "version": "4.2.4", 1723 "version": "4.2.4",
1724 + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz",
1725 + "integrity": "sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg==",
1705 "requires": { 1726 "requires": {
1706 "@babel/runtime": "^7.5.1", 1727 "@babel/runtime": "^7.5.1",
1707 "chalk": "^2.4.1", 1728 "chalk": "^2.4.1",
...@@ -1726,6 +1747,8 @@ ...@@ -1726,6 +1747,8 @@
1726 }, 1747 },
1727 "@testing-library/react": { 1748 "@testing-library/react": {
1728 "version": "9.5.0", 1749 "version": "9.5.0",
1750 + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz",
1751 + "integrity": "sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==",
1729 "requires": { 1752 "requires": {
1730 "@babel/runtime": "^7.8.4", 1753 "@babel/runtime": "^7.8.4",
1731 "@testing-library/dom": "^6.15.0", 1754 "@testing-library/dom": "^6.15.0",
...@@ -1733,7 +1756,9 @@ ...@@ -1733,7 +1756,9 @@
1733 } 1756 }
1734 }, 1757 },
1735 "@testing-library/user-event": { 1758 "@testing-library/user-event": {
1736 - "version": "7.2.1" 1759 + "version": "7.2.1",
1760 + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz",
1761 + "integrity": "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA=="
1737 }, 1762 },
1738 "@types/babel__core": { 1763 "@types/babel__core": {
1739 "version": "7.1.7", 1764 "version": "7.1.7",
...@@ -1965,6 +1990,11 @@ ...@@ -1965,6 +1990,11 @@
1965 } 1990 }
1966 } 1991 }
1967 }, 1992 },
1993 + "@types/warning": {
1994 + "version": "3.0.0",
1995 + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
1996 + "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI="
1997 + },
1968 "@types/yargs": { 1998 "@types/yargs": {
1969 "version": "13.0.9", 1999 "version": "13.0.9",
1970 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.9.tgz", 2000 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.9.tgz",
...@@ -3585,6 +3615,11 @@ ...@@ -3585,6 +3615,11 @@
3585 } 3615 }
3586 } 3616 }
3587 }, 3617 },
3618 + "classnames": {
3619 + "version": "2.2.6",
3620 + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
3621 + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
3622 + },
3588 "clean-css": { 3623 "clean-css": {
3589 "version": "4.2.3", 3624 "version": "4.2.3",
3590 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", 3625 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
...@@ -4585,6 +4620,15 @@ ...@@ -4585,6 +4620,15 @@
4585 "utila": "~0.4" 4620 "utila": "~0.4"
4586 } 4621 }
4587 }, 4622 },
4623 + "dom-helpers": {
4624 + "version": "5.1.4",
4625 + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz",
4626 + "integrity": "sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==",
4627 + "requires": {
4628 + "@babel/runtime": "^7.8.7",
4629 + "csstype": "^2.6.7"
4630 + }
4631 + },
4588 "dom-serializer": { 4632 "dom-serializer": {
4589 "version": "0.2.2", 4633 "version": "0.2.2",
4590 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", 4634 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
...@@ -8258,6 +8302,11 @@ ...@@ -8258,6 +8302,11 @@
8258 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 8302 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
8259 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 8303 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
8260 }, 8304 },
8305 + "lodash-es": {
8306 + "version": "4.17.15",
8307 + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz",
8308 + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ=="
8309 + },
8261 "lodash._reinterpolate": { 8310 "lodash._reinterpolate": {
8262 "version": "3.0.0", 8311 "version": "3.0.0",
8263 "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 8312 "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
...@@ -10624,6 +10673,15 @@ ...@@ -10624,6 +10673,15 @@
10624 "react-is": "^16.8.1" 10673 "react-is": "^16.8.1"
10625 } 10674 }
10626 }, 10675 },
10676 + "prop-types-extra": {
10677 + "version": "1.1.1",
10678 + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
10679 + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
10680 + "requires": {
10681 + "react-is": "^16.3.2",
10682 + "warning": "^4.0.0"
10683 + }
10684 + },
10627 "proxy-addr": { 10685 "proxy-addr": {
10628 "version": "2.0.6", 10686 "version": "2.0.6",
10629 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 10687 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
...@@ -10782,6 +10840,8 @@ ...@@ -10782,6 +10840,8 @@
10782 }, 10840 },
10783 "react": { 10841 "react": {
10784 "version": "16.13.1", 10842 "version": "16.13.1",
10843 + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",
10844 + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==",
10785 "requires": { 10845 "requires": {
10786 "loose-envify": "^1.1.0", 10846 "loose-envify": "^1.1.0",
10787 "object-assign": "^4.1.1", 10847 "object-assign": "^4.1.1",
...@@ -10801,6 +10861,26 @@ ...@@ -10801,6 +10861,26 @@
10801 "whatwg-fetch": "^3.0.0" 10861 "whatwg-fetch": "^3.0.0"
10802 } 10862 }
10803 }, 10863 },
10864 + "react-bootstrap": {
10865 + "version": "1.0.1",
10866 + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.0.1.tgz",
10867 + "integrity": "sha512-xMHwsvDN7sIv26P9wWiosWjITZije2dRCjEJHVfV2KFoSJY+8uv2zttEw0XMB7xviQcW3zuIGLJXuj8vf6lYEg==",
10868 + "requires": {
10869 + "@babel/runtime": "^7.4.2",
10870 + "@restart/context": "^2.1.4",
10871 + "@restart/hooks": "^0.3.21",
10872 + "@types/react": "^16.9.23",
10873 + "classnames": "^2.2.6",
10874 + "dom-helpers": "^5.1.2",
10875 + "invariant": "^2.2.4",
10876 + "prop-types": "^15.7.2",
10877 + "prop-types-extra": "^1.1.0",
10878 + "react-overlays": "^3.1.2",
10879 + "react-transition-group": "^4.0.0",
10880 + "uncontrollable": "^7.0.0",
10881 + "warning": "^4.0.3"
10882 + }
10883 + },
10804 "react-dev-utils": { 10884 "react-dev-utils": {
10805 "version": "10.2.1", 10885 "version": "10.2.1",
10806 "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", 10886 "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz",
...@@ -11033,6 +11113,8 @@ ...@@ -11033,6 +11113,8 @@
11033 }, 11113 },
11034 "react-dom": { 11114 "react-dom": {
11035 "version": "16.13.1", 11115 "version": "16.13.1",
11116 + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz",
11117 + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==",
11036 "requires": { 11118 "requires": {
11037 "loose-envify": "^1.1.0", 11119 "loose-envify": "^1.1.0",
11038 "object-assign": "^4.1.1", 11120 "object-assign": "^4.1.1",
...@@ -11050,6 +11132,26 @@ ...@@ -11050,6 +11132,26 @@
11050 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 11132 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
11051 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 11133 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
11052 }, 11134 },
11135 + "react-lifecycles-compat": {
11136 + "version": "3.0.4",
11137 + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
11138 + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
11139 + },
11140 + "react-overlays": {
11141 + "version": "3.2.0",
11142 + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-3.2.0.tgz",
11143 + "integrity": "sha512-YTgCmw6l4uBOYylSnc3V8WLX+A0EoGnzDrqkYz0K7MUKbMBZFpaxLXH4EF9eZbspd+syZHQ5XAABI7n/zak1EA==",
11144 + "requires": {
11145 + "@babel/runtime": "^7.4.5",
11146 + "@popperjs/core": "^2.0.0",
11147 + "@restart/hooks": "^0.3.12",
11148 + "@types/warning": "^3.0.0",
11149 + "dom-helpers": "^5.1.0",
11150 + "prop-types": "^15.7.2",
11151 + "uncontrollable": "^7.0.0",
11152 + "warning": "^4.0.3"
11153 + }
11154 + },
11053 "react-router": { 11155 "react-router": {
11054 "version": "5.2.0", 11156 "version": "5.2.0",
11055 "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", 11157 "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz",
...@@ -11098,6 +11200,8 @@ ...@@ -11098,6 +11200,8 @@
11098 }, 11200 },
11099 "react-scripts": { 11201 "react-scripts": {
11100 "version": "3.4.1", 11202 "version": "3.4.1",
11203 + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.1.tgz",
11204 + "integrity": "sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ==",
11101 "requires": { 11205 "requires": {
11102 "@babel/core": "7.9.0", 11206 "@babel/core": "7.9.0",
11103 "@svgr/webpack": "4.3.3", 11207 "@svgr/webpack": "4.3.3",
...@@ -11175,6 +11279,17 @@ ...@@ -11175,6 +11279,17 @@
11175 } 11279 }
11176 } 11280 }
11177 }, 11281 },
11282 + "react-transition-group": {
11283 + "version": "4.4.1",
11284 + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz",
11285 + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==",
11286 + "requires": {
11287 + "@babel/runtime": "^7.5.5",
11288 + "dom-helpers": "^5.0.1",
11289 + "loose-envify": "^1.4.0",
11290 + "prop-types": "^15.6.2"
11291 + }
11292 + },
11178 "read-pkg": { 11293 "read-pkg": {
11179 "version": "2.0.0", 11294 "version": "2.0.0",
11180 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 11295 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
...@@ -13232,6 +13347,17 @@ ...@@ -13232,6 +13347,17 @@
13232 "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 13347 "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
13233 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 13348 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
13234 }, 13349 },
13350 + "uncontrollable": {
13351 + "version": "7.1.1",
13352 + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz",
13353 + "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==",
13354 + "requires": {
13355 + "@babel/runtime": "^7.6.3",
13356 + "@types/react": "^16.9.11",
13357 + "invariant": "^2.2.4",
13358 + "react-lifecycles-compat": "^3.0.4"
13359 + }
13360 + },
13235 "unicode-canonical-property-names-ecmascript": { 13361 "unicode-canonical-property-names-ecmascript": {
13236 "version": "1.0.4", 13362 "version": "1.0.4",
13237 "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 13363 "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
...@@ -13523,6 +13649,14 @@ ...@@ -13523,6 +13649,14 @@
13523 "makeerror": "1.0.x" 13649 "makeerror": "1.0.x"
13524 } 13650 }
13525 }, 13651 },
13652 + "warning": {
13653 + "version": "4.0.3",
13654 + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
13655 + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
13656 + "requires": {
13657 + "loose-envify": "^1.0.0"
13658 + }
13659 + },
13526 "watchpack": { 13660 "watchpack": {
13527 "version": "1.7.2", 13661 "version": "1.7.2",
13528 "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", 13662 "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz",
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
7 "@testing-library/react": "^9.3.2", 7 "@testing-library/react": "^9.3.2",
8 "@testing-library/user-event": "^7.1.2", 8 "@testing-library/user-event": "^7.1.2",
9 "react": "^16.13.1", 9 "react": "^16.13.1",
10 + "react-bootstrap": "^1.0.1",
10 "react-dom": "^16.13.1", 11 "react-dom": "^16.13.1",
11 "react-router-dom": "^5.2.0", 12 "react-router-dom": "^5.2.0",
12 "react-scripts": "3.4.1" 13 "react-scripts": "3.4.1"
......
1 +.Home {
2 + text-align: center;
3 +}
4 +
5 +.Home-logo {
6 + height: 40vmin;
7 + pointer-events: none;
8 +}
9 +
10 +@media (prefers-reduced-motion: no-preference) {
11 + .Home-logo {
12 + animation: Home-logo-spin infinite 20s linear;
13 + }
14 +}
15 +
16 +.Home-header {
17 + background-color: #282c34;
18 + min-height: 13vh;
19 + display: flex;
20 + flex-direction: column;
21 + align-items: center;
22 + justify-content: center;
23 + font-size: calc(10px + 2vmin);
24 + color: white;
25 + font-weight: bold;
26 +}
27 +
28 +.Home-link {
29 + color: #61dafb;
30 +}
31 +
32 +@keyframes Home-logo-spin {
33 + from {
34 + transform: rotate(0deg);
35 + }
36 + to {
37 + transform: rotate(360deg);
38 + }
39 +}
40 +
41 +.strong {
42 + font-size: calc(10px + 1vmin);
43 + font-weight: bold;
44 +}
45 +.map_wrap,
46 +.map_wrap * {
47 + margin: 0;
48 + padding: 0;
49 + font-family: "Malgun Gothic", dotum, "돋움", sans-serif;
50 + font-size: 12px;
51 +}
52 +.map_wrap a,
53 +.map_wrap a:hover,
54 +.map_wrap a:active {
55 + color: #000;
56 + text-decoration: none;
57 +}
58 +.map_wrap {
59 + position: relative;
60 + width: 100%;
61 + height: 500px;
62 +}
63 +
64 +#menu_wrap {
65 + position: absolute;
66 + top: 0;
67 + left: 0;
68 + bottom: 0;
69 + width: 250px;
70 + margin: 10px 0 30px 10px;
71 + padding: 5px;
72 + overflow-y: auto;
73 + background: rgba(53, 53, 53, 0.8);
74 + z-index: 1;
75 + font-size: 12px;
76 + border-radius: 10px;
77 +}
78 +.bg_white {
79 + background: #fff;
80 +}
81 +x #menu_wrap hr {
82 + display: block;
83 + height: 1px;
84 + border: 0;
85 + border-top: 2px solid #5f5f5f;
86 + margin: 3px 0;
87 +}
88 +#menu_wrap .option {
89 + text-align: center;
90 + color: #ffffff;
91 + font-weight: bold;
92 +}
93 +#menu_wrap .option p {
94 + margin: 10px 0;
95 +}
96 +#menu_wrap .option button {
97 + margin-left: 5px;
98 +}
99 +
100 +#placesList li {
101 + list-style: none;
102 +}
103 +#placesList .item {
104 + position: relative;
105 + border-bottom: 1px solid #888;
106 + overflow: hidden;
107 + cursor: pointer;
108 + min-height: 65px;
109 +}
110 +#placesList .item span {
111 + display: block;
112 + margin-top: 4px;
113 +}
114 +#placesList .item h5,
115 +#placesList .item .info {
116 + text-overflow: ellipsis;
117 + overflow: hidden;
118 + white-space: nowrap;
119 +}
120 +#placesList .item .info {
121 + padding: 10px 0 10px 55px;
122 + color: #ffffff;
123 +}
124 +#placesList .info .gray {
125 + color: #eaeaea;
126 +}
127 +#placesList .info .jibun {
128 + padding-left: 26px;
129 + background: url(http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/places_jibun.png)
130 + no-repeat;
131 +}
132 +#placesList .info .tel {
133 + color: #ffbb00;
134 + font-weight: bold;
135 +}
136 +#placesList .item .markerbg {
137 + float: left;
138 + position: absolute;
139 + width: 36px;
140 + height: 37px;
141 + margin: 10px 0 0 10px;
142 + background: url(http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/marker_number_blue.png)
143 + no-repeat;
144 +}
145 +#placesList .item .marker_1 {
146 + background-position: 0 -10px;
147 +}
148 +#placesList .item .marker_2 {
149 + background-position: 0 -56px;
150 +}
151 +#placesList .item .marker_3 {
152 + background-position: 0 -102px;
153 +}
154 +#placesList .item .marker_4 {
155 + background-position: 0 -148px;
156 +}
157 +#placesList .item .marker_5 {
158 + background-position: 0 -194px;
159 +}
160 +#placesList .item .marker_6 {
161 + background-position: 0 -240px;
162 +}
163 +#placesList .item .marker_7 {
164 + background-position: 0 -286px;
165 +}
166 +#placesList .item .marker_8 {
167 + background-position: 0 -332px;
168 +}
169 +#placesList .item .marker_9 {
170 + background-position: 0 -378px;
171 +}
172 +#placesList .item .marker_10 {
173 + background-position: 0 -423px;
174 +}
175 +#placesList .item .marker_11 {
176 + background-position: 0 -470px;
177 +}
178 +#placesList .item .marker_12 {
179 + background-position: 0 -516px;
180 +}
181 +#placesList .item .marker_13 {
182 + background-position: 0 -562px;
183 +}
184 +#placesList .item .marker_14 {
185 + background-position: 0 -608px;
186 +}
187 +#placesList .item .marker_15 {
188 + background-position: 0 -654px;
189 +}
190 +#pagination {
191 + margin: 10px auto;
192 + text-align: center;
193 +}
194 +#pagination a {
195 + display: inline-block;
196 + margin-right: 10px;
197 +}
198 +#pagination .on {
199 + font-weight: bold;
200 + cursor: default;
201 + color: #777;
202 +}
203 +
204 +.wraps {
205 + position: absolute;
206 + left: 0;
207 + bottom: 40px;
208 + width: 288px;
209 + height: 132px;
210 + margin-left: -144px;
211 + text-align: left;
212 + overflow: hidden;
213 + font-size: 12px;
214 + font-family: "Malgun Gothic", dotum, "돋움", sans-serif;
215 + line-height: 1.5;
216 +}
217 +.wraps * {
218 + padding: 0;
219 + margin: 0;
220 +}
221 +.wraps .infos {
222 + width: 286px;
223 + height: 120px;
224 + border-radius: 5px;
225 + border-bottom: 2px solid #ccc;
226 + border-right: 1px solid #ccc;
227 + overflow: hidden;
228 + background: #fff;
229 +}
230 +.wraps .infos:nth-child(1) {
231 + border: 0;
232 + box-shadow: 0px 1px 2px #888;
233 +}
234 +.infos .title {
235 + padding: 5px 0 0 10px;
236 + height: 30px;
237 + background: #eee;
238 + border-bottom: 1px solid #ddd;
239 + font-size: 18px;
240 + font-weight: bold;
241 +}
242 +.infos .close {
243 + position: absolute;
244 + top: 10px;
245 + right: 10px;
246 + color: #888;
247 + width: 17px;
248 + height: 17px;
249 + background: url("http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/overlay_close.png");
250 +}
251 +.infos .close:hover {
252 + cursor: pointer;
253 +}
254 +.infos .body {
255 + position: relative;
256 + overflow: hidden;
257 +}
258 +.infos .desc {
259 + position: relative;
260 + margin: 13px 0 0 90px;
261 + height: 75px;
262 +}
263 +.desc .ellipsis {
264 + overflow: hidden;
265 + text-overflow: ellipsis;
266 + white-space: nowrap;
267 +}
268 +.desc .jibun {
269 + font-size: 11px;
270 + color: #888;
271 + margin-top: -2px;
272 +}
273 +.infos .img {
274 + position: absolute;
275 + top: 6px;
276 + left: 5px;
277 + width: 73px;
278 + height: 71px;
279 + border: 1px solid #ddd;
280 + color: #888;
281 + overflow: hidden;
282 +}
283 +.infos:after {
284 + content: "";
285 + position: absolute;
286 + margin-left: -12px;
287 + left: 50%;
288 + bottom: 0;
289 + width: 22px;
290 + height: 12px;
291 + background: url("http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/vertex_white.png");
292 +}
293 +.infos .link {
294 + color: #5085bb;
295 +}
296 +
297 +#footer {
298 + position: absolute;
299 + bottom: 0;
300 + width: 100%;
301 + height: 100px;
302 + background: #ccc;
303 +}
304 +
305 +.left-box {
306 + float: left;
307 + width: 20%;
308 +}
309 +.left-box h5 {
310 + font-size: 1rem;
311 + font-style: italic;
312 + padding-left: 10px;
313 +}
314 +.right-box {
315 + float: right;
316 + width: 80%;
317 +}
318 +.right-box h5 {
319 + font-size: 1rem;
320 + font-style: italic;
321 + padding-left: 10px;
322 +}
323 +#middle {
324 + text-align: center;
325 +}
326 +.info-button {
327 + border-radius: 4px;
328 + background-color: #4641d9;
329 + width: 100px;
330 + color: white;
331 +}
1 import React, { Component } from "react"; 1 import React, { Component } from "react";
2 import logo from "./logo.svg"; 2 import logo from "./logo.svg";
3 import "./App.css"; 3 import "./App.css";
4 +import Button from "react-bootstrap/Button";
5 +import "./home.css";
6 +
4 export default class Home extends Component { 7 export default class Home extends Component {
5 constructor(props) { 8 constructor(props) {
6 super(props); 9 super(props);
7 - this.state = {}; 10 + this.state = {
11 + map: null,
12 + markers: [],
13 +
14 + curAirCondition: null,
15 + routeInformation: null,
16 + };
8 } 17 }
9 18
10 render() { 19 render() {
20 + let currentAirCondition = null;
21 + let routeAirCondition = null;
22 +
11 return ( 23 return (
12 - <div className="App"> 24 + <section id="home">
13 - <header className="App-header"> 25 + <div className="cover">
14 - <img src={logo} className="App-logo" alt="logo" /> 26 + <div className="Home-header">How's the Weather?!</div>
15 - <p> 27 + </div>
16 - Edit <code>src/App.js</code> and save to reload. 28 + <div className="map_wrap">
17 - </p> 29 + <div
18 - <a 30 + id="map"
19 - className="App-link" 31 + style={{ width: "1000px", height: "600px", align: "middle" }}
20 - href="https://reactjs.org" 32 + ></div>
21 - target="_blank" 33 + <div id="menu_wrap" className="bg_white">
22 - rel="noopener noreferrer" 34 + <div className="option">
23 - > 35 + 지역 검색 :{" "}
24 - Learn React 36 + <input
25 - </a> 37 + type="text"
26 - </header> 38 + value={this.state.region}
39 + id="keyword"
40 + size="15"
41 + onChange={(e) => this.setState({ region: e.target.value })}
42 + />
43 + <Button variant="light" type="submit" onClick={this.searchPlaces}>
44 + 검색하기
45 + </Button>
46 + </div>
47 + <ul id="placesList"></ul>
48 + <div id="pagination"></div>
49 + </div>
50 + <ul id="placesList"></ul>
51 + <div id="pagination"></div>
52 + </div>
53 + <div id="footer">
54 + <div className="left-box">
55 + <h5> 현재위치 : {this.state.region} </h5>
56 + <br />
57 + <div id="middle">{currentAirCondition}</div>
58 + </div>
59 + <div className="right-box">
60 + <h5>
61 + 출발지 : {this.state.departureTitle} <br />
62 + 도착지 : {this.state.arrivalTitle} <br />
63 + <Button variant="secondary" onClick={this.getRouteAirCondition}>
64 + {" "}
65 + 경로별 미세먼지 정보 알아보기{" "}
66 + </Button>{" "}
67 + <br /> <br />
68 + </h5>
69 + <div id="middle">{routeAirCondition}</div>
70 + </div>
27 </div> 71 </div>
72 + </section>
28 ); 73 );
29 } 74 }
30 } 75 }
......