2016-09-06 2 views
0

나는 이미지의 목록을 표시하는 색인 페이지을 가지고 있습니다. 이미지의 하나를 클릭에클립 클립 이미지 URL을 잡고 배경 이미지로 scss로 전달

, 나는 이미지 URL를 잡아 내 는 #header div에배경 이미지 나의 CSS/SCS들에 전달하고자합니다. 다음은

내가 지금까지 무엇을했는지 있습니다 :

index.html.haml

%header 
%div#has-zoom 

%section 
    - @images.each do |image| 
    = image_tag image.image.url(:thumb), class: 'touched' 

image.coffee

$('.touched').click -> 
    $('#head-zoom').addClass 'enlarge' 

image.css.scss는

.enlarge { 
      background-image: image-url(<%= image_tag image.image.url(:thumb) %>); 
      height: 100vh; 
      background-size: cover; 
      background-position: center; 
} 

는 귀하의 지원은 깊이와 귀중하게 이해할 수있을 것이다.

답변

0

image.css.scss에서 .scss이 서버 측의 파일 .css으로 미리 컴파일되어 브라우저로 보내기 전에 수행 할 수 없습니다. 그리고 당신이 시도하고있는 상호 작용은 클라이언트쪽에 있습니다.

$('.touched').click -> 
    var image_src = $(this).attr('src') 
    $('#head-zoom').addClass('enlarge') 
    $('#head-zoom').css('background-image', 'url('+image_src+')') 

을 그리고 다음에 .enlarge 업데이트 :

는 다음을 할 수

.enlarge { 
    height: 100vh; 
    background-size: cover; 
    background-position: center; 
} 
+0

다음과 같이 누군가가 어떻게 할 수 있습니까? ** CSS는 ('배경 이미지', URL ('<% = image_tag.image.url (: 중)') **; , 내가 ** 정의되지 않은 메서드에 오류가 발생했습니다 내가 이런 짓을 **. 클릭 한 이벤트에 따라 배경 이미지가 변경됩니다 (예 : onClicked 이벤트 배경 변경).감사 @ Daram –

+0

'controller_'에서 설정 한'instance_variables'는'views'에서 사용할 수 있지만'.scss' 파일에서는 사용할 수 없습니다. '.scss' 파일에 평범한 루비를 사용할 수 있습니다.이 파일들은'.css' 파일로 컴파일되는 동안 변환됩니다. 그러나'.scss' 파일에서'컨트롤러 '에 설정 한 인스턴스 변수를 사용할 수 없습니다. – Dharam

+0

방금 ​​당신의 답변에 투표를했습니다. 최선의 방법으로 클릭 한 이미지를 잡고 CSS로 전달할 수 있습니다. 미리 감사드립니다. @Dharam –

0

나는 Dharam의 대답 @ 사용하여 나를 위해 작동 무엇을 게시 할 수 있습니다. 말했다

= image_tag image.image.url(:thumb), class: 'touched' 

index.html.haml

이하 물론 페치

$('.touched').click -> #-> Gets element with the class="touched" 
var image_src = $(this).attr('src') 
#-> (this).attr('src') is a jquery method that grabs/returns a value. 
#-> In my case, returns the clicked img src's value = http://localhost:3000/system/images/images/000/000/018/thumb/%2846%29.jpg?1472555101 

에서, 지금 아래와 같은 일을 수행 할 수 있습니다

$('#head-zoom').addClass('enlarge') 
    $('#head-zoom').css('background-image', 'url('+image_src+')') 

그리고 그게 내가 작동합니다. 이케의 매력.

관련 문제