【发布时间】:2016-11-06 10:19:54
【问题描述】:
我在 css 转换方面遇到了一点问题。在我的网站上,我有一个 div,在那个 div 中是一个 h1。
这是css代码。
#inner1 {
background-image: url("rsz_astromenu1.jpg");
height: 333px;
width: 500px;
display: inline-block;
opacity: 0.5;
font-size: 10px;
}
#inner1:hover {
font-size: 50px;
transition: font-size 1s linear;
opacity: 1;
transition: opacity 1s linear;
}
我想为不透明度(从 0.5 到 1)和字体大小(从 10 像素到 50 像素)设置动画。 但是,当我将鼠标悬停在该 div 上时,不透明度会很好地过渡,但文本只会立即改变大小。所以悬停似乎起作用并改变了字体大小,为什么省略了过渡?
如果我将其设为#inner1 h1:hover,则过渡效果正常,但仅当我将鼠标悬停在文本上时。当我将鼠标悬停在该 div 上时,我想要字体大小的转换。
我试图解决这个问题并编写了一个用于放大文本的 JS 脚本。
这就是我想出的。由于内容不多,我也会粘贴所有 HTML 内容。
然而,这并不是很顺利,我已经达到了每毫秒只增加 0.09px 的程度,但它仍然看起来很颠簸,并且还会向浏览器发送数百个不必要的命令,对吧?
我该如何解决这个问题?使用 CSS 还是 JS? 在此先感谢 ;)。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Gallery</title>
<link rel="stylesheet" type="text/css" href="mainStyle.css">
</head>
<body>
<div id="outer">
<div id="middle">
<div id="inner1" class="hover-menu">
<h1 id="astro-h1" class="hover-menu">Astrofotografia</h1>
</div>
<div id="inner2"></div>
</div>
</div>
<script>
var JSinner1 = document.getElementById("inner1");
var JSastroh1 = document.getElementById("astro-h1")
JSastroh1.style.fontSize = "16px";
var textBigger = function() {
var newSize = parseFloat(JSastroh1.style.fontSize) + 0.009 + "px";
window.setInterval(textBigger, 1)
if (parseFloat(newSize) < 60) {
JSastroh1.style.fontSize = newSize;
console.log(newSize);
}
}
JSinner1.addEventListener("mouseover", textBigger)
</script>
</body>
</html>
【问题讨论】:
标签: javascript html css