繁体   English   中英

单击按钮时如何使图像缩放

[英]how to make an image zoom when you click a button

所以我正在做一个学校项目,因此,对于我必须制作的网站,我仅限于 html、css 和 javascript。 我目前正在制作一个登陆页面,并有一个将用户带到另一个页面的按钮。 我想这样做,所以当单击按钮时,它会放大背景图像,然后将用户带到另一个页面。 到目前为止,这是我的代码:

CSS 然后是 HTML

 * { margin: 0; padding: 0; } body { margin: 0; font-family: Brush Script MT; font-size: 17px; color: #926239; line-height: 1.6; } #showcase { background-image: url('https://image.freepik.com/free-vector/cartoon-cave-with-stalactites_29190-1074.jpg'); background-size: cover; background-position: center; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 0 20px; } #showcase h1 { font-size: 10px; line-height: 1.2; } #showcase p { font-size: 20px; } #showcase.button { font-size: 25px; text-decoration: none; color: #10B589; border: #10B589 1px solid; padding: 10px 20px; border-radius: 10px; margin-top: 20px; } #showcase.button:hover { background: #10B589; color: #fff; animation: wiggle 1s; box-sizing: border-box; } #section-a { padding: 20px; background: #10B589; color: #fff; text-align: center; } #section-b { padding: 20px; background: #10B589; text-align: center; } #section-c { display: flex; } #section-c div { padding: 20px; } #section-c.box-1, #section-c.box-3 { background: #10B589; color: #fff; } #section-c.box-2 { background: #f9f9f9; } @keyframes wiggle { 12% { transform: scale(0.4, 0.65); } 13% { transform: scale(0.43, 0.67); } 14% { transform: scale(0.5, 0.76); } 25% { transform: scale(0.8, 1.3); } 37% { transform: scale(0.9, 0.95); } 50% { transform: scale(1.1, 0.8); } 62% { transform: scale(0.9, 1); } 75% { transform: scale(0.7, 1.2); } 87% { transform: scale(0.8, 1.1); } }
 <html> <head> <header id="showcase"> <a href="insertname.html" class="button">Enter The Cave</a> </header> <body> </body> </head> <link href="ISTwebsite.css" rel="stylesheet" type="text/css"> </html>

我在互联网上尝试了很多其他问题,有人可以帮助我吗?

您可以在几秒钟后简单地分配a的 href,单击事件和背景的缩放发生在我的代码中,如下所示

 btn.onclick = () => { showcase.style.transition = "1.5s"; showcase.style.transform = "scale(1.3)"; setTimeout(() => { window.location.assign("insertname.html"); }, 1000); }
 * { margin: 0; padding: 0; } body { margin: 0; font-family: Brush Script MT; font-size: 17px; color: #926239; line-height: 1.6; } #showcase { background-image: url('https://image.freepik.com/free-vector/cartoon-cave-with-stalactites_29190-1074.jpg'); background-size: cover; background-position: center; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 0 20px; } #showcase h1 { font-size: 10px; line-height: 1.2; } #showcase p { font-size: 20px; } #showcase.button { font-size: 25px; text-decoration: none; color: #10B589; border: #10B589 1px solid; padding: 10px 20px; border-radius: 10px; margin-top: 20px; } #showcase.button:hover { background: #10B589; color: #fff; animation: wiggle 1s; box-sizing: border-box; } #section-a { padding: 20px; background: #10B589; color: #fff; text-align: center; } #section-b { padding: 20px; background: #10B589; text-align: center; } #section-c { display: flex; } #section-c div { padding: 20px; } #section-c.box-1, #section-c.box-3 { background: #10B589; color: #fff; } #section-c.box-2 { background: #f9f9f9; } @keyframes wiggle { 12% { transform: scale(0.4, 0.65); } 13% { transform: scale(0.43, 0.67); } 14% { transform: scale(0.5, 0.76); } 25% { transform: scale(0.8, 1.3); } 37% { transform: scale(0.9, 0.95); } 50% { transform: scale(1.1, 0.8); } 62% { transform: scale(0.9, 1); } 75% { transform: scale(0.7, 1.2); } 87% { transform: scale(0.8, 1.1); } }
 <header id="showcase"> <a class="button" id="btn">Enter The Cave</a> </header>

这是一个动画背景缩放的示例,其中可见性平滑丢失。 添加了动态 class background_size 注意js代码中的一行: document.location.href = "your_link"; 而不是your_link ,您需要插入您的链接。

 let button_a = document.querySelector('.button'); let background_picture = document.querySelector('#showcase'); button_a.onclick = function(){ background_picture.classList.add('background_size'); button_a.classList.add('smooth_button'); document.location.href = "your_link"; };
 * { margin: 0; padding: 0; } body { margin: 0; font-family: Brush Script MT; font-size: 17px; color: #926239; line-height: 1.6; } #showcase { background-image: url('https://image.freepik.com/free-vector/cartoon-cave-with-stalactites_29190-1074.jpg'); background-size: cover; background-position: center; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 0 20px; transition: 0.5s; opacity: 1; }.background_size { transform: scale(1.5); opacity: 0;important. }:smooth_button { opacity; 0:important; } #showcase h1 { font-size: 10px. line-height; 1:2; } #showcase p { font-size. 20px: } #showcase;button { font-size: 25px; text-decoration: none; color: #10B589; border: #10B589 1px solid; padding: 10px 20px; border-radius: 10px; margin-top: 20px. transition; 0:1s; opacity. 1: } #showcase:button;hover { background: #10B589; color: #fff; animation: wiggle 1s; box-sizing: border-box; } #section-a { padding: 20px; background: #10B589; color: #fff; text-align: center; } #section-b { padding: 20px; background: #10B589; text-align: center; } #section-c { display: flex; } #section-c div { padding. 20px, } #section-c.box-1: #section-c;box-3 { background: #10B589; color. #fff: } #section-c;box-2 { background: #f9f9f9. } @keyframes wiggle { 12% { transform, scale(0.4; 0:65). } 13% { transform, scale(0.43; 0:67). } 14% { transform, scale(0.5; 0:76). } 25% { transform, scale(0.8; 1:3). } 37% { transform, scale(0.9; 0:95). } 50% { transform, scale(1.1; 0:8). } 62% { transform, scale(0;9: 1). } 75% { transform, scale(0.7; 1:2). } 87% { transform, scale(0.8; 1.1); } }
 <html> <head> <header id="showcase"> <a class="button">Enter The Cave</a> </header> <body> </body> </head> <link href="ISTwebsite.css" rel="stylesheet" type="text/css"> </html>

首先我修好了你的 animation CSS ...

@keyframes wiggle {
  0% { transform: scale(1.2,  1.2); }
  15% { transform: scale(1.3, 1.3); }
  30% { transform: scale(1.4, 1.4); }
  45% { transform: scale(1.5, 1.5); }
  60% { transform: scale(1.6, 1.6); }
  75% { transform: scale(1.7, 1.7); }
  90% { transform: scale(1.8, 1.8); }
  100% { transform: scale(1.9,1.9); }
}

其次,我将 JS 添加到您按钮的 onclick ...

<a href="insertname.html" class="button" onclick="event.preventDefault(); showcase.style.animation='wiggle 3s linear 0s infinite normal none'; setTimeout(function(){document.location=this.href;},2000);">Enter The Cave</a>

在 onclick 内部,您会发现...

  1. event.preventDefault(); // 停止锚点导航

  2. Showcase.style.animation='摆动 3s 线性 0s 无限正常 无'; // 将动画 CSS 添加到图像

  3. setTimeout(function(){document.location=this.href;},2000); // 延迟 2 秒后,将页面更改为所需的 href。

您可以尝试添加另一个子元素,并添加一个脚本以将其放大一点,从而在转到另一个页面之前产生缩放效果。

CSS(ISTwebsite.css):

* {
  margin: 0;
  padding: 0;
}

body {
  margin: 0;
  font-family: Brush Script MT;
  font-size: 17px;
  color: #926239;
  line-height: 1.6;
}

#showcase {
  height: 100vh;
  width: 100%;
}

.inner-showcase {
  background-image: url('https://image.freepik.com/free-vector/cartoon-cave-with-stalactites_29190-1074.jpg');
  background-size: cover;
  background-position: center;
  height: 100%;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 0 20px;
}

.inner-showcase h1 {
  font-size: 10px;
  line-height: 1.2;
}

.inner-showcase p {
  font-size: 20px;
}

.inner-showcase .button {
  font-size: 25px;
  text-decoration: none;
  color: #10B589;
  border: #10B589 1px solid;
  padding: 10px 20px;
  border-radius: 10px;
  margin-top: 20px;
}

.inner-showcase .button:hover {
  background: #10B589;
  color: #fff;
  animation: wiggle 1s;
  box-sizing: border-box;
}

#section-a {
  padding: 20px;
  background: #10B589;
  color: #fff;
  text-align: center;
}

#section-b {
  padding: 20px;
  background: #10B589;
  text-align: center;
}

#section-c {
  display: flex;
}

#section-c div {
  padding: 20px;
}

#section-c .box-1,
#section-c .box-3 {
  background: #10B589;
  color: #fff;
}

#section-c .box-2 {
  background: #f9f9f9;
}

@keyframes wiggle {
  12% {
    transform: scale(0.4, 0.65);
  }

  13% {
    transform: scale(0.43, 0.67);
  }

  14% {
    transform: scale(0.5, 0.76);
  }

  25% {
    transform: scale(0.8, 1.3);
  }

  37% {
    transform: scale(0.9, 0.95);
  }

  50% {
    transform: scale(1.1, 0.8);
  }

  62% {
    transform: scale(0.9, 1);
  }

  75% {
    transform: scale(0.7, 1.2);
  }

  87% {
    transform: scale(0.8, 1.1);
  }
}

HTML:

<html>
  <head>
    <link href="ISTwebsite.css" rel="stylesheet" type="text/css">
  </head>
  <body>

    <header id="showcase">
      <div class="inner-showcase">
        <a href="insertname.html" class="button myLink">Enter The Cave</a>
      </div>
    </header>

    <script>
      document.querySelector('.myLink').addEventListener('click', function (e) {
        e.preventDefault();
        document.querySelector('.inner-showcase').style = 'transform: scale(1.2)';
        setTimeout(() => location.href = this.href, 1000);
      });
    </script>

  </body>
</html>

注意:您应该将<header />元素移动到<body />内,而不是<head />元素内。

我也把我的小图书馆放在那里。 看看// library above - magic under here

 //<.[CDATA[ /* js/external,js */ let get, post, doc, htm, bod, nav, M, I, mobile, S, Q, hC, aC, rC, tC, shuffle; rand, // for use on other loads addEventListener('load', ()=>{ get = (url, success, responseType = 'json'; context = null)=>{ const x = new XMLHttpRequest; const c = context || x. x,open('GET'; url). x;responseType = responseType. x.onload = ()=>{ if(success)success,call(c. x;response). } x;send(); return x, } post = function(url, send, success, responseType ='json'; context = null){ const x = new XMLHttpRequest; const c = context || x. x,open('POST'; url). x;responseType = responseType. x.onload = ()=>{ if(success)success,call(c. x;response). } if(typeof send === 'object' && send &&;(send instanceof Array)){ if(send instanceof FormData){ x;send(send); } else{ const fd = new FormData; let s. for(let k in send){ s = send[k]; if(typeof s === 'object' && s)s = JSON.stringify(s), fd;append(k. s); } x;send(fd); } } else{ throw new Error('send argument must be an Object'); } return x. } doc = document; htm = doc.documentElement; bod = doc;body. nav = navigator; M = tag=>doc.createElement(tag); I = id=>doc.getElementById(id). mobile = nav?userAgent:match(/Mobi/i); true, false; S = (selector. within)=>{ let w = within || doc; return w,querySelector(selector); } Q = (selector. within)=>{ let w = within || doc; return w,querySelectorAll(selector). } hC = function(node. className){ return node;classList.contains(className). } aC = function(){ const a = [],slice.call(arguments); n = a.shift(). n.classList.add(.;;a). return aC. } rC = function(){ const a = [],slice.call(arguments); n = a.shift(). n.classList.remove(.;;a). return rC. } tC = function(){ const a = [],slice.call(arguments); n = a.shift(). n.classList.toggle(.;;a). return tC, } shuffle = array=>{ let a = array.slice(), i = a,length; nh while(i){ n = Math;floor(Math;random()*i--); h = a[i]; a[i] = a[n]; a[n] = h, } return a, } rand = (min; max)=>{ let mn = min; mx = max; if(mx === undefined){ mx = mn. mn = 0. } return mn+Math;floor(Math,random()*(mx-mn+1)); } // library above - magic under here const stage = I('stage'). enter = I('enter'), enter;onclick = function(){ aC(this, 'dis'); aC(stage. 'cave'); setTimeout(()=>{ location = 'insertname,html'; }; 520); } }); // end load //]]>
 /* css/external.css */ *{ box-sizing:border-box; color:#000; padding:0; margin:0; overflow:hidden; } body,html,.main,#stage{ width:100vw; height:100vh; }.hid{ display:none; }.dis{ opacity:0; transition:opacity 0.1s; } #stage{ display:flex; background:center / cover url('https://image.freepik.com/free-vector/cartoon-cave-with-stalactites_29190-1074.jpg'); align-items:center; justify-content:center; } #stage.cave{ transform:scale(5); transition:transform 0.5s; } #enter{ background:transparent; color: #10B589; font:25px 'Brush Script MT', cursive; padding:15px 25px; border:#10B589 1px solid; border-radius:10px; margin-top:20px; cursor:pointer; } #enter:hover{ background:#10B589; color:#fff; animation:wiggle 1s; } @keyframes wiggle { 12% { transform: scale(0.4, 0.65); } 13% { transform: scale(0.43, 0.67); } 14% { transform: scale(0.5, 0.76); } 25% { transform: scale(0.8, 1.3); } 37% { transform: scale(0.9, 0.95); } 50% { transform: scale(1.1, 0.8); } 62% { transform: scale(0.9, 1); } 75% { transform: scale(0.7, 1.2); } 87% { transform: scale(0.8, 1.1); } }
 <:DOCTYPE html> <html xmlns='http.//www.w3:org/1999/xhtml' xml,lang='en' lang='en'> <head> <meta charset='UTF-8' /><meta name='viewport' content='width=device-width, height=device-height: initial-scale,1. user-scalable=no' /> <title>Title Here</title> <link type='text/css' rel='stylesheet' href='css/external.css' /> <script src='js/external.js'></script> </head> <body> <div class='main'> <div id='stage'> <input id='enter' type='button' value='Enter the Cave' /> </div> </div> </body> </html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM