2016-12-31 4 views
2

Я создаю форму, в которой мне нужен профиль Изображение пользователя, и я хочу, чтобы изображение было в круглой или прямоугольной форме, и по умолчанию область изображения является черной или фиктивное изображение, и когда пользователь нажимает на область, ему разрешено выбирать изображение. Например, просмотрщик профиля в Facebook, Twitter.Добавить изображение Изображение в форме в HTML и CSS

Like This

Моя форма

HTML

<div class="signup-w3ls"> 
    <div class="signup-agile1"> 
     <form action="#" method="post"> 

      <div class="form-control"> 
       <label class="header">Profile Photo:</label> 

       <input id="image" type="file" name="profile_photo" placeholder="Photo" required="" capture> 
      </div> 

      <div class="form-control"> 
       <label class="header">Store Name :</label> 
       <input type="text" id="store_name" name="store_name" placeholder="Store Name" title="Please enter your First Name" required=""> 
      </div> 

      <div class="form-control"> 
       <label class="header">Store Type :</label> 
       <input type="text" id="store_type" name="store_type" placeholder="Store Type" title="Please enter your Last Name" required=""> 
      </div> 

      <div class="form-control"> 
       <label class="header">Owner Type :</label> 
       <input type="text" id="owner_type" name="owner_type" placeholder="Owner Type" title="Please enter a valid email" required=""> 
      </div> 

      <div class="form-control"> 
       <label class="header">Website :</label> 
       <input type="url" id="website" name="website" placeholder="Website" id="password1" required=""> 
      </div> 

      <div class="form-control"> 
       <label class="header">Contact Number :</label> 
       <input type="text" id="contact_number" name="contact_number" placeholder="Contact Number" required=""> 
      </div> 

      <div class="form-control"> 
       <label class="header">Contact Email :</label> 
       <input type="email" id="contact_email" name="contact_email" placeholder="Contact Email" required=""> 
      </div> 

      <input type="submit" class="register" value="Register"> 
     </form> 

    </div> 
</div> 
</div> 

CSS

.signup-w3ls { 
    width: 50%; 
    margin: 70px 25% 80%; 
    padding: 0; 
    display: table; 
    position: relative; 
} 
.signup-agile1{ 
    width:100%; 
    float:center; 
} 

.signup-w3ls .signup-agile1 .form-control { 
    margin-bottom: 20px; 
} 
label.header { 
    font-size: 16px; 
    font-weight: 500; 
    width: 215px; 
    color: grey; 
    margin-right:10px; 
    text-align:justify; 
    letter-spacing: 1px; 
    text-transform: uppercase; 
    display: inline-block; 
    font-family: 'Nunito', sans-serif; 
} 
input#image,input#store_name, input#store_type,input#owner_type, input#website,input#contact_number,input#contact_email { 
    padding:0 40px; 
    width:40%; 
    height:55px; 
    border: 1px solid #dadada; 
    color: grey; 
    text-align:justify; 
    outline: none; 
    letter-spacing: 1px; 
    font-size: 16px; 
    font-weight:normal; 
    font-family: 'Muli', sans-serif; 
    border-radius:30px; 
    -webkit-border-radius:30px; 
    -moz-border-radius:30px; 
    -o-border-radius:30px; 
    -ms-border-radius:30px; 
} 
input#image:focus,input#store_name:focus, input#store_type:focus,input#owner_type:focus, input#website:focus,input#contact_number:focus,input#contact_email:focus { 
    background-color:#f5f8fa !important; 
    border:1px solid #dadada; 
} 
input::-webkit-input-placeholder { 
color: grey; 
} 
input:-moz-placeholder { /* Firefox 18- */ 
color: grey; 
} 
input::-moz-placeholder { /* Firefox 19+ */ 
color: grey; 
} 
input:-ms-input-placeholder { 
color: grey; 
} 
.register { 
    background-color: lightgreen; 
    width: 52%; 
    height: 55px; 
    border: none; 
    margin-left: 233px; 
    cursor: pointer; 
    color: #fff; 
    outline: none; 
    font-size: 20px; 
    font-weight: normal; 
    text-transform: uppercase; 
    transition: all 0.5s ease-in-out; 
    -webkit-transition: all 0.5s ease-in-out; 
    -moz-transition: all 0.5s ease-in-out; 
    -o-transition: all 0.5s ease-in-out; 
    border-radius: 30px; 
    -webkit-border-radius: 30px; 
    -moz-border-radius: 30px; 
    -o-border-radius: 30px; 
    -ms-border-radius: 30px; 
    font-family: 'Muli', sans-serif; 
} 
.register:hover { 
    background-color:#36b051; 
    color:#fff; 
} 

JSFIDDLE: -https://jsfiddle.net/7ao1qxLe/

+0

вы должны будете исследовать API, твиттер/facebook и выяснить, как именно делать это - шаг, на который нельзя ответить в одной мысли – mike510a

+0

нет, я просто даю пример twitter и facebook, я хочу загрузчик изображений – Nakhhhh

+0

Это также многоэтапный процесс - вам понадобится встроенная реализация с использованием PHP или какой-либо другой серверный язык для хранения фотографии ... которые должны быть отправлены на сервер через FORM или через 'ajax', тогда вам также, вероятно, понадобится« база данных »для хранения всех разные профили пользователей – mike510a

ответ

4

Что вы можете сделать, это скрыть вход и просто как если бы она была нажата когда изображение профиля щелкают:

$("#profileImage").click(function(e) { 
 
    $("#imageUpload").click(); 
 
});
#imageUpload 
 
{ 
 
    display: none; 
 
} 
 

 
#profileImage 
 
{ 
 
    cursor: pointer; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<image id="profileImage" src="http://lorempixel.com/100/100" /> 
 
<input id="imageUpload" type="file" 
 
     name="profile_photo" placeholder="Photo" required="" capture>

Предварительный просмотр изображения

Вы также можете дать пользователю предварительный просмотр загруженного изображения:

function previewProfileImage(uploader) { 
    //ensure a file was selected 
    if (uploader.files && uploader.files[0]) { 
     var imageFile = uploader.files[0]; 
     var reader = new FileReader();  
     reader.onload = function (e) { 
      //set the image data as source 
      $('#profileImage').attr('src', e.target.result); 
     }  
     reader.readAsDataURL(imageFile); 
    } 
} 

$("#imageUpload").change(function(){ 
    previewProfileImage(this); 
}); 

Эффективность Примечание: Вы можете сделать его более эффективным, если вы используете createObjectURL вместо чтения данных в URL.

function fasterPreview(uploader) { 
    if (uploader.files && uploader.files[0]){ 
      $('#profileImage').attr('src', 
      window.URL.createObjectURL(uploader.files[0])); 
    } 
} 

Как вы можете видеть здесь, в MDN, то URL.createObjectUrl будет только генерировать URL для файла, вместо того, чтобы загрузить его в DOM, который, безусловно, предпочтительнее для больших файлов.

Круговое изображение растениеводство

Чтобы отобразить изображение обрезанного по кругу, вы должны дать ему внешний div и применить border-radius к нему:

HTML:

<div id="profile-container"> 
    <image id="profileImage" src="aDefaultImage.png" /> 
</div> 

CSS:

#profile-container { 
    width: 150px; 
    height: 150px; 
    overflow: hidden; 
    -webkit-border-radius: 50%; 
    -moz-border-radius: 50%; 
    -ms-border-radius: 50%; 
    -o-border-radius: 50%; 
    border-radius: 50%; 
} 

Комплексное решение

Этот фрагмент кода складывает все три шага:

$("#profileImage").click(function(e) { 
 
    $("#imageUpload").click(); 
 
}); 
 

 
function fasterPreview(uploader) { 
 
    if (uploader.files && uploader.files[0]){ 
 
      $('#profileImage').attr('src', 
 
      window.URL.createObjectURL(uploader.files[0])); 
 
    } 
 
} 
 

 
$("#imageUpload").change(function(){ 
 
    fasterPreview(this); 
 
});
#imageUpload 
 
{ 
 
    display: none; 
 
} 
 

 
#profileImage 
 
{ 
 
    cursor: pointer; 
 
} 
 

 
#profile-container { 
 
    width: 150px; 
 
    height: 150px; 
 
    overflow: hidden; 
 
    -webkit-border-radius: 50%; 
 
    -moz-border-radius: 50%; 
 
    -ms-border-radius: 50%; 
 
    -o-border-radius: 50%; 
 
    border-radius: 50%; 
 
} 
 

 
#profile-container img { 
 
    width: 150px; 
 
    height: 150px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="profile-container"> 
 
    <image id="profileImage" src="http://lorempixel.com/100/100" /> 
 
</div> 
 
<input id="imageUpload" type="file" 
 
     name="profile_photo" placeholder="Photo" required="" capture>

+0

брат, он показывает мне изображение по умолчанию, но он не может показать мне окно диалога, в котором я могу выбрать изображение – Nakhhhh

+0

загрузить изображение functionallity не работает – Nakhhhh

+0

сейчас изображение не обновляется – Nakhhhh

1

Вставить изображение тега отдельно по умолчанию изображение затем прочитать URL при выборе изображения с помощью ввода тега.

<img id="profile" src="default.png" alt="profile-image" /> 

function readURL(input) { 
 
     if (input.files && input.files[0]) { 
 
      var reader = new FileReader(); 
 
      
 
      reader.onload = function (e) { 
 
       $('#profile').attr('src', e.target.result); 
 
      } 
 
      
 
      reader.readAsDataURL(input.files[0]); 
 
     } 
 
    } 
 
    
 
    $("#image").change(function(){ 
 
     readURL(this); 
 
     //other uploading proccess [server side by ajax and form-data ] 
 
    });

Fiddle Ссылка: https://jsfiddle.net/7ao1qxLe/1/

+0

bro не работает – Nakhhhh

+0

он работает, проверяя скрипку: https://jsfiddle.net/7ao1qxLe/1/ –

+0

Спасибо за помощь, она разрешима. – Nakhhhh

2

$("#profileImage").click(function(e) { 
 
    $("#imageUpload").click(); 
 
}); 
 

 
function fasterPreview(uploader) { 
 
    if (uploader.files && uploader.files[0]){ 
 
      $('#profileImage').attr('src', 
 
      window.URL.createObjectURL(uploader.files[0])); 
 
    } 
 
} 
 

 
$("#imageUpload").change(function(){ 
 
    fasterPreview(this); 
 
});
#imageUpload 
 
{ 
 
    display: none; 
 
} 
 

 
#profileImage 
 
{ 
 
    cursor: pointer; 
 
} 
 

 
#profile-container { 
 
    width: 150px; 
 
    height: 150px; 
 
    overflow: hidden; 
 
    -webkit-border-radius: 50%; 
 
    -moz-border-radius: 50%; 
 
    -ms-border-radius: 50%; 
 
    -o-border-radius: 50%; 
 
    border-radius: 50%; 
 
} 
 

 
#profile-container img { 
 
    width: 150px; 
 
    height: 150px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="profile-container"> 
 
    <image id="profileImage" src="http://lorempixel.com/100/100" /> 
 
</div> 
 
<input id="imageUpload" type="file" 
 
     name="profile_photo" placeholder="Photo" required="" capture>

Смежные вопросы