index.html 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153
  1. <!DOCTYPE html>
  2. <html lang="ko">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <link rel="stylesheet" href="assets/css/style.css">
  7. <link rel="stylesheet" href="assets/css/media.css">
  8. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"/>
  9. <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
  10. <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
  11. <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
  12. <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>
  13. <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
  14. <title>MJ Logistics</title>
  15. </head>
  16. <body>
  17. <header>
  18. <div class="header--wrap">
  19. <div class="header--inner">
  20. <div class="header--logo">
  21. </div>
  22. <div class="header--nav">
  23. <ul>
  24. <li><a href="about.html">ABOUT US</a>
  25. <div class="sub--nav--wrap">
  26. <div class="sub--nav">
  27. <a href="about.html">인사말 & 본사정보</a>
  28. <a href="about.html">연혁</a>
  29. <a href="about.html">조직도</a>
  30. </div>
  31. </div>
  32. </li>
  33. <li><a href="air.html">business</a>
  34. <div class="sub--nav--wrap">
  35. <div class="sub--nav">
  36. <a href="air.html">항공 운송 서비스</a>
  37. <a href="#">해상 운송 서비스</a>
  38. <a href="#">철도 운송 서비스</a>
  39. <a href="#">물류 창고 서비스</a>
  40. <a href="#">통관 서비스</a>
  41. <a href="#">육상 운송 서비스</a>
  42. </div>
  43. </div>
  44. </li>
  45. <li><a href="#">network</a>
  46. <div class="sub--nav--wrap">
  47. <div class="sub--nav">
  48. <a href="#">MJ holdings limited</a>
  49. <a href="#">MJ logistics (HK) limited</a>
  50. <a href="#">darong warehouse & <br>transportation limited</a>
  51. <a href="#">shenzhen MJ logistics Co., <br>limited</a>
  52. <a href="#">MJ logistics (foshan) office</a>
  53. <a href="#">MJ logistics (shanghai) <br>limited xiamen branch</a>
  54. <a href="#">
  55. MJ logistics (shanghai) <br>limited chongqing branch
  56. </a>
  57. <a href="#">
  58. MJ logistics (shanghai) <br>limited guangzhou branch
  59. </a>
  60. <a href="#">MJ logistics (shanghai) limited</a>
  61. <a href="#">MJ logistics tianjin limited</a>
  62. </div>
  63. <div class="sub--nav">
  64. <a href="#">
  65. MJ logistics qingdao limited
  66. </a>
  67. <a href="#">
  68. MJ logistics (japan) limited
  69. </a>
  70. <a href="#">
  71. MJ logistics (thailand) co.,LTD.
  72. </a>
  73. <a href="#">
  74. MJ logistics (vientnam) co.,LTD.
  75. </a>
  76. <a href="#">
  77. MJ logistics (hanoi) co.,LTD.
  78. </a>
  79. <a href="#">
  80. MJ logistics (manila) inc
  81. </a>
  82. <a href="#">
  83. MJ logistics (HK) limited <br>taiwan branch
  84. </a>
  85. <a href="#">
  86. MJ logistics (SG) PTE. ltd
  87. </a>
  88. <a href="#">
  89. PT. MJL logistic jakarta
  90. </a>
  91. <a href="#">
  92. MJ logistics (ningbo) limited
  93. </a>
  94. </div>
  95. <div class="sub--nav">
  96. <a href="#">
  97. MJ logistics (tianjin) limited <br>dalian branch
  98. </a>
  99. <a href="#">
  100. MJ logistics malaysia SDN. <br>BHD.
  101. </a>
  102. <a href="#">
  103. MJ logistics india PVT ltd
  104. </a>
  105. </div>
  106. </div>
  107. </li>
  108. <li><a href="#">contact us</a>
  109. <div class="sub--nav--wrap">
  110. <div class="sub--nav">
  111. <a href="#">문의</a>
  112. <a href="#">연락처<br>(지점별 담당자 연락처)</a>
  113. </div>
  114. </div></li>
  115. </ul>
  116. </div>
  117. <div class="header--lang--btn">
  118. <i class="ico--global"></i>
  119. <span>KO</span>
  120. <i class="ico--arrow"></i>
  121. <ul class="lang--select--wrap">
  122. <li><a href="?lang=ko">KO</a></li>
  123. <li><a href="?lang=en">EN</a></li>
  124. <li><a href="?lang=jp">JP</a></li>
  125. <li><a href="?lang=cn">CN</a></li>
  126. </ul>
  127. </div>
  128. <div class="header--mob--lang--btn"></div>
  129. <div class="header--mob--lang--wrap">
  130. <ul>
  131. <li><a href="?lang=ko">KO</a></li>
  132. <li><a href="?lang=en">EN</a></li>
  133. <li><a href="?lang=jp">JP</a></li>
  134. <li><a href="?lang=cn">CN</a></li>
  135. </ul>
  136. </div>
  137. <div class="header--mob--btn"></div>
  138. <div class="header--mob--wrap">
  139. <div class="mob--l">
  140. <ul>
  141. <li><a href="about.html">ABOUT US</a></li>
  142. <li><a href="#">business</a></li>
  143. <li>
  144. <a href="#">network</a>
  145. </li>
  146. <li><a href="#">contact us</a></li>
  147. </ul>
  148. </div>
  149. <div class="mob--r">
  150. <div class="sub--nav--wrap">
  151. <div class="sub--nav">
  152. <a href="about.html">인사말 & 본사정보</a>
  153. <a href="about.html">연혁</a>
  154. <a href="about.html">조직도</a>
  155. </div>
  156. <div class="sub--nav">
  157. <a href="air.html">항공 운송 서비스</a>
  158. <a href="#">해상 운송 서비스</a>
  159. <a href="#">철도 운송 서비스</a>
  160. <a href="#">물류 창고 서비스</a>
  161. <a href="#">통관 서비스</a>
  162. <a href="#">육상 운송 서비스</a>
  163. </div>
  164. <div class="sub--nav">
  165. <a href="#">MJ holdings limited</a>
  166. <a href="#">MJ logistics (HK) limited</a>
  167. <a href="#">darong warehouse & <br>transportation limited</a>
  168. <a href="#">shenzhen MJ logistics Co., <br>limited</a>
  169. <a href="#">MJ logistics (foshan) office</a>
  170. <a href="#">MJ logistics (shanghai) <br>limited xiamen branch</a>
  171. <a href="#">
  172. MJ logistics (shanghai) <br>limited chongqing branch
  173. </a>
  174. <a href="#">
  175. MJ logistics (shanghai) <br>limited guangzhou branch
  176. </a>
  177. <a href="#">MJ logistics (shanghai) limited</a>
  178. <a href="#">MJ logistics tianjin limited</a>
  179. <a href="#">
  180. MJ logistics qingdao limited
  181. </a>
  182. <a href="#">
  183. MJ logistics (japan) limited
  184. </a>
  185. <a href="#">
  186. MJ logistics (thailand) co.,LTD.
  187. </a>
  188. <a href="#">
  189. MJ logistics (vientnam) co.,LTD.
  190. </a>
  191. <a href="#">
  192. MJ logistics (hanoi) co.,LTD.
  193. </a>
  194. <a href="#">
  195. MJ logistics (manila) inc
  196. </a>
  197. <a href="#">
  198. MJ logistics (HK) limited <br>taiwan branch
  199. </a>
  200. <a href="#">
  201. MJ logistics (SG) PTE. ltd
  202. </a>
  203. <a href="#">
  204. PT. MJL logistic jakarta
  205. </a>
  206. <a href="#">
  207. MJ logistics (ningbo) limited
  208. </a>
  209. <a href="#">
  210. MJ logistics (tianjin) limited <br>dalian branch
  211. </a>
  212. <a href="#">
  213. MJ logistics malaysia SDN. <br>BHD.
  214. </a>
  215. <a href="#">
  216. MJ logistics india PVT ltd
  217. </a>
  218. </div>
  219. <div class="sub--nav">
  220. <a href="#">문의</a>
  221. <a href="#">연락처<br>(지점별 담당자 연락처)</a>
  222. </div>
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. </div>
  228. </header>
  229. <div class="container">
  230. <div class="image--section">
  231. <div class="main--swiper">
  232. <!-- Additional required wrapper -->
  233. <div class="swiper-wrapper">
  234. <!-- Slides -->
  235. <div class="swiper-slide">
  236. <div class="txt--wrap">
  237. <span class="txt--fade">
  238. Worldwide AIR TRANSRATION services
  239. </span>
  240. <h2 class="txt--fade"><strong>mj</strong> logistics</h2>
  241. <div class="btn--wrap txt--fade">
  242. <a href="#">Detail View <i class="ico"></i></a>
  243. </div>
  244. </div>
  245. <img src="assets/img/main--1.png" alt="">
  246. </div>
  247. <div class="swiper-slide">
  248. <div class="txt--wrap">
  249. <span class="txt--fade">
  250. High-quality OCEAN TRANSPORTATION services
  251. </span>
  252. <h2 class="txt--fade"><strong>mj</strong> logistics</h2>
  253. <div class="btn--wrap txt--fade">
  254. <a href="#">Detail View <i class="ico"></i></a>
  255. </div>
  256. </div>
  257. <img src="assets/img/main--2.png" alt="">
  258. </div>
  259. <div class="swiper-slide">
  260. <div class="txt--wrap">
  261. <span class="txt--fade">
  262. Speedy and safe LAND TRANSRATION services
  263. </span>
  264. <h2 class="txt--fade"><strong>mj</strong> logistics</h2>
  265. <div class="btn--wrap txt--fade">
  266. <a href="#">Detail View <i class="ico"></i></a>
  267. </div>
  268. </div>
  269. <img src="assets/img/main--3.png" alt="">
  270. </div>
  271. <div class="swiper-slide">
  272. <div class="txt--wrap">
  273. <span class="txt--fade">
  274. TRAIN TRANSRATION services supporting large transit volumes
  275. </span>
  276. <h2 class="txt--fade"><strong>mj</strong> logistics</h2>
  277. <div class="btn--wrap txt--fade">
  278. <a href="#">Detail View <i class="ico"></i></a>
  279. </div>
  280. </div>
  281. <img src="assets/img/main--4.png" alt="">
  282. </div>
  283. <div class="swiper-slide">
  284. <div class="txt--wrap">
  285. <span class="txt--fade">
  286. We provide various additional services in cooperation with distribution hubs <br>centered around locations of major bases
  287. </span>
  288. <h2 class="txt--fade"><strong>mj</strong> logistics</h2>
  289. <div class="btn--wrap txt--fade">
  290. <a href="#">Detail View <i class="ico"></i></a>
  291. </div>
  292. </div>
  293. <img src="assets/img/main--5.png" alt="">
  294. </div>
  295. <div class="swiper-slide">
  296. <div class="txt--wrap">
  297. <span class="txt--fade">
  298. Import / Export customs clearance declaration
  299. </span>
  300. <h2 class="txt--fade"><strong>mj</strong> logistics</h2>
  301. <div class="btn--wrap txt--fade">
  302. <a href="#">Detail View <i class="ico"></i></a>
  303. </div>
  304. </div>
  305. <img src="assets/img/main--6.png" alt="">
  306. </div>
  307. </div>
  308. <div class="swiper--btn--wrap">
  309. <div class="swiper-button-next"></div>
  310. <div class="swiper-button-prev"></div>
  311. </div>
  312. <div class="swiper--pag--wrap">
  313. <div class="swiper--pag">
  314. <p>air transportation</p>
  315. <div class="pag--numb">
  316. <span class="num--1 active">01</span>
  317. <div class="swiper-pagination"></div>
  318. <span class="num--6">06</span>
  319. </div>
  320. </div>
  321. </div>
  322. <div class="main--swiper--tab">
  323. <div class="tab--wrap">
  324. <dl class="tab--inner">
  325. <dt>
  326. air transportation
  327. </dt>
  328. <dd>Safe and speedy air transportation services</dd>
  329. </dl>
  330. </div>
  331. <div class="tab--wrap">
  332. <dl class="tab--inner">
  333. <dt>
  334. ocean transportation
  335. </dt>
  336. <dd>
  337. FCL SERVICE, LCL SERVICE, BULK & PROJECT CARGO TRANSPORT
  338. </dd>
  339. </dl>
  340. </div>
  341. <div class="tab--wrap">
  342. <dl class="tab--inner">
  343. <dt>
  344. land transportation
  345. </dt>
  346. <dd>
  347. Container, General cargo, Heavy goods transport
  348. </dd>
  349. </dl>
  350. </div>
  351. <div class="tab--wrap">
  352. <dl class="tab--inner">
  353. <dt>
  354. train transportation
  355. </dt>
  356. <dd>
  357. Realization of scheduled transportation and achieving customer satisfaction
  358. </dd>
  359. </dl>
  360. </div>
  361. <div class="tab--wrap">
  362. <dl class="tab--inner">
  363. <dt>
  364. ware <br>housing
  365. </dt>
  366. <dd>
  367. Distribution centers, Import and export bonded warehouse
  368. </dd>
  369. </dl>
  370. </div>
  371. <div class="tab--wrap">
  372. <dl class="tab--inner">
  373. <dt>
  374. customs clearance
  375. </dt>
  376. <dd>
  377. Import customs clearance declaration. Export customs clearance declaration
  378. </dd>
  379. </dl>
  380. </div>
  381. </div>
  382. </div>
  383. </div>
  384. <div class="image--section global--section">
  385. <div class="section--container">
  386. <div class="map--wrap">
  387. <div class="map--img">
  388. <img src="assets/img/main--map.svg" alt="">
  389. <div class="map--dot--box">
  390. <div class="map--dots">
  391. <div class="dot dot1">
  392. <span class="circle">Sea</span>
  393. <p><span>51,883</span></p>
  394. <span class="txt">TEU</span>
  395. </div>
  396. <div class="dot dot2">
  397. <span class="circle">Sale Revenue</span>
  398. <p><span>47</span><span>M</span></p>
  399. <span class="txt">USD</span>
  400. </div>
  401. <div class="dot dot3">
  402. <span class="circle">Air</span>
  403. <p><span>5,095</span></p>
  404. <span class="txt">TON</span>
  405. </div>
  406. <div class="dot dot4">
  407. <span class="circle">Employees</span>
  408. <p><span>162</span><span>&nbsp;+</span></p>
  409. </div>
  410. <div class="dot dot5">
  411. <span class="circle">Warehouse</span>
  412. <p><span>5</span></p>
  413. </div>
  414. </div>
  415. </div>
  416. </div>
  417. </div>
  418. <div class="text--wrap">
  419. <h4 data-aos="fade-left"><span>2024 Year</span> : 20 Networks in 10 Countries</h4>
  420. <h3 data-aos="fade-left" data-aos-delay="200">GLOBAL NETWORK</h3>
  421. <p data-aos="fade-left" data-aos-delay="400">고객 가치를 최우선으로 생각하는 글로벌 물류 기업으로 성장하겠습니다.</p>
  422. <div class="btn--wrap" data-aos="fade-left" data-aos-delay="600">
  423. <a href="#">Contact Us <i class="ico"></i></a>
  424. </div>
  425. </div>
  426. </div>
  427. </div>
  428. <div class="image--section contact--section">
  429. <div class="section--container">
  430. <div class="contact--wrap">
  431. <div class="location--group">
  432. <div class="location--item">
  433. <input checked type="radio" name="location" id="location1" value="location1">
  434. <label for="location1">
  435. <div class="image--area"></div>
  436. <div class="text--area">hongkong</div>
  437. </label>
  438. </div>
  439. <div class="location--item">
  440. <input type="radio" name="location" id="location2" value="location2">
  441. <label for="location2">
  442. <div class="image--area"></div>
  443. <div class="text--area">taiwan</div>
  444. </label>
  445. </div>
  446. <div class="location--item">
  447. <input type="radio" name="location" id="location3" value="location3">
  448. <label for="location3">
  449. <div class="image--area"></div>
  450. <div class="text--area">shenzhen</div>
  451. </label>
  452. </div>
  453. <div class="location--item">
  454. <input type="radio" name="location" id="location4" value="location4">
  455. <label for="location4">
  456. <div class="image--area"></div>
  457. <div class="text--area">shanghai</div>
  458. </label>
  459. </div>
  460. <div class="location--item">
  461. <input type="radio" name="location" id="location20" value="location20">
  462. <label for="location20">
  463. <div class="image--area"></div>
  464. <div class="text--area">india</div>
  465. </label>
  466. </div>
  467. <div class="location--item">
  468. <input type="radio" name="location" id="location5" value="location5">
  469. <label for="location5">
  470. <div class="image--area"></div>
  471. <div class="text--area">guangzhou</div>
  472. </label>
  473. </div>
  474. <div class="location--item">
  475. <input type="radio" name="location" id="location6" value="location6">
  476. <label for="location6">
  477. <div class="image--area"></div>
  478. <div class="text--area">tianjin</div>
  479. </label>
  480. </div>
  481. <div class="location--item">
  482. <input type="radio" name="location" id="location7" value="location7">
  483. <label for="location7">
  484. <div class="image--area"></div>
  485. <div class="text--area">foshan</div>
  486. </label>
  487. </div>
  488. <div class="location--item">
  489. <input type="radio" name="location" id="location8" value="location8">
  490. <label for="location8">
  491. <div class="image--area"></div>
  492. <div class="text--area">qingdao</div>
  493. </label>
  494. </div>
  495. <div class="location--item">
  496. <input type="radio" name="location" id="location21" value="location21">
  497. <label for="location21">
  498. <div class="image--area"></div>
  499. <div class="text--area">MALAYSIA</div>
  500. </label>
  501. </div>
  502. <div class="location--item">
  503. <input type="radio" name="location" id="location9" value="location9">
  504. <label for="location9">
  505. <div class="image--area"></div>
  506. <div class="text--area">xiamen</div>
  507. </label>
  508. </div>
  509. <div class="location--item">
  510. <input type="radio" name="location" id="location10" value="location10">
  511. <label for="location10">
  512. <div class="image--area"></div>
  513. <div class="text--area">chongqing</div>
  514. </label>
  515. </div>
  516. <div class="location--item">
  517. <input type="radio" name="location" id="location11" value="location11">
  518. <label for="location11">
  519. <div class="image--area"></div>
  520. <div class="text--area">hanoi</div>
  521. </label>
  522. </div>
  523. <div class="location--item">
  524. <input type="radio" name="location" id="location12" value="location12">
  525. <label for="location12">
  526. <div class="image--area"></div>
  527. <div class="text--area">vietnam</div>
  528. </label>
  529. </div>
  530. <div class="location--item">
  531. <input type="radio" name="location" id="location22" value="location22">
  532. <label for="location22">
  533. <div class="image--area"></div>
  534. <div class="text--area">WAREHOUSE</div>
  535. </label>
  536. </div>
  537. <div class="location--item">
  538. <input type="radio" name="location" id="location13" value="location13">
  539. <label for="location13">
  540. <div class="image--area"></div>
  541. <div class="text--area">japan</div>
  542. </label>
  543. </div>
  544. <div class="location--item">
  545. <input type="radio" name="location" id="location14" value="location14">
  546. <label for="location14">
  547. <div class="image--area"></div>
  548. <div class="text--area">thailand</div>
  549. </label>
  550. </div>
  551. <div class="location--item">
  552. <input type="radio" name="location" id="location15" value="location15">
  553. <label for="location15">
  554. <div class="image--area"></div>
  555. <div class="text--area">manila</div>
  556. </label>
  557. </div>
  558. <div class="location--item">
  559. <input type="radio" name="location" id="location16" value="location16">
  560. <label for="location16">
  561. <div class="image--area"></div>
  562. <div class="text--area">jakarta</div>
  563. </label>
  564. </div>
  565. <div class="location--item">
  566. <input type="radio" name="location" id="location23" value="location23">
  567. <label for="location23">
  568. <div class="image--area"></div>
  569. <div class="text--area">mj holdings</div>
  570. </label>
  571. </div>
  572. <div class="location--item">
  573. <input type="radio" name="location" id="location17" value="location17">
  574. <label for="location17">
  575. <div class="image--area"></div>
  576. <div class="text--area">singapore</div>
  577. </label>
  578. </div>
  579. <div class="location--item">
  580. <input type="radio" name="location" id="location18" value="location18">
  581. <label for="location18">
  582. <div class="image--area"></div>
  583. <div class="text--area">ningbo</div>
  584. </label>
  585. </div>
  586. <div class="location--item">
  587. <input type="radio" name="location" id="location19" value="location19">
  588. <label for="location19">
  589. <div class="image--area"></div>
  590. <div class="text--area">dalian</div>
  591. </label>
  592. </div>
  593. </div>
  594. <div class="contact--tit--mo">
  595. <h3>Inquiry Board</h3>
  596. <p>문의 게시판에 지점별 선택 문의 내용을 작성해주세요.</p>
  597. </div>
  598. <div class="contact--form">
  599. <div class="contact--tit">
  600. <div>
  601. <h3>Inquiry Board</h3>
  602. <p>문의 게시판에 지점별 선택 문의 내용을 작성해주세요.</p>
  603. </div>
  604. <button type="" class="contact--btn"></button>
  605. </div>
  606. <div class="contact--cont">
  607. <div class="input--wrap">
  608. <p>Contact Branch</p>
  609. <select name="contact-branch" id="contact-branch">
  610. <option value="">지점을 선택하세요</option>
  611. <option value="location1">HONGKONG</option>
  612. <option value="location2">TAIWAN</option>
  613. <option value="location3">SHENZHEN</option>
  614. <option value="location4">SHANGHAI</option>
  615. <option value="location20">INDIA</option>
  616. <option value="location5">GUANGZHOU</option>
  617. <option value="location6">TIANJIN</option>
  618. <option value="location7">FOSHAN</option>
  619. <option value="location8">QINGDAO</option>
  620. <option value="location21">MALAYSIA</option>
  621. <option value="location9">XIAMEN</option>
  622. <option value="location10">CHONGQING</option>
  623. <option value="location11">HANOI</option>
  624. <option value="location12">VIETNAM</option>
  625. <option value="location22">WAREHOUSE</option>
  626. <option value="location13">JAPAN</option>
  627. <option value="location14">THAILAND</option>
  628. <option value="location15">MANILA</option>
  629. <option value="location16">JAKARTA</option>
  630. <option value="location23">MJ HOLDINGS</option>
  631. <option value="location17">SINGAPORE</option>
  632. <option value="location18">NINGBO</option>
  633. <option value="location19">DALIAN</option>
  634. </select>
  635. </div>
  636. <div class="input--type2--wrap">
  637. <div class="input--wrap">
  638. <p>Company Name</p>
  639. <input type="text">
  640. </div>
  641. <div class="input--wrap">
  642. <p>Your Name</p>
  643. <input type="text">
  644. </div>
  645. </div>
  646. <div class="input--wrap">
  647. <p>Subject</p>
  648. <input type="text">
  649. </div>
  650. <div class="input--wrap">
  651. <p>Message</p>
  652. <textarea name="" id="" rows="5"></textarea>
  653. </div>
  654. </div>
  655. </div>
  656. <div class="contact--btn--mo">
  657. <button type="button"><i class="ico"></i>Submit An Inquiry</button>
  658. </div>
  659. </div>
  660. </div>
  661. <footer>
  662. <div class="footer--wrap">
  663. copyrightⓒ 2025 MJ logistics limited all right reserved.
  664. </div>
  665. </footer>
  666. </div>
  667. </div>
  668. </body>
  669. <script>
  670. AOS.init({
  671. once: false,
  672. duration: 800,
  673. });
  674. gsap.registerPlugin(ScrollTrigger);
  675. gsap.set('.txt--fade', {
  676. opacity: 0,
  677. y: 30
  678. });
  679. // Map dots counter animation
  680. function animateCounter(element, endValue) {
  681. const obj = { value: 0 };
  682. gsap.to(obj, {
  683. value: endValue,
  684. duration: 2,
  685. ease: "power2.out",
  686. onUpdate: function() {
  687. // 숫자에 콤마 추가
  688. const formattedValue = Math.round(obj.value).toLocaleString();
  689. element.textContent = formattedValue;
  690. }
  691. });
  692. }
  693. // Global section에 진입했을 때 카운터 애니메이션 실행
  694. ScrollTrigger.create({
  695. trigger: ".global--section",
  696. start: "top 80%",
  697. onEnter: function() {
  698. // 각 dot의 첫 번째 span 요소들과 목표값
  699. const counters = [
  700. { element: document.querySelector('.dot1 p span'), target: 51883 },
  701. { element: document.querySelector('.dot2 p span:first-child'), target: 47 },
  702. { element: document.querySelector('.dot3 p span'), target: 5095 },
  703. { element: document.querySelector('.dot4 p span:first-child'), target: 162 },
  704. { element: document.querySelector('.dot5 p span'), target: 5 }
  705. ];
  706. // 각 카운터 애니메이션 실행 (순차적으로)
  707. counters.forEach((counter, index) => {
  708. if (counter.element) {
  709. setTimeout(() => {
  710. animateCounter(counter.element, counter.target);
  711. }, index * 200);
  712. }
  713. });
  714. }
  715. });
  716. // Get all tab elements
  717. const tabWraps = document.querySelectorAll('.main--swiper--tab .tab--wrap');
  718. const num1 = document.querySelector('.num--1');
  719. const num6 = document.querySelector('.num--6');
  720. const swiperPagText = document.querySelector('.swiper--pag p');
  721. // 슬라이드별 텍스트 배열
  722. const slideTexts = [
  723. 'air transportation',
  724. 'ocean transportation',
  725. 'land transportation',
  726. 'train transportation',
  727. 'warehousing',
  728. 'customs clearance'
  729. ];
  730. // Function to update active tab
  731. function updateActiveTab(activeIndex) {
  732. tabWraps.forEach((tab, index) => {
  733. if (index === activeIndex) {
  734. tab.classList.add('active');
  735. } else {
  736. tab.classList.remove('active');
  737. }
  738. });
  739. }
  740. // Function to update pagination numbers
  741. function updatePaginationNumbers(activeIndex) {
  742. if (num1 && num6) {
  743. // 현재 슬라이드 번호를 num--1에 표시 (01, 02, 03, ...)
  744. const currentSlideNumber = (activeIndex + 1).toString().padStart(2, '0');
  745. num1.textContent = currentSlideNumber;
  746. // 첫 번째 슬라이드일 때 num--1에 active 클래스 추가
  747. // if (activeIndex === 0) {
  748. // num1.classList.add('active');
  749. // } else {
  750. // num1.classList.remove('active');
  751. // }
  752. // 마지막 슬라이드일 때 num--6에 active 클래스 추가
  753. if (activeIndex === 5) { // 6개 슬라이드이므로 인덱스는 5
  754. num6.classList.add('active');
  755. } else {
  756. num6.classList.remove('active');
  757. }
  758. }
  759. }
  760. // Function to update pagination text
  761. function updatePaginationText(activeIndex) {
  762. if (swiperPagText && slideTexts[activeIndex]) {
  763. swiperPagText.textContent = slideTexts[activeIndex];
  764. }
  765. }
  766. // 애니메이션 실행 중복 방지 변수
  767. let isAnimating = false;
  768. // GSAP 애니메이션 함수
  769. function animateSlide(slideIndex) {
  770. // 이미 애니메이션이 실행 중이면 리턴
  771. if (isAnimating) return;
  772. isAnimating = true;
  773. // 실제 DOM에서 활성화된 슬라이드 찾기
  774. const activeSlide = document.querySelector('.swiper-slide-active');
  775. if (activeSlide) {
  776. const elements = activeSlide.querySelectorAll('.txt--fade');
  777. // 모든 슬라이드의 요소들 초기화
  778. gsap.set('.txt--fade', {
  779. opacity: 0,
  780. y: 50
  781. });
  782. // 현재 활성 슬라이드 요소들만 애니메이션
  783. gsap.to(elements, {
  784. opacity: 1,
  785. y: 0,
  786. duration: 0.8,
  787. stagger: 0.2,
  788. ease: "power2.out",
  789. delay: 0.1,
  790. onComplete: function() {
  791. // 애니메이션 완료 후 플래그 리셋
  792. isAnimating = false;
  793. }
  794. });
  795. } else {
  796. isAnimating = false;
  797. }
  798. }
  799. const swiper = new Swiper('.main--swiper', {
  800. // Optional parameters
  801. loop: true,
  802. effect: "fade",
  803. autoplay: {
  804. delay: 2000,
  805. },
  806. pagination: {
  807. el: ".main--swiper .swiper-pagination",
  808. type: "progressbar",
  809. },
  810. navigation: {
  811. nextEl: ".main--swiper .swiper-button-next",
  812. prevEl: ".main--swiper .swiper-button-prev",
  813. },
  814. speed: 1200,
  815. // If we need pagination
  816. on: {
  817. slideChange: function () {
  818. updateActiveTab(this.realIndex);
  819. updatePaginationNumbers(this.realIndex);
  820. updatePaginationText(this.realIndex);
  821. },
  822. slideChangeTransitionEnd: function() {
  823. // 애니메이션 중복 실행 방지를 위해 delay 사용
  824. setTimeout(() => {
  825. animateSlide(this.realIndex);
  826. }, 100);
  827. },
  828. slideChangeTransitionStart: function() {
  829. // 전환 시작 시 모든 요소 초기화
  830. gsap.set('.txt--fade', {
  831. opacity: 0,
  832. y: 50
  833. });
  834. }
  835. }
  836. });
  837. // 초기 슬라이드 애니메이션
  838. animateSlide(0);
  839. tabWraps.forEach((tab, index) => {
  840. tab.addEventListener('click', () => {
  841. swiper.slideToLoop(index);
  842. updateActiveTab(index);
  843. });
  844. });
  845. updateActiveTab(0);
  846. updatePaginationNumbers(0);
  847. updatePaginationText(0);
  848. // Detail View 버튼에 hover 시 autoplay 제어
  849. const detailButtons = document.querySelectorAll('.main--swiper .btn--wrap a');
  850. detailButtons.forEach(button => {
  851. button.addEventListener('mouseenter', function() {
  852. // hover 시 autoplay 정지
  853. swiper.autoplay.stop();
  854. });
  855. button.addEventListener('mouseleave', function() {
  856. // hover 해제 시 autoplay 재시작
  857. swiper.autoplay.start();
  858. });
  859. });
  860. window.addEventListener('scroll', function() {
  861. const scrollPosition = window.pageYOffset;
  862. const windowHeight = window.innerHeight;
  863. // 현재 보이는 이미지 섹션 계산
  864. const currentSection = Math.floor(scrollPosition / windowHeight) + 1;
  865. });
  866. // 부드러운 스크롤 스냅 효과
  867. let isScrolling = false;
  868. let scrollTimeout;
  869. window.addEventListener('wheel', function(e) {
  870. if (window.innerWidth < 1200) return;
  871. e.preventDefault();
  872. if (isScrolling) return;
  873. const currentScroll = window.pageYOffset;
  874. const windowHeight = window.innerHeight;
  875. const currentSection = Math.round(currentScroll / windowHeight);
  876. let targetSection;
  877. if (e.deltaY > 0) {
  878. // 아래로 스크롤
  879. targetSection = Math.min(currentSection + 1, 2); // 최대 2 (3번째 섹션)
  880. } else {
  881. // 위로 스크롤
  882. targetSection = Math.max(currentSection - 1, 0); // 최소 0 (1번째 섹션)
  883. }
  884. const targetScroll = targetSection * windowHeight;
  885. // 이미 목표 위치에 있으면 스크롤하지 않음
  886. if (Math.abs(currentScroll - targetScroll) < 10) return;
  887. isScrolling = true;
  888. // 부드러운 스크롤 애니메이션
  889. smoothScrollTo(targetScroll, () => {
  890. isScrolling = false;
  891. });
  892. }, { passive: false });
  893. function smoothScrollTo(targetY, callback) {
  894. const startY = window.pageYOffset;
  895. const distance = targetY - startY;
  896. const duration = 1000; // 600ms로 단축
  897. let startTime = null;
  898. function animation(currentTime) {
  899. if (startTime === null) startTime = currentTime;
  900. const timeElapsed = currentTime - startTime;
  901. const progress = Math.min(timeElapsed / duration, 1);
  902. // easeOutQuart 함수 (더 빠른 시작, 부드러운 끝)
  903. const easedProgress = 1 - Math.pow(1 - progress, 4);
  904. window.scrollTo(0, startY + distance * easedProgress);
  905. if (timeElapsed < duration) {
  906. requestAnimationFrame(animation);
  907. } else {
  908. // 애니메이션 완료 후 콜백 실행
  909. if (callback) callback();
  910. }
  911. }
  912. requestAnimationFrame(animation);
  913. }
  914. // contact
  915. const locationRadios = document.querySelectorAll('input[name="location"]');
  916. const contactSelect = document.getElementById('contact-branch');
  917. // 라디오 버튼 변경 시 select 업데이트
  918. locationRadios.forEach(radio => {
  919. radio.addEventListener('change', function() {
  920. if (this.checked) {
  921. contactSelect.value = this.value;
  922. }
  923. });
  924. });
  925. // select 변경 시 라디오 버튼 업데이트
  926. contactSelect.addEventListener('change', function() {
  927. const selectedValue = this.value;
  928. if (selectedValue) {
  929. const targetRadio = document.getElementById(selectedValue);
  930. if (targetRadio) {
  931. targetRadio.checked = true;
  932. }
  933. }
  934. });
  935. // 페이지 로드 시 초기 설정
  936. const checkedRadio = document.querySelector('input[name="location"]:checked');
  937. if (checkedRadio) {
  938. contactSelect.value = checkedRadio.value;
  939. }
  940. // 햄버거 메뉴 기능, 언어 선택 기능
  941. const headerMobBtn = document.querySelector('.header--mob--btn');
  942. const headerMobWrap = document.querySelector('.header--mob--wrap');
  943. const mobLLinks = document.querySelectorAll('.mob--l a');
  944. const subNavs = document.querySelectorAll('.mob--r .sub--nav');
  945. const headerLangBtn = document.querySelector('.header--mob--lang--btn');
  946. const headerLangWrap = document.querySelector('.header--mob--lang--wrap');
  947. // 햄버거 메뉴 토글
  948. if (headerMobBtn && headerMobWrap) {
  949. headerMobBtn.addEventListener('click', function() {
  950. headerMobBtn.classList.toggle('active');
  951. headerMobWrap.classList.toggle('active');
  952. headerLangBtn.classList.toggle('hide');
  953. });
  954. }
  955. if (headerLangBtn && headerLangWrap){
  956. headerLangBtn.addEventListener('click', function() {
  957. headerLangBtn.classList.toggle('active');
  958. headerLangWrap.classList.toggle('active');
  959. headerMobBtn.classList.toggle('hide');
  960. })
  961. }
  962. // 대메뉴 클릭 시 소메뉴 표시
  963. mobLLinks.forEach((link, index) => {
  964. link.addEventListener('click', function(e) {
  965. e.preventDefault();
  966. // 모든 대메뉴에서 active 클래스 제거
  967. mobLLinks.forEach(l => l.classList.remove('active'));
  968. // 클릭된 대메뉴에 active 클래스 추가
  969. this.classList.add('active');
  970. // 모든 소메뉴 숨기기
  971. subNavs.forEach(nav => nav.classList.remove('active'));
  972. // 해당 소메뉴 표시
  973. if (subNavs[index]) {
  974. subNavs[index].classList.add('active');
  975. }
  976. });
  977. });
  978. // 첫 번째 메뉴를 기본으로 활성화
  979. if (mobLLinks.length > 0 && subNavs.length > 0) {
  980. mobLLinks[0].classList.add('active');
  981. subNavs[0].classList.add('active');
  982. }
  983. // 언어 선택 기능
  984. const langBtn = document.querySelector('.header--lang--btn');
  985. const langSelectWrap = document.querySelector('.lang--select--wrap');
  986. const langSpan = document.querySelector('.header--lang--btn span');
  987. const langOptions = document.querySelectorAll('.lang--select--wrap li');
  988. const mobLangOptions = document.querySelectorAll('.header--mob--lang--wrap li');
  989. // URL 파라미터에서 현재 언어 가져오기
  990. function getCurrentLanguage() {
  991. const urlParams = new URLSearchParams(window.location.search);
  992. const lang = urlParams.get('lang') || urlParams.get('lange');
  993. return lang || 'ko'; // 기본값은 한국어
  994. }
  995. // 페이지 로드 시 URL 파라미터에 따라 active 언어 설정
  996. function setActiveLanguageFromURL() {
  997. const currentLang = getCurrentLanguage();
  998. const langMap = {
  999. 'ko': 'KO',
  1000. 'en': 'EN',
  1001. 'jp': 'JP',
  1002. 'cn': 'CN'
  1003. };
  1004. const displayLang = langMap[currentLang] || 'KO';
  1005. // 데스크톱과 모바일 언어 옵션에서 기존 active 클래스 제거
  1006. langOptions.forEach(option => option.classList.remove('active'));
  1007. mobLangOptions.forEach(option => option.classList.remove('active'));
  1008. // 현재 언어와 일치하는 옵션에 active 클래스 추가
  1009. langOptions.forEach(option => {
  1010. if (option.querySelector('a').textContent === displayLang) {
  1011. option.classList.add('active');
  1012. }
  1013. });
  1014. mobLangOptions.forEach(option => {
  1015. if (option.querySelector('a').textContent === displayLang) {
  1016. option.classList.add('active');
  1017. }
  1018. });
  1019. // 언어 버튼의 텍스트도 업데이트
  1020. if (langSpan) {
  1021. langSpan.textContent = displayLang;
  1022. }
  1023. }
  1024. // 언어 업데이트 함수
  1025. function updateLanguage(selectedLang) {
  1026. // 스팬 텍스트 업데이트
  1027. langSpan.textContent = selectedLang;
  1028. // 데스크톱 언어 옵션에서 active 클래스 관리
  1029. langOptions.forEach(option => {
  1030. if (option.textContent === selectedLang) {
  1031. option.classList.add('active');
  1032. } else {
  1033. option.classList.remove('active');
  1034. }
  1035. });
  1036. // 모바일 언어 옵션에서 active 클래스 관리
  1037. mobLangOptions.forEach(option => {
  1038. if (option.textContent === selectedLang) {
  1039. option.classList.add('active');
  1040. } else {
  1041. option.classList.remove('active');
  1042. }
  1043. });
  1044. // 드롭다운 닫기
  1045. langSelectWrap.classList.remove('active');
  1046. }
  1047. if (langBtn && langSelectWrap) {
  1048. // 언어 버튼 클릭 시 드롭다운 토글
  1049. langBtn.addEventListener('click', function(e) {
  1050. e.stopPropagation();
  1051. langSelectWrap.classList.toggle('active');
  1052. });
  1053. // 데스크톱 언어 옵션 클릭 시
  1054. langOptions.forEach(option => {
  1055. option.addEventListener('click', function(e) {
  1056. e.stopPropagation();
  1057. const selectedLang = this.textContent;
  1058. updateLanguage(selectedLang);
  1059. });
  1060. });
  1061. // 모바일 언어 옵션 클릭 시
  1062. mobLangOptions.forEach(option => {
  1063. option.addEventListener('click', function(e) {
  1064. e.stopPropagation();
  1065. const selectedLang = this.textContent;
  1066. updateLanguage(selectedLang);
  1067. });
  1068. });
  1069. // 다른 곳 클릭 시 드롭다운 닫기
  1070. document.addEventListener('click', function() {
  1071. langSelectWrap.classList.remove('active');
  1072. });
  1073. }
  1074. // 페이지 로드 시 URL 파라미터에 따라 언어 활성화 설정
  1075. setActiveLanguageFromURL();
  1076. </script>
  1077. </html>