我写了一个Javascript,触发了一个人与图像进行交互,但是我在处理我遇到的问题时遇到了一些困难。请看一下:)
以下是Javascript编写的内容:
1)当人打开页面时,他们看到的只是一组图像
2)当光标/鼠标悬停在图像 2a) info
文字fadesIn
的底部和右侧(.rotate
)图片, 2b) grayscale
效果从100%
降低到10%
, 2c) .detail
fadesIn
位于页面右下角的固定位置
3)所有图片都与一个数字相关联。然后使用该数字使得每个图像可以具有其自己的内容& text / position:
/ color:
/ etc。
以下是我面临的问题:
1)当图像的位置设置为bottom
时,当光标悬停在图像上时,图像会向上移动。
2)在悬停时,当光标悬停在图像文本上时,由于某种原因,它会反复fadesIn
和fadesOut
。
3)如何将.detail
设置为所有图片的页面bottom
right
?
4)图像编号(设置为.rotate
)如何放置在图像外部并从图像高度垂直居中?
以下是视觉/功能参考的jsfiddle:jsfiddle
提前谢谢!
JS
$('.targetDiv').hide();
$('.show').mouseover(function () {
$('.targetDiv').hover();
$('.info' + $(this).attr('target')).fadeIn();
});
$('.show').mouseout(function () {
$('.targetDiv').fadeOut();
$('.info' + $(this).attr('target')).fadeOut();
});
HTML
<div class="show" id="subject01" target="01">
<div class="frontpage-img-wrap">
<img src="http://i61.tinypic.com/fw3tpc.jpg" width="250" height="auto" alt="" />
</div>
<div class="targetDiv info01">
<h2>Name</h2>
<h4>Text</h4>
<p class="rotate">Image Number</p>
<p class="detail">Image Detail
<br/>Detail
<br/>More Detail.</p>
</div>
</div>
<!-- END 01 -->
<div class="show" id="subject02" target="02">
<div class="frontpage-img-wrap">
<img src="http://i59.tinypic.com/ogeybn.jpg" width="150" height="auto" alt="" />
</div>
<div class="targetDiv info02">
<h2>Name</h2>
<h4>Text</h4>
<p class="rotate">Image Number</p>
<p class="detail">Image Detail
<br/>Detail
<br/>More Detail.</p>
</div>
</div>
<!-- END 02 -->
CSS
*, html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, label, fieldset, input, p, blockquote, th, td {
margin:0;
padding:0
}
fieldset, img {
border:0
}
h1, h2, h3, h4, h5, h6 {
font-size:100%;
font-weight:normal
}
a img {
border:none
}
p, li h2, body, h4, h4 a {
font-family:"Courier New", Courier, monospace;
font-size: 12px;
line-height: 18px;
font-weight: normal;
letter-spacing: 1px;
overflow-x: hidden;
}
h2 {
font-family:"Apercu Bold", sans-serif;
text-transform: uppercase;
font-weight: bold;
letter-spacing: 2px;
font-size: 11px;
text-align: center;
}
h4 {
text-transform: uppercase;
text-align: center;
}
a {
color: red;
text-decoration: none;
}
header a:hover {
border-bottom: 1px solid;
}
.frontpage-img-wrap, .img-placeholder, .image-wrapper-inner {
margin: 0 0 18px;
}
.entry {
text-align: center;
position: absolute;
}
.frontpage-img-wrap {
position: relative;
}
.frontpage-img-wrap img {
margin: 0;
display: block;
}
.rotate {
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
position: absolute;
right: -45px;
top:50%;
font-size: 12px;
line-height: 18px;
font-family: monospace;
letter-spacing: 1px;
margin: 0;
}
.frontpage-img-wrap {
display:block;
}
#subject01 {
left: 50px;
top: 50px;
position: fixed;
}
#subject02 {
right: 50px;
bottom: 100px;
position: fixed;
}
h6 {
position: fixed;
top:40%;
margin: 0 auto;
text-align: center;
font-family: helvetica;
font-size: 100px;
font-weight: bold;
font-style: normal;
}
答案 0 :(得分:1)
我真的建议使用纯CSS。 JS只会使它复杂化:
.targetDiv { opacity: 0; transition: opacity 0.5s linear; }
.frontpage-img-wrap:hover + .targetDiv { opacity: 1; }
所以不要hide()
(创建display: none;
)你的文字,但只是将不透明度降为0,设置一个过渡(对于那个漂亮的淡入淡出效果......确保使用供应商前缀使用transition
),然后只要.frontpage-img-wrap
悬停,就将不透明度提高到1。
至于你的底部对齐元素:这是因为$('.targetDiv').hide();
(翻译display: none;
)在悬停时弹出...它需要保持大小。做我的CSS技巧只是关闭不透明度将让文本保持其大小。但是如果你必须使用JS,你需要设置整个.show
元素的大小,这样它就不会在悬停时调整大小。
答案 1 :(得分:1)
您只能使用CSS解决所有问题JSBin here
新CSS
.rotate {
display:block;
position:absolute;
font-size: 12px;
line-height: 18px;
font-family: monospace;
letter-spacing: 1px;
margin: 0;
text-align: center;
top:45%;
left:95%;
height:18px;
visibility: hidden;
opacity:0;
-webkit-transition: all 250ms linear;
-o-transition: all 250ms linear;
transition: all 250ms linear;
transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
.targetDiv {
position:absolute;
width:100%;
visibility: hidden;
opacity:0;
-webkit-transition: all 250ms linear;
-o-transition: all 250ms linear;
transition: all 250ms linear;
}
.show:hover .targetDiv {
visibility: visible;
opacity:1;
}
.show:hover .rotate {
visibility: visible;
opacity:1;
}
HTML更改
<p class="rotate"> ... </p>
中取出targetDiv
并将其移至frontpage-img-wrap
备注强>
position:absolute;width:100%
解决了位于底部的div跳跃悬停
淡入/淡出效果通过转化opacity
和visibility
更容易调试,因为您现在可以在开发人员工具中使用:hover
状态
旋转位置不准确 - 您可能需要使用JS计算图像高度,然后将旋转div的高度设置为图像宽度