Rails 튜토리얼에서 만든 샘플 앱의 '파일 선택'버튼을 멋지게 보았습니다.
9758 단어 HTMLCSSRailsRails 튜토리얼
환경
소개
Rails 튜토리얼 13.4.1장 에서는, 샘플 앱에 이미지 첨부 마이크로 포스트 투고 기능을 추가하는 것이지만, 디폴트라고 이미지를 선택할 때 클릭하는 「파일 선택」버튼이 다소 다른 버튼과의 통일감이 없기 때문에 눈에 띈다.
이 상황을 어떻게든 하고 싶고, 여러가지 시험해 보았다.
결과
디폴트의 버튼을 비표시로 한 뒤에 다른 버튼 「Choose an image」를 준비해, 그 버튼 경유로 디폴트의 버튼을 누르는 것으로, 기능을 해치지 않고 외형에 통일감을 낼 수 있었다 .
마우스 오버 처리를 포함하여 아래의 "Post"버튼의 디자인을 가능한 한 충실하게 재현했다.
물론, 디폴트 동작과 마찬가지로, 화상을 선택하면 그 파일명이 표시된다.
변경·추가한 코드는 다음과 같다. 덧붙여 이번은 공부를 위해 Bootstrap용의 클래스는 굳이 사용하지 않고 실장해 보았다.
app\views\shared\_micropost_form.html.erb
・
・
・
<button type="button" class="general_button" onclick="document.getElementById('micropost_image').click()">
Choose an image
</button>
<div id="image_name">No image is chosen...</div>
・
・
・
<script type="text/javascript">
$("#micropost_image").bind("change", function() {
let chosen_image = this.files[0];
if (chosen_image.size/1024/1024 > 5) {
alert("Maximum file size is 5MB. Please choose a smaller file.");
$("#micropost_image").val("");
document.getElementById('image_name').innerHTML = "No image is chosen...";
}
else {
document.getElementById('image_name').innerHTML = "Chosen image: " + chosen_image.name;
}
});
</script>
app\assets\stylesheets\custom.scss
.general_button{
color: white;
background-color: $blue-for-button; // #337ab7
border: 0.5px solid $blue-for-button-border; // #2e6da4
border-radius: 3.5px;
padding-top: 6.5px; padding-bottom: 6.5px;
padding-right: 10px; padding-left: 10px;
&:hover {
background-color: $dark-blue-for-button; // #285f90
border-color: $dark-blue-for-button-border; // #204d74
}
}
#image_name {
margin-top: 1px;
margin-left: 1px;
margin-bottom: 9px;
}
#micropost_image{
visibility: hidden;
}
결과까지의 흐름
1.
적당한 키워드로 검색하면 몇 가지 참고로 할 수 있을 것 같은 기사 1 2 해보기로 했다.
2.
한 객체가 클릭된 것을 트리거로 하여 다른 객체의 이벤트를 작동시킨다는 처리를 실현하는 코드의 작성 방법을 조사하기 위해, 「javascript html 버튼 누르기」등의 키워드로 검색하면, 「JavaScript로 버튼을 누르는 액션을 일으킨다 | forWEB가게」 가 히트했다 .
이 사이트를 바탕으로, 디폴트의 「파일 선택」버튼의 클릭 이벤트를 작동시키기 위한 다른 버튼 「Choose an image」를 만들었다(
_micropost_form.html.erb
내 참조).3.
이어서, 사용자가 선택한 이미지 파일명을 어떻게 표시하는지 생각한 결과, Rails 자습서의 목록 13.67 에 쓰여진, 선택된 이미지의 파일 사이즈가 5MB보다 큰 경우에 경고를 내는 JavaScript 코드를 개조한다 결정했다 (
_micropost_form.html.erb
내부 참조).도중에
f.file_field
에 독자적인 id
를 추가하면 경고를 내는 JavaScript가 작동하지 않게 되는 문제가 발생했지만, JavaScript 코드를 읽고 이미 id
로 micropost_image
자신의 id
를 삭제하면 다시 작동하게 되었다.4.
지금까지 동작에 관한 부분의 구현은 대체로 끝났으므로, CSS 레퍼런스 - 토호호의 WWW 입문 을 참고로, 때로는 화상 편집 소프트의 스포이트 기능을 사용해 스크린 샷으로부터 색의 정보를 취하거나 하면서
custom.scss
를 편집했다.이상
[Rails] [file_field] 이미지 업로드 버튼 디자인 변경 - Qiita (htps : // 이 m / 유키나_28 / ms / 4 8332354f6cb7c7 6f6) ↩
rails의 file_field에서 이미지 클릭으로 업로드 - Qiita (htps : // 코 m / 즈카코 씨 / ms / 41 에 d95 훗아 2323cf458) ↩
Reference
이 문제에 관하여(Rails 튜토리얼에서 만든 샘플 앱의 '파일 선택'버튼을 멋지게 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/4mami/items/6e90d93fd3967c2f7068텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)