悬停上的Jquery图像生成输入类型文件

时间:2016-02-08 08:31:27

标签: html css

当我将图标显示在图像上时。但我想显示像这样的图标

当我点击时,它应该允许浏览像这样的文件 enter image description here

<input type ='file'>

我该怎么做?

我尝试将文件标记放到所有文件标签上,但它没有用。我怎么能这样做?

.profile-img-container {
  position: absolute;
  width:50%;
}

.profile-img-container img:hover {
  opacity: 0.5;
  z-index: 501;
}

.profile-img-container img:hover + i {
  display: block;
  z-index: 500;
}

.profile-img-container i {
  display: none;
  position: absolute;
  margin-left:43%;
  margin-top:40%;
}

.profile-img-container img {
  position:absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" />
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>

<div class="profile-img-container">
  <img src="http://s3.amazonaws.com/37assets/svn/765-default-avatar.png" class="img-thumbnail img-circle img-responsive" />
  <i class="fa fa-upload fa-5x"></i>
</div>

Fiddle

2 个答案:

答案 0 :(得分:5)

您应该在代码中添加一个输入文件,但是使其不可见,然后您可以使用jQuery进行文件浏览。

<强> HTML:

<input id='uploadfile' type ='file'>

<强> JS:

$('.profile-img-container img').click(function(){
    $('#uploadfile').click();
});

<强> Working Fiddle

未来问题的第二种方式:

<input id='uploadfile' type ='file'>

input#uploadfile {
    width: 200px;
    height: 200px;
    background: url('http://s3.amazonaws.com/37assets/svn/765-default-avatar.png');
    border-radius: 50%;
    display: block;
    padding-top: 23.5%;
    box-sizing: border-box;
    overflow: hidden;
    background-size: 100%;
}

<强> Working Fiddle

答案 1 :(得分:5)

您需要在代码中添加input[type="file"]并使其不可见。此外,它需要img所有位置,将其position设置为absolute以及所有其他样式,以便它可以占据所有位置。

像这样:

&#13;
&#13;
.profile-img-container {
  position: absolute;
  /*width:50%;*/
  /*border-radius:50%;*/
  overflow:hidden;
}

.profile-img-container img:hover {
  opacity: 0.5;
  z-index: 501;
}

.profile-img-container img:hover + i {
  display: block;
  z-index: 500;
}

.profile-img-container .icon-wrapper {
  position: absolute;
  bottom:0;
  left:0;
  background:rgba(0,0,0,0.7);
  color:#fff;
  text-align:center;
  width:100%;
  padding:5px;
}

/*.profile-img-container img {
position:absolute;
}*/

/*.profile-img-container {
  position:relative;
}*/

input[type="file"] {
  opacity:0;
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:100%;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" />
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>

<div class="profile-img-container img-circle">
  <input type="file" />
  <img src="http://s3.amazonaws.com/37assets/svn/765-default-avatar.png" class="img-thumbnail img-circle img-responsive" />
  <div class="icon-wrapper">
    <i class="fa fa-upload fa-5x"></i>
  </div>
</div>
&#13;
&#13;
&#13;