HTML 无法识别 JavaScript

标签 javascript html css animation

我有一个 javascript 函数,应该使段落中的字母来自底部而不是淡入淡出,但是当我将其插入 html 中时,它只显示纯文本...该函数应该可以工作,我认为我做错了什么将其调用为 html 。我尝试设置动画的文本是标题“文本就是文本”中的文本。

主要 HTML 代码

<link rel="stylesheet" href="javascript/javascripit.js">
<link rel="stylesheet" type="text/css" href="css/navbar.css"> 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" />
    <link rel="stylesheet" type="text/css" href="css/utilities.css">


</head>
<body>
    <!-- Navbar -->
    
    <div class ="main">
        <div class="navbar ">
        
          <div class="container flex lead ">
            <nav>
                <ul>
                    <li><a href="#">Acasa</a></li>
                    <li><a href="features.html">Proiecte</a></li>
                    <li><a href="docs.html">Recenzii</a></li>
                </ul>
            </nav>
            <div>
                <h1 class="ml7">
                    <span class="text-wrapper">
                      <span class="letters">Text is text</span>
                    </span>
                  </h1>
                  
                  <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>
                  
            </div>
            <div class="social sm">
                <a href="#"><i class="fab fa-facebook fa-2x"></i></a>
                <a href="#"><i class="fab fa-instagram fa-2x"></i></a>
                <a href="#">Contact</a>
            </div>
        </div>
    </div>
</div>
</body>
</html>

CSS 代码 + 实用程序

.navbar {
  background-color: var(--primary-color);
  color: #fff;
  
  min-height: 80px; 
  position: sticky; 
  top: 0; 
}
.navbar ul {
  display: flex;
  flex-direction: row;
  flex-grow:1;
}

.navbar a {
  color: #fff;
  padding: 10px;
  margin: 0 2px;
}


.navbar a:hover {
  border-bottom: 2px #fff solid;
}

.navbar .flex {
  justify-content:space-between;
}
.navbar .social a{

  margin: 0 2px;
  flex-grow:1;
}
.navbar .social > *:nth-child(3){
  font-size: 28px;
  
}
.ml7 {
  position: relative;
  font-weight: 900;
  font-size: 3.7em;
}
.ml7 .text-wrapper {
  position: relative;
  display: inline-block;
  padding-top: 0.2em;
  padding-right: 0.05em;
  padding-bottom: 0.1em;
  overflow: hidden;
}
.ml7 .letters {
  transform-origin: 0 100%;
  display: inline-block;
  line-height: 1em;
}
.container {
  max-width: 1400px;
  margin: 0 auto;
  overflow: auto;
  padding: 0 40px;
  align-self: start;
  
}
.main {
  min-height: 100vh; /*add*/
  height: 3000px; /*this is a test rule*/
}

.card {
  background-color: #fff;
  color: #333;
  border-radius: 10px;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
  padding: 20px;
  margin: 10px;
}

以及 JavaScript 函数

var textWrapper = document.querySelector('.ml7 .letters');
textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "<span class='letter'>$&</span>");

anime.timeline({loop: true})
  .add({
    targets: '.ml7 .letter',
    translateY: ["1.1em", 0],
    translateX: ["0.55em", 0],
    translateZ: 0,
    rotateZ: [180, 0],
    duration: 750,
    easing: "easeOutExpo",
    delay: (_el, i) => 50 * i
  }).add({
    targets: '.ml7',
    opacity: 0,
    duration: 1000,
    easing: "easeOutExpo",
    delay: 1000
  });

最佳答案

您的 HTML 尝试加载您的 Javascript,就好像它是样式表一样。查看您的浏览器开发工具,您可能会在 Javascript 控制台中看到错误。使用<script src="whatever.js"></script>加载脚本。在你的情况下,这可能是:

<script src="javascript/javascripit.js"></script> /*mis-spelled name?? */

而且,您在评论中询问了将 < script></script> 放在哪里标签。许多人将它们放在 HTML 页面的末尾,紧邻 </body> 之前。标签。这使得浏览器可以在获取 Javascript 代码之前获取渲染页面所需的图像对象,并提供更好的用户体验。

无论您将 <script></script> 放在哪里标签、像您这样操作页面文档对象模型 (DOM) 的 Javascript 代码应该作为 the DOMContentLoaded event 的事件处理程序运行。 。换句话说,将您的 Javascript 封装在其中。

document.addEventListener('DOMContentLoaded', (event) => {
    /* all your Javascript goes here */
});

这样它就不会在页面加载之前运行。如果您不这样做,并且您的 Javascript 恰好在 HTML 完全加载之前运行,那么您的 .querySelector()操作可能会返回 null,导致您的 Javascript 失败。

浏览器尝试并行执行许多操作,以加快点击到页面可见的时间。

关于HTML 无法识别 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65550217/

相关文章:

javascript - 是否可以使用单个 Node.js 服务器文件来提供 HTML 页面并处理来自该页面的 POST 请求?

php - 如何从 php 中分离样式 (css+html)

html - 在 Owl-carousel 中,隐藏了 border-radius 和 overflow 的父 div 中的图像不起作用

css - float DIV 列错位

javascript - 滚动小图像及其内容

javascript - 最小示例 : Opening a window in electron from react application?

javascript - 如何在 js 文件中轻松找到所需的 jquery 函数?

javascript - Angular 2.0 表单回调和逻辑问题

javascript - 如何在 <v-treeview> Vuetify 中添加新节点

html - 对齐 div 中的 li 元素