Browse Source

The first homework in course

LenDoc 2 years ago
parent
commit
bc6543c738

BIN
public/favicon.ico


BIN
public/img/camera2.png


BIN
public/img/dslr-camera.jpg


BIN
public/img/graphiс_tablet.jpg


BIN
public/img/icon.png


BIN
public/img/instagram.png


BIN
public/img/photo1.png


BIN
public/img/photo2.png


BIN
public/img/photo3.png


BIN
public/img/photo4.png


BIN
public/img/photo5.png


BIN
public/img/photo6.png


BIN
public/img/photo_sven.png


BIN
public/img/second_photo.png


BIN
public/img/telegram.png


BIN
public/img/video-camera.jpg


BIN
public/img/youtube.png


+ 1 - 26
public/index.html

@@ -9,35 +9,10 @@
       name="description"
       content="Web site created using create-react-app"
     />
-    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
-    <!--
-      manifest.json provides metadata used when your web app is installed on a
-      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-    -->
-    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
-    <!--
-      Notice the use of %PUBLIC_URL% in the tags above.
-      It will be replaced with the URL of the `public` folder during the build.
-      Only files inside the `public` folder can be referenced from the HTML.
-
-      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
-      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`.
-    -->
-    <title>React App</title>
   </head>
   <body>
-    <noscript>You need to enable JavaScript to run this app.</noscript>
+  
     <div id="root"></div>
-    <!--
-      This HTML file is a template.
-      If you open it directly in the browser, you will see an empty page.
-
-      You can add webfonts, meta tags, or analytics to this file.
-      The build step will place the bundled scripts into the <body> tag.
 
-      To begin the development, run `npm start` or `yarn start`.
-      To create a production bundle, use `npm run build` or `yarn build`.
-    -->
   </body>
 </html>

BIN
public/logo192.png


BIN
public/logo512.png


+ 0 - 25
public/manifest.json

@@ -1,25 +0,0 @@
-{
-  "short_name": "React App",
-  "name": "Create React App Sample",
-  "icons": [
-    {
-      "src": "favicon.ico",
-      "sizes": "64x64 32x32 24x24 16x16",
-      "type": "image/x-icon"
-    },
-    {
-      "src": "logo192.png",
-      "type": "image/png",
-      "sizes": "192x192"
-    },
-    {
-      "src": "logo512.png",
-      "type": "image/png",
-      "sizes": "512x512"
-    }
-  ],
-  "start_url": ".",
-  "display": "standalone",
-  "theme_color": "#000000",
-  "background_color": "#ffffff"
-}

+ 0 - 3
public/robots.txt

@@ -1,3 +0,0 @@
-# https://www.robotstxt.org/robotstxt.html
-User-agent: *
-Disallow:

+ 0 - 38
src/App.css

@@ -1,38 +0,0 @@
-.App {
-  text-align: center;
-}
-
-.App-logo {
-  height: 40vmin;
-  pointer-events: none;
-}
-
-@media (prefers-reduced-motion: no-preference) {
-  .App-logo {
-    animation: App-logo-spin infinite 20s linear;
-  }
-}
-
-.App-header {
-  background-color: #282c34;
-  min-height: 100vh;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  font-size: calc(10px + 2vmin);
-  color: white;
-}
-
-.App-link {
-  color: #61dafb;
-}
-
-@keyframes App-logo-spin {
-  from {
-    transform: rotate(0deg);
-  }
-  to {
-    transform: rotate(360deg);
-  }
-}

+ 177 - 21
src/App.js

@@ -1,25 +1,181 @@
-import logo from './logo.svg';
-import './App.css';
+import './App.scss';
+const Logotype = () => 
+<div className="logo">
+    <img src= "/img/icon.png"  alt="logo" className="logo_image"/>
+<div className="logo_text"> The photographer for your important events in life</div>
+</div>
+const Wrapper = ({children}) =>
+<div className="wrapper">
+{children}
+</div>
+const Offer = () =>
+<Wrapper>
+  <div className="offer">
+      <h1 className="title">
+          Hi! I'm Sven! <span> Photographer!</span>
+      </h1>
+      <p className="intro">
+          Photography is not only a way of expression, it is also
+          telling a story. I had worked with different brands by
+          helping them create content to reach their specific audiences.
+      </p>
+      <a href="" className="btn" >
+          Hire me!
+      </a>
+  </div>
+    <img src="/img/camera2.png" alt="first photo" className="image"/>
+</Wrapper>
+const Header = ()=> 
+<header className="header">
+    <div className="container">
+        <Logotype/>
+        <Offer/>
+    </div>
+</header>
 
-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>
+const Card = ({img="/img/video-camera.jpg",title='NoName', text = 'NoName' }) => //title, url - объявление переменных. После `=` - значение по умолчанию
+<>
+<div class="bonus">
+    <img src={img} />
+    <h1 class="bonus-title" >{title}</h1> 
+    <p class="bonus-text"> {text} </p>
+</div> 
+</>
+
+const Main = () => //использование
+<main className="possibility"> 
+    <div className="container">
+        <h2 className="section-title">
+            What can do for you
+        </h2>
+        <div className="bonuses">
+            <Card img="/img/video-camera.jpg" title="Video shooting"
+            text="I have experience in various niches in the video industry, working with various YouTube users, influencers and famous artists." />
+            <Card img="/img/dslr-camera.jpg" title="Photo shooting"
+            text="I can do a portrait, wedding, advertising, studio photo session. Also advertising, interior and reportage photography."/>
+            <Card img="/img/graphiс_tablet.jpg"   title="Graphic design"
+            text="I have over 5 years of experience in graphic design. I have worked with established brands to help them achieve their creative goals."/>
+            </div>
+    </div>
+</main>
+
+const Container = ({children}) =>
+<div className="container">
+{children}
+</div>
+
+const SectionTitle = ({children}) =>
+<div className="section-title">
+{children}
+</div> 
+
+const Biograph = () => //использование
+<biograph class="bio"> 
+    <Container>
+        <SectionTitle>
+            <h2> BIO </h2>
+        </SectionTitle>
+        <Wrapper>
+        <div class="list">
+                <hr/>
+                    <ul>
+                        <li> I travel around America, in particular have been to California, Hawaii, LA.</li>
+                        <li>I have a French Bulldog Powder.</li>
+                        <li> I love extreme sports. Specifically, I was parachuting in Dubai and diving in Hawaii.</li>
+                        <li> I have my own lifestyle blog on Instagram, where you can follow me @svenciupka</li>
+                    </ul>
+                <hr/>
+            </div>
+            <img src="/img/photo_sven.png" alt="Sven BIO" class="sven_img"/>
+</Wrapper>
+</Container>
+</biograph>
+
+const ImageTable = ({img="/img/video-camera.jpg" }) => 
+<>
+<img  src={img} class="image_galery" />
+</> 
+const GaleryTable = () => 
+<>
+    <div class="galery">
+        <SectionTitle>
+        <h2 >PROJECTS </h2>
+        </SectionTitle>
+        <table class="table_galery">
+            <tr/> 
+            <td> <ImageTable img ="/img/photo1.png"/> </td>
+            <td> <ImageTable img ="/img/photo2.png"/> </td>
+            <td> <ImageTable img ="/img/photo3.png" /> </td>
+            <tr/>
+        <tr/>
+
+            <td><ImageTable img ="/img/photo4.png"/>  </td>
+            <td>  <ImageTable img ="/img/photo5.png"/> </td>
+            <td> <ImageTable img ="/img/photo6.png"/>  </td>
+
+        <tr/>
+        </table>
+    </div>
+</>
+
+const SendMessage = () =>
+<>
+<div class="mail">
+<Container>
+<SectionTitle>
+<h2 > Send me a message </h2>
+</SectionTitle>
+<form action="" class="form">
+				<input type="name" placeholder="Input name.." name="name" class="input" required/>
+				<input type="email" placeholder="Input e-mail.." name="email" class="input" required/>
+				<textarea rows="4" cols="40" placeholder="Input message.." class="input text"></textarea>
+               <button type="submit" class="btn btn-form">
+                    Send me!
+				</button>
+</form>
+    </Container>
     </div>
-  );
-}
+</>
+
+const ImageLogoNet = ({img="/img/video-camera.jpg" }) => 
+<>
+<img  src={img} class="logo_image" />
+</>  
+const Footer = () =>
+<footer class="footer">
+<Container>
+            <Logotype/>
+            <Wrapper>
+            <div class="contact">
+                <p >
+			CONTACTS
+		</p>
+        <p>
+            1-212-123-45-67
+		</p>
+            </div>
+  
+        <div class="network">
+        <a href= "https://www.instagram.com/?hl=ru"> <ImageLogoNet img ="/img/instagram.png"/> </a>
+        <a href="https://www.youtube.com/">  <ImageLogoNet img ="/img/youtube.png"/> </a>
+        <a href="https://web.telegram.org/z/"> <ImageLogoNet img ="/img/telegram.png"/> </a>
+        </div> 
+        </Wrapper>
+        </Container>
+	</footer>
 
+function App() {
+    return (
+        <>
+        <Header/>
+        <Main/>
+        <Biograph/>
+        <GaleryTable/>
+        <SendMessage  />
+        <Footer/>
+        </>
+        );
+    }
+    
 export default App;
+    

+ 203 - 0
src/App.scss

@@ -0,0 +1,203 @@
+body{
+  font-family: 'Montserrat', sans-serif;
+  background-color:#c8cdd1;
+  color:#1d2e3b;
+  margin: 0 auto;
+  padding: 0 auto;
+}
+div,p,input,button,form,span,a,ul,li{
+  box-sizing: border-box;
+}
+.container{
+  max-width: 1170px;
+  margin: 0 auto;
+  
+}
+.header{
+  background: -webkit-linear-gradient(90deg, rgb(173, 200, 235), rgb(62, 102, 154));
+  background: -moz-linear-gradient(90deg, rgb(173, 200, 235), rgb(62, 102, 154));
+  background: linear-gradient(90deg, rgb(173, 200, 235), rgb(62, 102, 154));
+  padding-top: 60px;
+  color: #fff;
+  padding-bottom: 100px;
+}
+.logo_image{
+  width: 10ex;
+  height: 10ex;
+ 
+}
+.logo{
+  display: flex;
+  color: #fff;
+}
+.logo_text{
+  width: 250px;
+}
+.offer{
+  width: 490px;
+}
+.wrapper{
+  /* выравнивание в одну строку */
+  display: flex;
+  justify-content: space-between;
+  align-items:center;
+}
+.title span{
+  color: #273c4d;
+  font-size: 59px;
+}
+.intro{
+  margin: 40px 0;
+  width: 390px;
+  font-family: 'Open Sans', sans-serif;
+  font-size: 16px;
+  line-height: 1.66em;
+  font-weight: 400;
+  font-size: 15px;
+}
+h1,h2.h3{
+  font-weight: 700;
+}
+p {
+  line-height: 1.66em;
+}
+.btn{
+  background: #fab30b;
+  color: #253147;
+  display:  block;
+  width: 220px;	
+  padding: 20px 0;
+  text-align: center;
+  text-decoration: none;
+  transition: all 0.5s ease;
+  border-radius: 12px;
+  font-weight: 700;
+}
+.btn:hover{
+  background: #eba809;
+}
+.possibility{
+  background: #c7d0d7;
+  padding-top: 40px;
+  padding-bottom: 115px; 
+}
+.section-title{
+  padding-top: 30px;
+  font-size: 20px;
+  text-align: center;
+}
+.bonuses{
+  display: flex;
+  justify-content: space-between;
+  margin-top: 65px;
+}
+.bonus{
+  width: 290px;
+  text-align: center; 
+  background-color: #fff;
+  border-radius: 10px; 
+  border-style: solid;
+  border-width: 10px;
+  border-color: #fff;
+  height: 320px;
+ 
+}
+.bonus-title{
+  font-size: 19px;
+  padding-top: 1em;
+}
+.bonus-text{
+  margin-top: 18px;
+  line-height: 1.66em;
+}
+
+ul {
+  padding: 0; /* Убираем поля */
+  margin-left: 20px; /* Отступ слева */
+  width: 400px;
+}
+.list{
+  padding-right: 100px;
+}
+.bio{
+  background: #7cafd0;
+  /* выравнивание в одну строку */
+  display: flex;
+  justify-content: space-between;
+  align-items:center;
+  padding-bottom: 60px;
+}
+
+.sven_img{
+  width: 360px;
+  height: 430px;
+}
+.galery{
+  padding-bottom: 100px;
+}
+table{
+  max-width: 1170px;
+  margin: 0 auto;
+  border-color: #7cafd0;
+  border-style: solid;
+  border-width: 20px;
+
+}
+
+.image_galery{
+  width: 300px;
+  height: 400px;
+}
+.mail{
+
+  background-color: #ecf3f8;
+  padding-bottom: 100px;
+}
+.form{
+  margin-top: 40px;
+}
+.input{
+  font-family: 'Montserrat', sans-serif;
+  display: block;
+  margin:auto;
+  font-size: 15px;
+  font-weight: 500;
+  width: 340px;
+  height: 50px;
+  border:  1px solid #bbbbbb;
+  border-radius: 5px;
+  padding-left: 20px; 
+  margin-bottom: 15px;
+  color: #85828c;
+  position: relative;
+}
+.btn-form{	
+  display: block;
+  margin: auto;
+  border:  none;
+  cursor: pointer;
+  width: 340px;
+  height: 55px;
+}
+.text{
+  font-family: 'Montserrat', sans-serif;
+  padding-top: 10px;
+  height: 150px;
+  width: 320px;
+}
+.footer{
+  background: #4a7496;
+  padding: 62px 0;
+}
+
+.contact{
+  color: #ffffff;
+  font-size: 14px;
+  text-align: left;
+}
+
+.logo_image{
+  width: 50px;
+  height: 50px;
+  padding-right: 10px;
+}