App.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. import "./App.css";
  2. import logo from "./img/WD.svg";
  3. const HeaderItem = ({ children = "ГЛАВНАЯ", url = "#" }) => (
  4. <li class="header-item">
  5. <a href={url}>{children}</a>
  6. </li>
  7. );
  8. const SkillThis = ({ title = "Adobe Photoshop" }) => (
  9. <div class="skill-this">
  10. <span class="skill-label">{title}</span>
  11. <div class="skill-loader">
  12. <div class="skill-load" style={{ width: "75%" }}></div>
  13. </div>
  14. </div>
  15. );
  16. const SkillsBox = () => (
  17. <div class="skill-box">
  18. <SkillThis />
  19. <SkillThis />
  20. <SkillThis />
  21. </div>
  22. );
  23. const SectionSkills = () => (
  24. <section class="section-skill">
  25. <div class="container">
  26. <div class="skill-row">
  27. <div class="skill-col skill-descr">
  28. <header class="section-header">
  29. <h2 class="title">Мои навыки</h2>
  30. </header>
  31. <SkillsBox />
  32. </div>
  33. <div class="skill-col skill-img"></div>
  34. </div>
  35. </div>
  36. </section>
  37. );
  38. const Buttom = ({ children = "НАПИСАТЬ МНЕ", url = "#" }) => (
  39. <a href="{url}" class="btn">
  40. {children}
  41. </a>
  42. );
  43. const Header = () => (
  44. <header class="header">
  45. <div class="container header-container">
  46. <div class="header-block">
  47. <div class="header-flex">
  48. <div class="img-block">
  49. <a href="#">
  50. <img src={logo} class="wd-logo" alt="WD logo" />
  51. </a>
  52. </div>
  53. <div class="nav">
  54. <input
  55. type="checkbox"
  56. id="burger"
  57. class="burger-checkbox"
  58. />
  59. <label for="burger" class="burger">
  60. <span></span>
  61. </label>
  62. <ul class="header-list">
  63. <HeaderItem>ГЛАВНАЯ</HeaderItem>
  64. <HeaderItem>ОБ АВТОРЕ</HeaderItem>
  65. <HeaderItem>РАБОТЫ</HeaderItem>
  66. <HeaderItem>ПРОЦЕСЫ</HeaderItem>
  67. <HeaderItem>КОНТАНТЫ</HeaderItem>
  68. </ul>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. </header>
  74. );
  75. const SectionBanner = ({ title = "Дизайн и верстка" }) => (
  76. <section class="section-banner">
  77. <div class="container">
  78. <div class="banner-wrap">
  79. <div class="col col--img">
  80. <img
  81. src="./img/img-01.png"
  82. class="img-compuhter"
  83. alt="image description"
  84. />
  85. </div>
  86. <div class="col col--description">
  87. <header class="section-header">
  88. <h1 class="title">{title}</h1>
  89. </header>
  90. <div class="holder">
  91. <p>
  92. Lorem Ipsum - это текст-"рыба", часто используемый в
  93. печати и вэб-дизайне. Lorem Ipsum является
  94. стандартной "рыбой" для текстов на латинице с начала
  95. XVI века.
  96. </p>
  97. </div>
  98. <Buttom />
  99. </div>
  100. </div>
  101. </div>
  102. </section>
  103. );
  104. const AboutMe = ({ children = "Обо мне" }) => (
  105. <section class="about-me">
  106. <div class="container">
  107. <div class="about-me-h2">
  108. <h2>{children}</h2>
  109. </div>
  110. <div class="about-me-lorem">
  111. <LoremP />
  112. </div>
  113. </div>
  114. </section>
  115. );
  116. const ProjectImg = () => (
  117. <div class="project-img">
  118. <img src="img/project.svg" alt="Pencil, triangle and piece of paper" />
  119. </div>
  120. );
  121. const ProjectText = () => (
  122. <div class="ptoject-text">
  123. <h3>40+</h3>
  124. <p>проектов</p>
  125. </div>
  126. );
  127. const ProjectBlock = ({ children }) => (
  128. <div class="project">
  129. <ProjectImg />
  130. <ProjectText />
  131. </div>
  132. );
  133. const ManyProject = () => (
  134. <section class="many-projects">
  135. <div class="container">
  136. <div class="project-container">
  137. <ProjectBlock />
  138. <ProjectBlock />
  139. <ProjectBlock />
  140. <ProjectBlock />
  141. <ProjectBlock />
  142. <ProjectBlock />
  143. </div>
  144. </div>
  145. </section>
  146. );
  147. const ButtomCenter = () => (
  148. <div class="buttom-center">
  149. <img src="img/video.svg" class="fake-video" alt="fake video" />
  150. <a href="{url}">
  151. <img
  152. src="img/play-button.svg"
  153. class="play-button"
  154. alt="play buttom"
  155. />
  156. </a>
  157. </div>
  158. );
  159. const LoremP = () => (
  160. <p class="about-me-lorem lorem-p">
  161. Lorem Ipsum - это текст-"рыба", часто используемый в печати и
  162. вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на
  163. латинице с начала XVI века.
  164. </p>
  165. );
  166. const DeceptiveVideo = ({ title = "Как я работаю", url = "#" }) => (
  167. <section class="deceptive-video">
  168. <div class="container">
  169. <div class="video-block">
  170. <h2>{title}</h2>
  171. <LoremP />
  172. <div class="fake-video-block"></div>
  173. <ButtomCenter />
  174. </div>
  175. </div>
  176. </section>
  177. );
  178. const Row = ({ url = "#" }) => (
  179. <div class="row">
  180. <a href={url} class="col col-4"></a>
  181. <a href={url} class="col col-3"></a>
  182. <a href={url} class="col col-4 col-order1"></a>
  183. <a href={url} class="col col-3 col-order2"></a>
  184. <a href={url} class="col col-3 col-order3"></a>
  185. <a href={url} class="col col-4 col-order4"></a>
  186. <a href={url} class="col col-3"></a>
  187. <a href={url} class="col col-4"></a>
  188. </div>
  189. );
  190. const SectionGallery = () => (
  191. <section class="section-gellary">
  192. <Row />
  193. </section>
  194. );
  195. const ColMicrosoft = ({ url = "#" }) => (
  196. <div class="col-microsoft">
  197. <a href={url}>
  198. <img src="img/microsoft.png" width="255" alt="microsoft logo" />
  199. </a>
  200. </div>
  201. );
  202. const MicrosoftBox = () => (
  203. <div class="microsoft-flex-block">
  204. <ColMicrosoft />
  205. <ColMicrosoft />
  206. <ColMicrosoft />
  207. <ColMicrosoft />
  208. </div>
  209. );
  210. const Microsoft = () => (
  211. <section class="microsoft">
  212. <div class="container">
  213. <MicrosoftBox />
  214. </div>
  215. </section>
  216. );
  217. const Textarea = () => (
  218. <form action="">
  219. <textarea
  220. name="Message"
  221. class="message-form"
  222. cols="35"
  223. rows="15"
  224. placeholder="Сообщение"
  225. ></textarea>
  226. </form>
  227. );
  228. const InputBlock = ({ title = "Хотите веб-сайт?" }) => (
  229. <div class="input-block">
  230. <h2>{title}</h2>
  231. <LoremP />
  232. <form class="form-block-name-email">
  233. <input type="text" class="input-name" placeholder="Ваше имя" />
  234. <input type="email" class="input-email" placeholder="Ваш e-mail" />
  235. </form>
  236. <Textarea />
  237. <Buttom>ОТПРАВИТЬ</Buttom>
  238. </div>
  239. );
  240. const FormSection = () => (
  241. <section class="form-section">
  242. <div class="container">
  243. <InputBlock />
  244. </div>
  245. </section>
  246. );
  247. const Info = ({ title = "Иванов Иван" }) => (
  248. <div class="info">
  249. <h3>{title}</h3>
  250. <p>(с) 2018. Все права защищены.</p>
  251. </div>
  252. );
  253. const VKLink = ({ url = "#" }) => (
  254. <a href="{url}">
  255. <img src="img/vk.svg" class="vk-logo" alt="VK logo" />
  256. </a>
  257. );
  258. const VKImage = ({ children }) => (
  259. <div class="vk-img">
  260. <VKLink />
  261. <VKLink />
  262. <VKLink />
  263. </div>
  264. );
  265. const FooterBlock = () => (
  266. <div class="footer-block">
  267. <Info />
  268. <VKImage />
  269. </div>
  270. );
  271. const Footer = () => (
  272. <footer class="footer">
  273. <div class="container">
  274. <FooterBlock />
  275. </div>
  276. </footer>
  277. );
  278. const Main = () => (
  279. <main class="main">
  280. <SectionBanner />
  281. <AboutMe />
  282. <ManyProject />
  283. <SectionSkills />
  284. <DeceptiveVideo />
  285. <SectionGallery />
  286. <Microsoft />
  287. <FormSection />
  288. </main>
  289. );
  290. const Wrapper = () => (
  291. <div class="wrapper">
  292. <Header />
  293. <Main />
  294. <Footer />
  295. </div>
  296. );
  297. function App() {
  298. return <Wrapper />;
  299. }
  300. export default App;