国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分享一個403界面給大家

這篇具有很好參考價值的文章主要介紹了分享一個403界面給大家。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

先看效果圖(說明:小鬼影會飄來飄去,長時間停留會有小驚喜,具體大家跑一下就知道):
分享一個403界面給大家
代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>403頁面</title>
  <style>
    @import url('https://fonts.googleapis.com/css?family=Open+Sans|Nova+Mono');
    :root {
      --font-header: 'Nova Mono', monospace;
      --font-text: 'Open Sans', sans-serif;
      --color-theme: #F1EEDB;
      --color-bg: #282B24;

      --animation-sentence: '你知道你應(yīng)該離開,對吧?';
      --animation-duration: 40s;
    }
    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }
    body {
      width: 100%;
      font-family: var(--font-text);
      color: var(--color-theme);
      background: var(--color-bg);
      overflow: hidden;
    }
    .container {
      text-align: center;
      margin: 1rem 0.5rem 0;
    }
    .container h1 {
      font-family: var(--font-header);
      font-size: calc(4rem + 2vw);
      text-transform: uppercase;
    }
    .container p {
      text-transform: uppercase;
      letter-spacing: 0.2rem;
      font-size: 2rem;
      margin: 1.5rem 0 3rem;
    }
    svg.keyhole {
      height: 82px;
      width: 82px;
      opacity: 0;
      visibility: hidden;
      /* 為鑰匙孔定義一個動畫,以引入默認(rèn)情況下暫停的動畫,在JavaScript中超時運(yùn)行*/
      animation: showKey 0.5s 0.5s paused ease-out forwards;
    }
    svg.key {
      height: 164px;
      width: 164px;
      position: absolute;
      opacity: 0;
      visibility: hidden;
      /* 為鑰匙孔定義一個動畫,以引入默認(rèn)情況下暫停的動畫,在JavaScript中超時運(yùn)行*/
      animation: showKey 0.5s 0.5s paused ease-out forwards;
    }
    .ghost {
      /* border: 1px solid tomato; */
      position: absolute;
      bottom: 5px;
      left: calc(50% - 100px);
      width: 200px;
      height: 200px;
      /* 讓鬼影移動到屏幕的右側(cè)和左側(cè),轉(zhuǎn)到其中心位置并重復(fù)動畫兩次 */
      animation: hoverGhost calc(var(--animation-duration)/2) ease-in-out 2;

    }
    /* 通過連接到動畫div的偽元素引入文本 */
    .ghost:before {
      content: var(--animation-sentence);
      color: var(--color-theme);
      border-radius: 50%;
      position: absolute;
      bottom: 100%;
      text-align: center;
      line-height: 2;
      padding: 1rem;
      visibility: hidden;
      opacity: 0;
      /* 當(dāng)鬼影從屏幕右邊緣返回時,引入每一個文本字符串,以及覆蓋中心部分所需的時間長度(第四個字符串,由于動畫長度是總持續(xù)時間的一半,因此變?yōu)榘藗€字符串)
      /* 假設(shè)持續(xù)時間為40秒的情況下,第一個延遲為7.5秒,第二個延遲為27.5秒,最后一個延遲為40秒,經(jīng)過運(yùn)算,可以歸結(jié)為316、2740和1
      // 記得在鑰匙和鑰匙孔的動畫中加入一點(diǎn)延遲
      */
      animation:
              showText calc(var(--animation-duration)/8) calc(var(--animation-duration)*3/16) ease-out forwards,
              showNewText calc(var(--animation-duration)/8) calc(var(--animation-duration)*27/40) ease-out forwards,
              showFinalText calc(var(--animation-duration)/8) var(--animation-duration) ease-out forwards;

    }

    /* 定義關(guān)鍵幀動畫-懸停鬼影使鬼影向右、向左移動,然后返回到其默認(rèn)位置
    -showKey將鑰匙(和鑰匙孔)svg引入視圖
    -showText、showNewText、showFinalText顯示不同的字符串*/
    @keyframes hoverGhost {
      25% {
        transform: translateX(20vw);
      }
      75% {
        transform: translateX(-20vw);
      }
    }

    @keyframes showKey {
      to {
        opacity: 1;
        visibility: visible;
      }
    }

    /* 更改文本,更改自定義屬性的值,厭倦了在隱藏偽元素時更改其值,以及在最后一個關(guān)鍵幀中更改其值(因為動畫根據(jù)填充模式屬性的“向前”值給出該值)*/
     @keyframes showText {
      2% {
        opacity: 1;
        visibility: visible;
      }
      98% {

        opacity: 1;
        visibility: visible;
      }
      99% {
        --animation-sentence: '你知道你應(yīng)該離開,對吧?';
        opacity: 0;
        visibility: hidden;
      }
      100% {
        --animation-sentence: '這么多事情要做,這么少時間...';
      }
    }
    @keyframes showNewText {
      2% {
        --animation-sentence: '這么多事情要做,這么少時間...';
        opacity: 1;
        visibility: visible;
      }
      98% {

        opacity: 1;
        visibility: visible;
      }
      99% {
        --animation-sentence: '這么多事情要做,這么少時間...';
        opacity: 0;
        visibility: hidden;
      }
      100% {
        --animation-sentence: '好吧,你似乎很關(guān)心這個.這是一把只給你的鑰匙..';
      }
    }
    @keyframes showFinalText {
      2% {
        opacity: 1;
        visibility: visible;
      }
      98% {
        opacity: 1;
        visibility: visible;
      }
      100% {
        opacity: 0;
        visibility: hidden;
      }
    }
  </style>
</head>
<body>
<!-- 包括在項目中使用的svg -->
<svg style="display: none;">
  <symbol id="keyhole" xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 26.458333 26.458334"><g transform="translate(0 -270.542)"><circle cx="13.229" cy="279.141" r="8.599" fill="#f1eedb" paint-order="stroke fill markers"/><path d="M10.516 283.271h5.427c1.164 0 1.768.861 2.102 1.802l3.59 10.125c.334.94-.937 1.802-2.102 1.802H6.926c-1.165 0-2.437-.861-2.103-1.802l3.59-10.125c.334-.94.938-1.802 2.103-1.802z" fill="#f1eedb" paint-order="stroke fill markers"/><circle r="6.06" cy="279.141" cx="13.229" fill="#282b24" paint-order="stroke fill markers"/><path d="M11.502 283.76h3.455c.741 0 1.126.733 1.338 1.534l2.286 8.614c.213.8-.597 1.534-1.338 1.534H9.216c-.742 0-1.551-.733-1.339-1.534l2.286-8.614c.212-.8.597-1.534 1.339-1.534z" fill="#282b24" paint-order="stroke fill markers"/></g></symbol>
  <symbol id="key" xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 26.458333 26.458334"><circle cx="13.229" cy="279.141" r="8.599" paint-order="stroke fill markers" transform="matrix(0 -.76923 .7499 0 -202.882 23.405)" fill="#f1eedb"/><circle r="8.599" cy="279.141" cx="13.229" paint-order="stroke fill markers" transform="matrix(0 -.5887 .57392 0 -153.756 21.017)" fill="#282b24"/><path fill="#f1eedb" paint-order="stroke fill markers" d="M12.03 12.13h14.428v2.2H12.03z"/><path fill="#f1eedb" paint-order="stroke fill markers" d="M18.147 12.13h2.895v6.772h-2.895zM22.113 12.13h2.716v5.065h-2.716z"/></symbol>
  <symbol id="ghost" xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 26.458333 26.458334"><g transform="translate(0 -270.542)"><path d="M4.63 279.293c0-4.833 3.85-8.751 8.6-8.751 4.748 0 8.598 3.918 8.598 8.75H13.23zM4.725 279.293h16.914c.052 0 .19.043.19.096l-.095 14.329c0 .026-.011.05-.028.068a.093.093 0 0 1-.067.028c-.881 0-1.235-1.68-2.114-1.616-.995.072-1.12 2.082-2.114 2.154-.88.064-1.233-1.615-2.115-1.615-.881 0-1.233 1.615-2.114 1.615-.881 0-1.233-1.615-2.114-1.615-.882 0-1.236 1.679-2.115 1.615-.994-.072-1.12-2.082-2.114-2.154-.88-.063-1.41 1.077-2.114 1.616-.021.016-.05-.01-.067-.028a.097.097 0 0 1-.028-.068v-14.33c0-.052.042-.095.095-.095z" fill="#f1eedb" paint-order="stroke fill markers"/><path d="M15.453 281.27a1.987 1.94 0 0 1-.994 1.68 1.987 1.94 0 0 1-1.987 0 1.987 1.94 0 0 1-.994-1.68h1.988z" fill="#282b24" paint-order="stroke fill markers"/><g fill="#282b24" transform="matrix(1 0 0 1.0177 .283 -5.653)"><ellipse cx="10.205" cy="278.668" rx="1.231" ry="1.181" paint-order="stroke fill markers"/><ellipse ry="1.181" rx="1.231" cy="278.668" cx="16.159" paint-order="stroke fill markers"/><ellipse ry=".331" rx=".853" cy="280.936" cx="10.205" opacity=".5" paint-order="stroke fill markers"/><ellipse cx="16.159" cy="280.936" rx=".853" ry=".331" opacity=".5" paint-order="stroke fill markers"/></g><ellipse ry=".614" rx="8.082" cy="296.386" cx="13.229" opacity=".1" fill="#f1eedb" paint-order="stroke fill markers"/></g></symbol>
</svg>

<!-- 在一個容器中包括一個標(biāo)題、段落和鎖眼的svg -->
<div class="container">
  <h1>403</h1>
  <p>access not granted</p>
  <svg class="keyhole">
    <use href="#keyhole"/>
  </svg>
</div>

<!-- 在容器外部,使它們相對于主體絕對定位,包括一個用于鑰匙的svg和一個用于鬼影的svg -->
<svg class="key">
  <use href="#key"/>
</svg>

<!--
  將svg嵌套在div中,為svg和div提供相同的類div和svg在通過transform屬性轉(zhuǎn)換元素時表現(xiàn)不同,
  從而在文本(包含在div上的偽元素中)和svg之間提供了很好的距離
-->
<div class="ghost">
  <svg class="ghost">
    <use href="#ghost"/>
  </svg>
</div>
</body>
<script>
  // 以項目中使用的DOM中的元素為目標(biāo)

  /**
   * 鑰匙和鑰匙孔的svg
   * 標(biāo)題和段落
   */
  const key = document.querySelector(".key");
  const keyhole = document.querySelector(".keyhole");
  const ghost = document.querySelector(".ghost");

  const heading = document.querySelector("h1");
  const paragraph = document.querySelector("p");

  // 對于timout的長度,請考慮--animation-duration自定義屬性,并在根元素上添加一個小延遲檢索屬性
  const root = document.querySelector(":root");
  const rootStyles = getComputedStyle(root);

  // 檢索動畫持續(xù)時間自定義屬性
  // 這被指定為“40s”,以秒為單位,因此解析數(shù)字并以毫秒為單位將其包括在內(nèi)
  const animationDuration = parseInt(rootStyles.getPropertyValue("--animation-duration"))*1000;
  let keyTimer = animationDuration*9/8;

  // 檢索鑰匙的尺寸(使鑰匙正好位于光標(biāo)所在的位置)
  const keyBox = key.getBoundingClientRect();
  // console.log(keyBox);

  // 鑰匙和鑰匙孔動畫
  // 在指定的時間范圍內(nèi)包括超時
  const timeoutID = setTimeout(() => {
    // 在指定的時間后,將光標(biāo)更改為似乎抓住了鑰匙
    key.parentElement.parentElement.style.cursor = "grab";

    // 通過觸發(fā)默認(rèn)情況下暫停的動畫,引入鑰匙和鑰匙孔svg元素
    key.style.animationPlayState = "running";
    keyhole.style.animationPlayState = "running";

    // 將鑰匙上的指針事件設(shè)置為none,以允許在鑰匙孔上發(fā)生鼠標(biāo)懸停事件
    // 鑰匙實際上是代替普通光標(biāo)使用的,并且會重疊在所有內(nèi)容的頂部
    key.style.pointerEvents = "none";

    // 當(dāng)光標(biāo)懸停在窗口中的任何位置時,調(diào)用一個函數(shù)來更新鑰匙的位置并使其與光標(biāo)匹配
    window.addEventListener("mousemove", updateKeyPosition);

    // 當(dāng)光標(biāo)懸停在鑰匙孔上時,調(diào)用一個函數(shù)來授予訪問權(quán)限并刪除當(dāng)前偵聽器
    keyhole.addEventListener("mouseover", grantAccess);

    clearTimeout(timeoutID);
  }, keyTimer);


  // 定義根據(jù)鼠標(biāo)坐標(biāo)(以及鑰匙自身的尺寸)更新絕對定位鑰匙的位置的功能
  const updateKeyPosition = (e) => {
    let x = e.clientX;
    let y = e.clientY;
    key.style.left = x - keyBox.width/1.5;
    key.style.top = y - keyBox.height/2;
  };

  // 定義通知用戶授予訪問權(quán)限的功能
  const grantAccess = () => {

    // 恢復(fù)光標(biāo)
    key.parentElement.parentElement.style.cursor = "default";

    // 更改標(biāo)題和段落元素的文本
    heading.textContent = '?? yay ??';
    paragraph.textContent = 'access granted';

    // 從文檔流中刪除鑰匙和鑰匙孔的svg元素
    keyhole.style.display = "none";
    key.style.display = "none";

    // 刪除事件偵聽器,尤其是窗口上的偵聽器
    window.removeEventListener("mousemove", updateKeyPosition);
    keyhole.removeEventListener("mouseover", grantAccess);
  };

</script>
</html>

PS:發(fā)現(xiàn)我用文字寫太生硬了,干的噎嗓子,干脆在代碼里加注釋了。文章來源地址http://www.zghlxwxcb.cn/news/detail-459806.html

到了這里,關(guān)于分享一個403界面給大家的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 這幾個ai寫作生成器分享給大家

    這幾個ai寫作生成器分享給大家

    大家知道嗎,現(xiàn)在市場有許多ai寫作軟件,它們已經(jīng)能夠模仿人類的寫作風(fēng)格,幫大家輕松地生成文章。我對于非常感興趣,于是就上網(wǎng)查了一下有可以ai寫作的軟件嗎?結(jié)果真的找到幾款不錯的軟件,今天借這個機(jī)會我將它們分享給你。 以下是今天分享的ai寫作軟件 一:A

    2024年02月15日
    瀏覽(64)
  • 必做的高收益自媒體平臺,分享給大家

    必做的高收益自媒體平臺,分享給大家

    現(xiàn)在市面上的自媒體平臺是非常多的,大大小小加起來也有30好幾個,但是要說到哪些平臺收益比較高,那就不得不提到下面這個幾個主流平臺,今天就給大家分享一下收益比較高的幾個主流平臺。 第一個:百家號 百家號平臺目前的收益單價在眾多自媒體平臺來說真的算是非

    2024年02月12日
    瀏覽(20)
  • 微軟文字轉(zhuǎn)語音不能試用了,分享三個方法給大家!

    微軟文字轉(zhuǎn)語音不能試用了,分享三個方法給大家!

    最近很多小伙伴告訴我,微軟文字轉(zhuǎn)語音不能在線試用了,這是因為微軟關(guān)閉了官方的使用頁面,所以現(xiàn)在不能直接使用微軟的網(wǎng)頁版進(jìn)行文字轉(zhuǎn)語音了。 那么我們還有沒有更好的方法去“白嫖”微軟的文字轉(zhuǎn)語音呢? 答案是肯定的,今天再給大家分享三個可以白嫖微軟文

    2024年02月11日
    瀏覽(19)
  • 分享幾個源碼網(wǎng)站奉獻(xiàn)給大家(持續(xù)更新中……)

    1.51源碼: http://www.51aspx.com/ 2.源碼之家: http://www.codejia.com/ 3.源碼網(wǎng): http://www.codepub.com/ 4.蝦客源碼: http://www.xkxz.com/ 5.多多源碼: http://www.morecode.net/ 6.洪越源代碼: http://www.softhy.net/ 7.鋒網(wǎng)源碼:http://www.fwvv.net/ 8.代碼愛好者:http://www.codefans.com/ 9.愛源碼:http://www.aiyuanma

    2024年01月16日
    瀏覽(27)
  • 如何從視頻中提取音頻?分享三個免費(fèi)的方法給大家!

    如何從視頻中提取音頻?分享三個免費(fèi)的方法給大家!

    在數(shù)字時代,視頻和音頻的使用越來越廣泛。有時,您可能希望從視頻中提取音頻,以便單獨(dú)使用或與他人分享。無需購買昂貴的軟件或具備專業(yè)技能,下面將介紹三種免費(fèi)的方法,幫助您從視頻中提取音頻。這些方法簡單易行,適用于任何人。 方法一:使用剪映 剪映是一

    2024年02月06日
    瀏覽(39)
  • 免費(fèi)分享一些Open Ai的key,供大家使用

    誰創(chuàng)造了ChatGPT? ChatGPT由人工智能和研究公司OpenAI創(chuàng)建。該公司于2022年11月30日發(fā)布推出了ChatGP OpenAI還負(fù)責(zé)創(chuàng)建流行的畫圖模型DALL-E和自動語音識別系統(tǒng)Whisper。 ChatGPT官方的運(yùn)營成本大概是多少? GPT-3 訓(xùn)練一次的成本約為 140 萬美元。 對于一些更大的 LLM(大型語言模型),

    2024年02月05日
    瀏覽(21)
  • 免費(fèi)使用微軟Azure進(jìn)行文字轉(zhuǎn)語音!分享三個方法給大家!

    免費(fèi)使用微軟Azure進(jìn)行文字轉(zhuǎn)語音!分享三個方法給大家!

    作為一個短視頻制作的愛好者,使用了非常多的文字轉(zhuǎn)語音工具,其中最接近真人發(fā)聲的還是微軟的文字轉(zhuǎn)語音工具,這也是目前非常多的自媒體制作者在使用的文字轉(zhuǎn)語音工具,目前有21種發(fā)聲角色可以選擇,而且可以自己挑整語速以及音調(diào)等功能,所以今天就給大家分享

    2024年02月01日
    瀏覽(29)
  • 遲到的秋招經(jīng)驗分享貼,希望能幫到大家

    遲到的秋招經(jīng)驗分享貼,希望能幫到大家

    ????? 由于畢業(yè)之前各種各樣的事情,去年的秋招經(jīng)驗一直沒有整理分享,現(xiàn)在趁周末盡可能多的將之前的資料整理一下,方便各位找工作的師弟師妹們參考,也算將自己的一點(diǎn)點(diǎn)經(jīng)驗分享給大家,希望能幫到大家。 (1) 一定要學(xué)會抱團(tuán)取暖 。 ????? 各位同學(xué)身邊肯定

    2023年04月08日
    瀏覽(17)
  • cajviewer怎么轉(zhuǎn)換成pdf格式,分享幾個方法給大家!

    cajviewer怎么轉(zhuǎn)換成pdf格式,分享幾個方法給大家!

    CAJViewer是一款常用的文獻(xiàn)閱讀軟件,它主要用于打開和閱讀中國知網(wǎng)等數(shù)據(jù)庫中的CAJ格式文件。然而,有時候我們可能需要將這些CAJ文件轉(zhuǎn)換為PDF格式,以便更方便地與他人分享或者進(jìn)行打印。本文將介紹兩到三種將CAJViewer文件轉(zhuǎn)換為PDF格式的方法,其中之一是使用記靈在線

    2024年02月08日
    瀏覽(48)
  • 今天跟大家分享好用的智能ai繪畫免費(fèi)軟件有哪些

    今天跟大家分享好用的智能ai繪畫免費(fèi)軟件有哪些

    在教學(xué)的時候配合進(jìn)行ai繪畫操作來講解日常的知識,可以幫助學(xué)生更好的理解,比如在講解化學(xué)反應(yīng)的時候,我們可以通過文字描述反應(yīng)的化學(xué)式和反應(yīng)過程,但是這可能會讓學(xué)生感到無趣和枯燥,知識沒辦法真正的進(jìn)入大腦。而如果借助ai繪畫的軟件,我們可以將反應(yīng)的過

    2024年02月12日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包