nataliia преди 2 години
родител
ревизия
df81fa8f45
променени са 3 файла, в които са добавени 825 реда и са изтрити 35 реда
  1. 4 0
      public/index.html
  2. 616 20
      src/App.css
  3. 205 15
      src/App.js

+ 4 - 0
public/index.html

@@ -24,6 +24,10 @@
       work correctly both with client-side routing and a non-root public URL.
       Learn how to configure a non-root public URL by running `npm run build`.
     -->
+    <link rel="stylesheet" href="https://necolas.github.io/normalize.css/8.0.1/normalize.css">
+    <link rel="preconnect" href="https://fonts.googleapis.com">
+    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap" rel="stylesheet">
     <title>React App</title>
   </head>
   <body>

+ 616 - 20
src/App.css

@@ -1,38 +1,634 @@
-.App {
+html {
+  box-sizing: border-box;
+  height: 100%;
+  font-family: "Roboto Light", "Roboto Thin", sans-serif;
+  font-size: 16px;
+  line-height: 26px;
+  color: #727272;
+}
+
+*,
+*:before,
+*:after {
+  box-sizing: inherit;
+}
+
+li {
+  list-style: none;
+}
+a {
+  text-decoration: none;
+}
+
+img {
+  max-width: 100%;
+  display: inline-block;
+}
+
+.title {
+  color: black;
+  font-size: 32px;
+  line-height:37px;
   text-align: center;
 }
 
-.App-logo {
-  height: 40vmin;
-  pointer-events: none;
+.btn {
+  display: inline-block;
+  text-transform: uppercase;
+  color: white;
+  background-color: #34547A;
+  text-decoration: none;
+  padding: 25px 40px;
+  font-style: normal;
+  font-weight: 400;
+  font-size: 16px;
+  line-height: 26px;
+  letter-spacing: 0.1em;
 }
 
-@media (prefers-reduced-motion: no-preference) {
-  .App-logo {
-    animation: App-logo-spin infinite 20s linear;
-  }
+.text {
+  text-align: center;
+  line-height: 1.6;
 }
 
-.App-header {
-  background-color: #282c34;
-  min-height: 100vh;
+.page-wrapper {
+  max-width: 100%;
+  overflow: hidden;
+  position: relative;
+}
+
+.wrapper {
+  max-width: 1150px;
+  padding: 100px 15px;
+  margin: 0 auto;
+  text-align: center;
+}
+
+/*---------------------Header---------------------*/
+.header {
+  display: flex;
+  position: absolute;
+  width: 1200px;
+}
+
+.logo {
+  margin-left: 70px;
+}
+
+.menu_box {
   display: flex;
-  flex-direction: column;
+  list-style: none;
   align-items: center;
+  margin-left: 250px;
+  margin-bottom: 100px;
+}
+
+.nav {
+  margin-right: 1em;
+  text-transform: uppercase;
+  color: black;
+  letter-spacing: 0.1em;
+  font-size: 16px;
+}
+
+.nav:hover {
+  color: #34547A;
+}
+
+/*---------------Hamburger-menu---------------*/
+
+#menu__toggle {
+  opacity: 0;
+}
+
+#menu__toggle:checked ~ .menu__btn > span {
+  transform: rotate(45deg);
+}
+
+#menu__toggle:checked ~ .menu__btn > span::before {
+  top: 0;
+  transform: rotate(0);
+}
+
+#menu__toggle:checked ~ .menu__btn > span::after {
+  top: 0;
+  transform: rotate(90deg);
+}
+
+#menu__toggle:checked ~ .menu_box {
+  visibility: visible;
+  left: 0;
+}
+
+/*---------------------Banner---------------------*/
+.container_banner {
+  background-color: #EEEFF1;
+}
+
+.wrapper-banner {
+  max-width: 1150px;
+  padding: 50px 15px;
+  margin: 0 auto;
+  text-align: center;
+}
+
+.banner {
+  display: flex;
+  margin-top: 200px;
+}
+.banner-block {
+  width: 50%;
+}
+
+.banner-img {
+  padding-top:100px;
+}
+
+.banner-title,
+.banner-text {
+  margin-bottom: 60px;
+  text-align: left;
+}
+
+.banner-text {
+  line-height: 1.6;
+}
+
+.banner-title {
+  font-weight: 500;
+  font-size: 48px;
+  color: #000000;
+}
+
+/*---------------------About---------------------*/
+
+.container_about {
+  background-color: #E5E5E538;
+  width: 100%;
+}
+
+.about-block {
+  margin: 0 250px;
+}
+/*---------------------Icon---------------------*/
+.container_icon {
+  background-color: #34547A;;
+  width: 100%;
+}
+
+.wrapper-icon {
+  max-width: 1150px;
+  padding: 100px 15px;
+  margin: 0 auto;
+  text-align: center;
+}
+
+.icon-project,
+.icon-block {
+  display: flex;
+  color: white;
+  justify-content: space-around;
+}
+
+.icon-block {
+  margin-right: 30px;
+}
+
+.icon-block-pic {
+  margin-right: 20px;
+}
+
+
+/*---------------------Skills---------------------*/
+.container_skill {
+  background-color: #E5E5E538;
+}
+
+.skill-block {
+  display: flex;
+}
+
+.skill {
+  width: 50%;
+  padding-top: 30px;
+}
+
+.my-photo {
+  width: 550px;
+  margin: 30px;
+}
+
+.skill-list {
+  max-width: 445px;
+}
+
+.skill-item,
+.skill-item {
+  padding-top: 30px;
+}
+
+.skill-title {
+  text-align: left;
+}
+.skill-load {
+  position: relative;
+  height: 4px;
+  background: #C4C4C4;
+}
+
+.skill-progress {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  background: #34547A;
+  width: 75%;
+}
+
+.skill-text {
+  text-align: left;
+}
+/*---------------------Video---------------------*/
+.container_video {
+  background-color: #EEEFF1;
+}
+
+.video-text {
+  margin: 0 250px 60px 250px;
+}
+
+.video-pic {
+  display: flex;
   justify-content: center;
-  font-size: calc(10px + 2vmin);
+  align-items: center;
+}
+
+.play_button {
+  position: absolute;
+  text-decoration: none;
+}
+
+/*---------------------Gallery---------------------*/
+.wrapper_gallery {
+  margin: 0 auto;
+  text-align: center;
+  max-width: 1150px;
+}
+
+.container_gallery,
+.container_microsoft {
+  background-color: #E5E5E538;
+}
+.gallery-list {
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.gallery-img-sticky {
+  display: inline-block;
+  background-position: center;
+  background-repeat: no-repeat;
+  width: 25%;
+  position: relative;
+  line-height: 0;
+}
+
+.gallery-img {
+  display: inline-block;
+  background-position: center;
+  background-repeat: no-repeat;
+  width: 25%;
+  position: relative;
+  line-height: 0;
+}
+
+.view {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  background-color: rgba(15, 33, 44, .6);
+  display: flex;
+  padding: 15px;
+  align-items: center;
+  justify-content: center;
+  text-align: center;
+  opacity: 0;
+  transition:  opacity .3s ease;
+  line-height: 0;
+}
+
+.gallery-img:hover {
+  opacity: 1;
+}
+
+.view:hover {
+  opacity: 1;
+}
+
+/*-----------------Microsoft--------------------*/
+.microsoft-block {
+  display: flex;
+  justify-content: center;
+}
+
+.microsoft-img {
+  width: 80%;
+}
+
+.wrapper-microsoft {
+  max-width: 1150px;
+  padding: 70px 15px 100px 15px;
+  margin: 0 auto;
+  text-align: center;
+}
+
+.microsoft-img {
+  margin: 0 10px;
+}
+
+/*--------------------Form---------------------*/
+.container_form {
+  background-color: #EEEFF1;
+  align-items: center;
+  justify-content: center;
+}
+
+.wrapper_form {
+  max-width: 1150px;
+  padding: 100px 15px;
+  margin: 0 auto;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.form-block {
+  text-align: center;
+  max-width: 50%;
+}
+
+.block-name {
+  display: flex;
+}
+
+input {
+  width: 50%;
+  height: 60px;
+}
+
+.email {
+  margin-left: 40px;
+}
+
+textarea {
+  margin-bottom: 50px;
+  width: 100%;
+  height: 100px;
+}
+
+/*--------------------Footer---------------------*/
+.footer-block {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.footer-wrapper {
+  max-width: 1150px;
+  padding: 50px 15px;
+  margin: 0 auto;
+}
+
+.footer {
+  background-color: #34547A;
   color: white;
 }
 
-.App-link {
-  color: #61dafb;
+@media (max-width: 1000px) {
+  .menu_box {
+    display: block;
+    position: fixed;
+    top: 0;
+    left: -100%;
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 100px 50px;
+    list-style: none;
+    text-align: center;
+    background-color: #EEEFF1;
+    transition: all 0.4s ease-in-out;
+    line-height: 2;
+  }
+  .menu__btn {
+    display: flex;
+    align-items: center;
+    position: fixed;
+    top: 20px;
+    left: 20px;
+    width: 26px;
+    height: 26px;
+    cursor: pointer;
+    z-index: 1;
+  }
+  .menu__btn > span,
+  .menu__btn > span::before,
+  .menu__btn > span::after {
+    display: block;
+    position: absolute;
+    width: 100%;
+    height: 2px;
+    background-color: #616161;
+  }
+  .menu__btn > span::before {
+    content: '';
+    top: -8px;
+  }
+  .menu__btn > span::after {
+    content: '';
+    top: 8px;
+  }
+  .banner {
+    display: flex;
+    margin-top: 50px;
+  }
+  .logo {
+    margin-left: 200px;
+  }
+  .icon-block:nth-child(6)
+  {
+    display: none;
+  }
+}
+
+@media (max-width: 850px) {
+  .wrapper {
+    padding: 70px 15px;
+  }
+  .title {
+    font-size: 28px;
+  }
+  .about-block {
+    margin: 0 100px;
+  }
+  .banner-title {
+    font-size: 36px;
+    margin-bottom: 20px;
+  }
+  .banner-title,
+  .banner-text {
+    margin-bottom: 35px;
+  }
+  .banner-img {
+    padding-top:70px;
+  }
+  .icon-block:nth-child(5) {
+    display: none;
+  }
+  .icon-block {
+    margin-right: 40px;
+  }
+
+  .icon-block-pic {
+    margin-right: 20px;
+  }
+  .video-text {
+    margin: 0 200px 40px 200px;
+  }
+  .wrapper-microsoft {
+    padding: 70px 15px 50px 15px;
+  }
+  .wrapper_form {
+    padding: 50px 15px;
+  }
+  .footer-wrapper {
+    padding: 30px 15px;
+  }
+}
+
+@media (max-width: 600px) {
+  .btn {
+    padding: 18px 30px;
+  }
+  .banner {
+    display: block;
+  }
+  .banner-block {
+    width: 100%;
+  }
+  .banner-title,
+  .banner-text {
+    text-align: center;
+  }
+  .icon-project {
+    display: flex;
+    flex-wrap: wrap;
+  }
+  .skill {
+    padding-top: 0;
+  }
+
+  .my-photo {
+    width: 450px;
+  }
+  .skill-item,
+  .skill-item {
+    padding-top: 10px;
+  }
+  .video-text {
+    margin: 0 100px 60px 100px;
+  }
+  .play_button {
+    width: 10%;
+  }
+  .view {
+    padding: 30px;
+  }
+  .wrapper-microsoft {
+    padding: 40px 15px 50px 15px;
+  }
+  .microsoft-img:nth-child(4) {
+    display: none;
+  }
+  .wrapper_form {
+    padding: 50px 15px;
+  }
+  .email {
+    margin-left: 30px;
+  }
+  .form-block {
+    max-width: 90%;
+  }
+  .footer-pic {
+    max-width: 30%;
+  }
 }
 
-@keyframes App-logo-spin {
-  from {
-    transform: rotate(0deg);
+@media (max-width: 350px) {
+  .btn {
+    padding: 15px 25px;
+    font-size: 14px;
+  }
+  .wrapper {
+    padding: 40px 15px;
+  }
+  .title {
+    font-size: 24px;
+  }
+  .about-block {
+    margin: 0 40px;
+  }
+  .icon-block:nth-child(3),
+  .icon-block:nth-child(4)
+  {
+    display: none;
+  }
+  .skill-block {
+    display: block;
+    width: 100%;
+  }
+  .skill {
+    width: 100%;
+  }
+
+  .my-photo {
+    max-width: 100%;
+  }
+
+  .skill-list {
+    max-width: 445px;
+  }
+
+  .skill-item,
+  .skill-item {
+    padding-top: 0;
   }
-  to {
-    transform: rotate(360deg);
+  .my-photo {
+    max-width: 90%;
+  }
+  .skill-item,
+  .skill-item {
+    padding-top: 10px;
+  }
+  .video-text {
+    margin: 0 50px 60px 50px;
+  }
+  .wrapper_form {
+    padding: 30px 15px;
+  }
+  .block-name {
+    display: flex;
+    flex-wrap: wrap;
+  }
+
+  .email,
+  .name {
+    margin-left: 0px;
+    width: 100%;
+    margin-bottom: 10px;
+
   }
 }

+ 205 - 15
src/App.js

@@ -1,25 +1,215 @@
 import logo from './logo.svg';
 import './App.css';
 
+const Header = () =>
+  <header className="header">
+    <img src="svg/WD.svg" className="logo" alt="logo" /><a href="#"> </a>
+      <nav className="main-nav hamburger-menu">
+        <input id="menu__toggle" type="checkbox"/>
+        <label className="menu__btn" htmlFor="menu__toggle">
+          <span></span>
+        </label>
+        <ul className="menu_box">
+          <NavItem url="/"> Главная </NavItem>
+          <NavItem url="/about"> Об авторе </NavItem>
+          <NavItem url="/work"> Работы </NavItem>
+          <NavItem url="/process"> Процесс </NavItem>
+          <NavItem url="/contact"> Контакты </NavItem>
+        </ul>
+      </nav>
+  </header>
+
+const NavItem = ({children, url}) =>
+    <li>
+      <a className="nav" href={url}> {children} </a>
+    </li>
+
+const Icon = () =>
+    <div className="icon-block">
+      <img src="svg/Group(1).svg" alt="icon" className="icon-block-pic" />
+      <div className="amount">
+        <p> 40+ <br/> проектов </p>
+      </div>
+    </div>
+
+const SkillItem = () =>
+    <div className="skill-item">
+      <p className="skill-text">Adobe Photoshop</p>
+      <div className="skill-load">
+        <div className="skill-progress"></div>
+      </div>
+    </div>
+
+const MicrosoftImg = () =>
+    <div>
+      <img src="svg/microsoft.svg" alt="microsoft" className="microsoft-img" />
+    </div>
+
+const View = () =>
+    <div className="view">
+      <img src="svg/view.svg" className="view-pic" alt="view" />
+    </div>
+
+const ImgLaptop = () =>
+    <div className="gallery-img-sticky">
+      <img src="img/Rectangle7.3.jpg" className="gallery-item" alt="gallery" />
+      <View />
+    </div>
+
+const ImgHand = () =>
+    <div className="gallery-img">
+      <img src="img/Rectangle7.jpg" className="gallery-item" alt="gallery" />
+      <View />
+    </div>
+
 function App() {
   return (
     <div className="App">
-      <header className="App-header">
-        <img src={logo} className="App-logo" alt="logo" />
-        <p>
-          Edit <code>src/App.js</code> and save to reload.
-        </p>
-        <a
-          className="App-link"
-          href="https://reactjs.org"
-          target="_blank"
-          rel="noopener noreferrer"
-        >
-          Learn React
-        </a>
-      </header>
+      <div className="page-wrapper">
+        <section className="container_banner">
+          <div className="wrapper-banner">
+            <Header />
+
+            <section className="banner">
+              <div className="banner-img banner-block">
+                <img src="svg/Frame.svg" alt="computer" />
+              </div>
+              <div className="banner-text banner-block">
+                <h1 className="banner-title"> Дизайн и верстка </h1>
+                <p className="banner-text"> Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне.
+                  Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века.
+                </p>
+                <a href="#" className="btn"> Написать мне </a>
+              </div>
+            </section>
+          </div>
+        </section>
+
+        <main>
+          <section className="container_about">
+            <div className="wrapper">
+              <section className="about-block">
+                <h2 className="title"> Обо мне </h2>
+                <p className="text">
+                  Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является
+                  стандартной
+                  "рыбой" для текстов на латинице с начала XVI века.
+                </p>
+              </section>
+            </div>
+          </section>
+
+          <section className="container_icon">
+            <div className="wrapper-icon">
+              <section className="icon-project">
+                <Icon />
+                <Icon />
+                <Icon />
+                <Icon />
+                <Icon />
+                <Icon />
+              </section>
+            </div>
+          </section>
+
+          <section className="container_skill">
+            <div className="wrapper">
+              <section className="skill-block">
+                <div className="skill">
+                  <div className="skill-list">
+                    <h2 className="skill-title title"> Мои навыки </h2>
+                    <SkillItem />
+                    <SkillItem />
+                    <SkillItem />
+                  </div>
+                </div>
+                <div className="my-photo">
+                  <img src="img/photo.jpg" alt="photo" />
+                </div>
+              </section>
+            </div>
+          </section>
+
+          <section className="container_video">
+            <div className="wrapper">
+              <section className="video-block">
+                <h2 className="title"> Как я работаю </h2>
+                <p className="text video-text">
+                  Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является
+                  стандартной
+                  "рыбой" для текстов на латинице с начала XVI века.
+                </p>
+                <div className="video-pic">
+                  <img src="svg/Rectangle%205.svg" className="video" alt="video" />
+                    <img src="svg/play-button.svg" className="play_button" alt="play" />
+                </div>
+              </section>
+
+              <section className="container_gallery">
+                <div className="wrapper_gallery">
+                  <section className="section-gallery">
+                    <div className="gallery-list">
+                      <ImgLaptop />
+                      <ImgHand />
+                      <ImgLaptop />
+                      <ImgHand />
+                      <ImgHand />
+                      <ImgLaptop />
+                      <ImgHand />
+                      <ImgLaptop />
+                    </div>
+                  </section>
+                </div>
+              </section>
+              <div className="container_microsoft">
+                <div className="wrapper-microsoft">
+                  <section className="microsoft-block">
+                    <MicrosoftImg />
+                    <MicrosoftImg />
+                    <MicrosoftImg />
+                  </section>
+                </div>
+              </div>
+              <div className="container_form">
+                <div className="wrapper_form">
+                  <section className="form-block">
+                    <h2 className="title"> Хотите веб-сайт? </h2>
+                    <p className="text"> Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне.
+                      Lorem Ipsum является
+                      стандартной "рыбой" для текстов на латинице с начала XVI века.</p>
+                    <div className="form">
+                      <form>
+                        <div className="block-name">
+                          <input name="name" placeholder="Ваше имя" className="name" />
+                            <input name="email" type="email" placeholder="Ваш E-Mail" className="email" />
+                        </div>
+                        <p><textarea name="message"> </textarea></p>
+                        <div><a href="#" className="btn btn-form"> Отправить </a></div>
+                      </form>
+                    </div>
+                  </section>
+                </div>
+              </div>
+            </div>
+          </section>
+        </main>
+        <footer className="footer">
+          <div className="footer-wrapper">
+            <section className="footer-block">
+              <div className="footer-name">
+                <p> Иван Иванов </p>
+                <p> (с) 2018. Все права защищены.</p>
+              </div>
+              <div className="footer-icon">
+                <img src="svg/icon.svg" className="footer-pic" alt="icon" />
+                <img src="svg/icon.svg" className="footer-pic" alt="icon" />
+                <img src="svg/icon.svg" className="footer-pic" alt="icon" />
+              </div>
+            </section>
+          </div>
+        </footer>
+      </div>
     </div>
   );
 }
-
 export default App;