0

大家好。

我有这个代码:

在这里提琴

<div class="fl edit_options div_img">
<img class="img" src="${admin.img}" width="200px" height="200px" alt="Foto do Administrador" />
<div class="input_photo dropdowndiv"> <span>Alterar Foto</span>

    <br />
    <input type="file" name="file_photo" id="file_photo" value="Alterar Foto" />
</div>
<br />
<p>Administrador: ${admin.username}</p>

jQuery

$('.dropdowndiv').hide();
        $('.div_img').hover(function() {
            $(this).find('.dropdowndiv').slideUp('fast');
        }, function() {
            $(this).find('.dropdowndiv').slideDown('fast');
        });

CSS:

    html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
    outline: none;
    text-decoration: none;
}
/* HTML5 display-role reset for older browsers */
 article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
    display: block;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after, q:before, q:after {
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}
.fl {
    float: left;
}
.edit_options {
    margin: 50px;
}
.div_img {
    position: relative;
    margin-right: 0px;
    padding-left: 0px;
}
.edit_admin img, .edit_admin p {
    text-align: center;
}
.input_photo {
    position: absolute;
    width: 200px;
    height: 54px;
    bottom: 20px;
    background: rgba(170, 173, 168, 0.9);
    display: table;
}
.input_photo span {
    height: 54px;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
    color: #000000;
}
.input_photo input {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 200px;
    height: 54px;
    z-index: 2;
    opacity: 0;
    filter: alpha(opacity=0);
    cursor: pointer;
}

如您所见,它没有按应有的方式工作,即在将鼠标悬停在图像上时显示 div。

我也相信我做的方式,太污染了。我相信在这种情况下有一种更优雅的方法可以达到相同的结果,我希望得到您的帮助。

我想小小姐。如果有人有一个插件可以让 jquery 上传照片,它会向我显示一个屏幕,用预定义的尺寸(200x200)调整图像的大小并在接受时进行剪切,将非常感激。

感谢。

4

3 回答 3

2

您已切换事件

  • slideDown 表示显示
  • slideUp 意味着隐藏。

你把它们颠倒了

    $('.div_img').hover(function() {
        $(this).find('.dropdowndiv').slideDown('fast');
    }, function() {
        $(this).find('.dropdowndiv').slideUp('fast');
    });

动画不会发生,因为.input_photo { display: table; }那是因为 jQuery 无法为表格设置动画。如果您设置块元素的类型,您会看到它的动画效果很好。

于 2013-06-11T17:23:54.497 回答
0

解释

。徘徊()

.hover( handlerIn(eventObject), handlerOut(eventObject) )

当光标进入时,您希望文本向下滑动,因此它会出现。调用slideUp()只是使浏览器尝试隐藏div已经隐藏的内容


解决方案

尝试反转您的功能:

JavaScript/JQuery

$('.dropdowndiv').hide();
$('.div_img').hover(function() {
    $(this).children('.dropdowndiv').slideDown('fast');
}, function() {
    $(this).children('.dropdowndiv').slideUp('fast');
});

http://jsfiddle.net/lun471k/aQZ7Q/2/

于 2013-06-11T17:25:30.050 回答
0

假设您在鼠标移过照片区域时尝试显示上传选项,那么以下应该修复它。

$('.dropdowndiv').hide();
$('.div_img').hover(function() {
    $('.dropdowndiv').slideDown('fast');
}, function() {
    $('.dropdowndiv').slideUp('fast');
});
于 2013-06-11T17:26:02.547 回答