рдЖрдЗрдлреНрд░реЗрдо рддрддреНрд╡ рдХреА рдПрдХ рдЬреЛрдбрд╝реА

рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!

рдХрд╛рд░реНрдп


рдХреЛрдбрдкреЗрди рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдмрдирд╛рдПрдВред

рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:


рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди


рдПрдХ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
<section> <h3>Title</h3> <div class="viewport"> <iframe src="index.html" seamless scrolling="no"></iframe> </div> <div class="buttons"> <button onclick="window.open('index.html', '_blank')" title="fullscreen">demo</button> <button onclick="document.location='code.7z'" title="download">code</button> </div> </section> 

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ?

рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ (рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдиреБрднрд╛рдЧ рдФрд░ рд▓реЗрдЦ рдореЗрдВ рд╣реЗрдбрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

.viewport - рдПрдХ рдмреНрд▓реЙрдХ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдлреНрд░реЗрдо рд╣реЛрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рдмреНрд▓реЙрдХ рдХрд╣реЗрдВрдЧреЗ)ред

Src рд╡рд┐рд╢реЗрд╖рддрд╛ рдлреНрд░реЗрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЬреЗрдПрд╕ (рдЗрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЕрдзрд┐рдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдХрд╡рд░" рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рд░реНрдмрд╛рдз рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлреНрд░реЗрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ)ред

рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ = "рдирд╣реАрдВ" рдлреНрд░реЗрдо рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

Window.open рдПрдХ рдлреНрд░реЗрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ (рдПрдХ рдирдП рдЯреИрдм рдореЗрдВ "_blank")ред

Document.location рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рд╕рднреА HTML
 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width: device-width"> <title>Iframe</title> <link rel="stylesheet" href="style.css"> <script src="script.js" defer></script> </head> <body> <header> <h2>Title</h2> </header> <main> <section> <h3>Title</h3> <div class="viewport"> <iframe src="index.html" seamless scrolling="no"></iframe> </div> <div class="buttons"> <button onclick="window.open('index.html', '_blank')" title="fullscreen">demo</button> <button onclick="document.location='code.7z'" title="download">code</button> </div> </section> <section> <h3>Title</h3> <div class="viewport"> <iframe src="index.html" seamless scrolling="no"></iframe> </div> <div class="buttons"> <button onclick="window.open('index.html', '_blank')" title="fullscreen">demo</button> <button onclick="document.location='code.7z'" title="download">code</button> </div> </section> <section> <h3>Title</h3> <div class="viewport"> <iframe src="index.html" seamless scrolling="no"></iframe> </div> <div class="buttons"> <button onclick="window.open('index.html', '_blank')" title="fullscreen">demo</button> <button onclick="document.location='code.7z'" title="download">code</button> </div> </section> <section> <h3>Title</h3> <div class="viewport"> <iframe src="index.html" seamless scrolling="no"></iframe> </div> <div class="buttons"> <button onclick="window.open('index.html', '_blank')" title="fullscreen">demo</button> <button onclick="document.location='code.7z'" title="download">code</button> </div> </section> </main> <footer> <p>┬й All rights reserved.</p> </footer> </body></html> 


рд╕рдорд╕реНрдпрд╛ рдирдВрдмрд░ 1. рдмреНрд▓реЙрдХ рдореЗрдВ рдлреНрд░реЗрдо рджрд░реНрдЬ рдХрд░реЗрдВ


Chrome рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ iframe рдЖрдХрд╛рд░ 304x154px рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЕрдиреБрднрд╛рдЧ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
 section { margin: 1em; width: 300px; background: rgba(0, 0, 0, 0.15); border-radius: 5px; box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.3); } 

рдЦрдВрдб рдХреА рдЪреМрдбрд╝рд╛рдИ 300px (+ рдореЗрдЯрд╛ рдирд╛рдо = "рд╡реНрдпреВрдкреЛрд░реНрдЯ" рдФрд░ рдкреНрд░рджрд░реНрд╢рди: рдореВрд▓ рддрддреНрд╡ рдкрд░ рдлреНрд▓реЗрдХреНрд╕) рд╕реЗрдЯ рдХрд░рдирд╛ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╣реА рдлреНрд░реЗрдо рдкреНрд░рджрд░реНрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛:


рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░реНрдг рдЖрдХрд╛рд░ рдореЗрдВ рдлрд╝реНрд░реЗрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд╝реНрд░реЗрдо рд╕реНрд╡рдпрдВ рдмреНрд▓реЙрдХ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЖрдЗрдлреНрд░реЗрдо рдХреЛ рдорд╛рдкрдирд╛ рд╣реИ:
 /*       ""  , , 1024768px,     25%,   ,      - 0 0 (  ) */ iframe { width: 1024px; height: 768px; transform: scale(.25); transform-origin: 0 0; } 

рдЕрдЧрд▓рд╛, рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдЪреМрдбрд╝рд╛рдИ: 1024 * 0.25 = 256px, рдКрдВрдЪрд╛рдИ: 768 * 0.25 = 192pxред

рд╕рднреА рд╕реАрдПрд╕рдПрд╕
 @import url("https://fonts.googleapis.com/css?family=Playfair+Display|Roboto&display=swap"); * { margin: 0; padding: 0; box-sizing: border-box; } body { min-height: 100vh; background: radial-gradient(circle, skyblue, steelblue) fixed; display: flex; flex-direction: column; font-family: "Playfair Display", serif; text-align: center; color: #222; } h2 { font-size: 2em; text-transform: uppercase; text-shadow: 1px 1px #ddd; user-select: none; } main { flex-grow: 1; display: inherit; flex-wrap: wrap; justify-content: space-evenly; align-content: space-evenly; } section { margin: 1em; width: 300px; background: rgba(0, 0, 0, 0.15); border-radius: 5px; box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.3); } .viewport { margin: auto; width: 256px; height: 192px; overflow: hidden; } iframe { width: 1024px; height: 768px; transform: scale(.25); transform-origin: 0 0; } h3 { padding: 0.5em 0; font-size: 1em; letter-spacing: 2px; text-transform: uppercase; text-align: center; color: #ddd; text-shadow: 1px 1px 0 #222; user-select: none; } button { border: none; outline: none; margin: 0.75em 0; padding: 0.75em; width: 100px; background: linear-gradient(to bottom, skyblue, steelblue); font-family: inherit; font-weight: bold; letter-spacing: 2px; color: inherit; text-transform: uppercase; border-radius: 10px; box-shadow: 0 0 2px rgba(0, 0, 0, 0.4); cursor: pointer; transition: .2s; } button + button { margin-left: 1em; } button:active, button:checked, button:focus, button:hover { background: radial-gradient(steelblue, skyblue); color: #ddd; box-shadow: inset 0 0 2px rgba(0, 0, 0, .4); } 


рд╕рдорд╕реНрдпрд╛ # 2: рд╣реЛрд╡рд░ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛


рдкреГрд╖реНрда рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝реНрд░реЗрдо рдХреЗ рд╕рд╛рде, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде, рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд▓реЛрдбрд┐рдВрдЧ / рд░реАрд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдирд┐рд░рдВрддрд░ рдЕрдВрддрд░рд╛рд▓ рдорд┐рд▓рддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝реНрд░реЗрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рддреЗ рд╣реИрдВред рдЪрд┐рддреНрд░ рдХрд╛ рдЖрдХрд╛рд░ 1024x768px рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдкрддреЗ рдмрджрд▓рддреЗ рд╣реИрдВ - рдорд╛рди src рд╣реИ (рдХреЛрдбрдкреЗрди рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдлреНрд░реЗрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рд╣рд▓ рдХреА рдЧрдИ рд╣реИ)ред рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реНрд░реЗрдо рдкрд░ рд╣реЛрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
 //      let iframes = document.querySelectorAll("iframe") //   (         Nodelist,   ) for (let i = 0; i < iframes.length; i++){ let iframe = iframes[i], //    sr originalSrc = iframe.src //     iframe.src = "cover.jpg" //       iframe.addEventListener("mouseover", () => iframe.src = originalSrc) //  "" iframe.addEventListener("mouseout", () => iframe.src = "cover.jpg") } 

рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдСрд▓ рдж рдмреЗрд╕реНрдЯред

Source: https://habr.com/ru/post/hi485304/


All Articles