원하는 위치에서 이미지 트림
이미지를 투고하도록 하는 서비스에서 사용자가 추천 사이즈 비율이 아닌 이미지를 업로드한 상황에서 좋아하는 위치에서 편집하는 녀석을 고려했다.트위터와 페이스북 표지 사진을 올릴 때 그거예요.이번에는 초점이 변하지 않고 세로 위치만 조정했다.(이미지의width는 100%)
이미지를 잘라서 저장하는 것이 아니라 단순히 이미지 위치를 이동하여 표시 범위 밖으로 보이지 않는 방법을 취합니다.자르면 다른 레이아웃에서 사용할 때도 어려움이 있기 때문에 개인적으로 이 방법을 좋아합니다.
준비
자신이 Rails를 쓰니까 그런 느낌이 들어요.
Gemfile
gem 'jquery-ui-rails'
assets/javascripts/application.js
//= require jquery
//= require jquery.ui.widget
//= require jquery.ui.droppable
사고 방법
레일스 쪽은 그런 느낌이에요.
Post 모형과 Image 모형이 있고, Post에는 축소판 그림 이미지가 있습니다.
(Post belongs to image)
이미지의 위치는 image_pos에서posts표에 저장합니다.
models/post.rb
class Post < ActiveRecord::Base
belongs_to :image
end
외관의 예는 이렇다.
CSS가 적절합니다. 환경에 따라 변경하십시오.
views/posts/edit.html.erb
<div class="image_attach">
<%= f.hidden_field :image_id, id: "thumb", data: { draggable: true } %>
<%= f.hidden_field :image_pos %>
<% if post.image.present? %>
<%= image_tag "http://workabroad.jp/image.jpg", style: "top: #{post.image_pos}%" %>
<% end %>
</div>
assets/stylesheets/posts.css.scss
.image_attach {
height: 300px;
overflow: hidden;
position: relative;
img {
width: 100%;
position: absolute;
top: 0;
}
}
Javascript로 구현
사용의 편의를 위해 외부 서류를 만들었다.
assets/javascripts/common.js.coffee
class window.Image
# Draggable
@enable_drag: ->
img = $('.image_attach img')
box = $('.image_attach')
pos = $('#post_image_pos')
$('.image_attach img').draggable({
axis: "y"
stop: (event, obj) ->
# Set position
range = img.height() - box.outerHeight()
moved = obj.position.top / box.height() * 100
# Top max
if img.position().top > 0
img.css('top', '0px')
moved = 0
# Bottom max
if Math.abs($(this).position().top) > range
img.css('top', '-' + range + 'px')
moved = -range / box.height() * 100
pos.val(moved)
})
assets/javascripts/posts.js.coffee
ready = ->
# Draggable
if $('#thumb').data('draggable') == true
Image.enable_drag()
# For turbolinks
$(document).ready(ready)
$(document).on('page:load', ready)
드래그가 끝난 경우에만 (드래그) f.hidden_field :image_pos
값이 변경됩니다.이번에 응답효소를 구상했기 때문에 저장된 값은 px가 아니라% 입니다.그런 다음 이미지를 View로 표시할 때
image_pos
의 값을 style="top: #{post.image_pos}%"
에 삽입하면 됩니다.→ http://workabroad.jp/posts/2095
Reference
이 문제에 관하여(원하는 위치에서 이미지 트림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shunwitter/items/9e561b4e65eb64e37d0a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)