【发布时间】:2018-12-17 15:10:48
【问题描述】:
当单击相应缩略图后出现主图像时,我想在此 javascript 滑块上创建平滑的不透明度更改。 我想这与在“onclick”时调用 css 代码的 javascript 有关,但我在 javascript 方面的技能让我理解了逻辑,但到目前为止我无法自己创建它,这非常令人沮丧。
我已经在我的 css 文件中添加了一个不透明动画,希望它可以是一个好的开始,它实际上可以用缩略图来解决问题,当我用箭头键在它们之间循环时,它们会获得不透明效果。
但是当通过单击缩略图或使用左/右箭头键更改主图像时,我没有设法在主图像上执行此操作。谁能帮我回答这个问题?
var lastImg = 'image1'; //Set initial thumbnail and preview
document.getElementById('image0').src = document.getElementById(lastImg).src;
document.getElementById(lastImg).className = "thumb selected";
function preview(img) {
document.getElementById(lastImg).className = "thumb normal";
img.className = "thumb selected";
document.getElementById('image0').src = img.src;
lastImg = img.id;
}
function previewOnKey(e) {
/* left key */
if (e.keyCode == 37) {
var previousImg = document.getElementById(lastImg).previousElementSibling;
if (previousImg) {
preview(previousImg);
}
}
/* right key */
if (e.keyCode == 39) {
var nextImg = document.getElementById(lastImg).nextElementSibling;
if (nextImg) {
preview(nextImg);
}
}
}
document.onkeydown = previewOnKey;
html,
body {
height: 100vh;
background: url(../images/vagues.svg);
background-repeat: no-repeat;
background-position: 1% 75%;
}
body {
padding: 0;
margin: 0;
}
.container {
height: 100vh;
display: grid;
grid-gap: 6px;
grid-template-columns: repeat(12, 1fr);
grid-template-rows: repeat(12, 1fr);
}
.nom {
display: grid;
grid-column: 3/8;
grid-row: 1;
color: #f9423ab5;
font-family: 'Montserrat';
font-size: 3.2vw;
align-self: center;
animation: couleur 8s;
}
a {
display: grid;
align-items: center;
color: black;
text-decoration: none;
font-family: helvetica;
font-size: 1.4vw;
transform: rotate(-40deg);
letter-spacing: 0.1rem;
}
.accueil {
display: grid;
grid-column: 10;
grid-row: 1;
}
.contact {
display: grid;
grid-column: 11;
grid-row: 1;
}
a:hover {
text-decoration: none;
color: coral;
}
.bigimage {
width: 61vw;
grid-column: 3/11;
grid-row: 2/5;
margin-top: 16px;
animation: opacity 2s;
}
.thumb {
width: 3vw;
height: 2vw;
margin-left: 18px;
margin-bottom: 15px;
align-self: center;
}
.thumb:hover {
cursor: pointer;
opacity: 0.1;
}
.thumbnails {
grid-column: 1/3;
grid-row: 2/5;
margin-top: 16px;
}
.normal {}
.selected {
animation: opacity 2s;
}
@keyframes opacity {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
<img id="image0" class="preview normal bigimage" />
<div class="thumbnails">
<img id="image1" class="thumb normal" src="https://placekitten.com/g/150/80" alt="image1" onclick="preview(this)" />
<img id="image2" class="thumb normal" src="https://placekitten.com/g/151/80" alt="image2" onclick="preview(this)" />
<img id="image3" class="thumb normal" src="https://placekitten.com/g/152/80" alt="image3" onclick="preview(this)" />
</div>
【问题讨论】:
-
您好 Rachel,首先感谢您对我问题的英文表述的帮助和更正,我的英语说得不像我希望的那样流利。我现在正在添加 css。
-
你为什么使用一个空的“普通”类?填充或删除它 - 它使您的代码混乱。另外,您还没有在您的 CSS 中列出一个名为 preview 的类?
-
如果你对 jquery 持开放态度(推荐),fadeIn 和 fadeOut 对于编写快速平滑过渡非常方便
-
谢谢 Rachel,“to clutter”我不知道这个动词的英文。出于两个原因,我宁愿只使用 javascript。首先是我喜欢了解我在做什么,我发现从 javascript 开始比直接使用 jquery 更有启发性。更重要的是我知道我正在建设的网站会在网速很慢的地区使用,所以如果我想为这些用户腾出时间,我想最好不要为他们加载jquery文件。
标签: javascript html css