【问题标题】:Grab paperclip image url and pass it to scss as background image抓取回形针图像 url 并将其作为背景图像传递给 scss
【发布时间】:2017-01-14 12:08:56
【问题描述】:

我有一个显示图像列表的索引页

点击任何图片时,我想获取 image_url 并将其作为 background-image 传递给我的 css/scss在我的 #header div 中。

以下是我目前所做的:

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;
 }

您的帮助将不胜感激。

【问题讨论】:

    标签: jquery ruby-on-rails ruby-on-rails-4 sass coffeescript


    【解决方案1】:

    我必须使用@Dharam 的答案发布对我有用的内容。

     $('.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
    

    当然是从下面获取的

    index.html.haml

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

    也就是说,我现在可以执行以下操作:

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

    这就像魅力一样。

    【讨论】:

      【解决方案2】:

      您不能在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;
      }
      

      【讨论】:

      • 那怎么会有人做这样的事情呢? .css('background-image', url('; 我这样做了,我得到了未定义的方法错误 . 请注意,背景图片会根据点击事件发生变化。即 onClicked 事件背景变化。谢谢@Dharam
      • instance_variables 您在controller 中设置在您的views 中可用,但在.scss 文件中不可用。您可以在.scss 文件中使用纯红宝石,这些文件在编译为.css 文件时会被转换。但是你不能在.scss文件中使用你在controller中设置的实例变量。
      • 我刚刚对你的回答投了赞成票。然后我怎样才能最好地抓住点击的图像并将其传递给 css。提前致谢。 @达拉姆
      • 您不能将该信息传递给.css 文件。如上所示,您可以使用 javascript 应用 css
      • 请您帮我提供一个代码示例。那可能只是缓解我的谜团。再次Tnx
      猜你喜欢
      • 2018-09-11
      • 2014-02-03
      • 1970-01-01
      • 2011-01-11
      • 2014-08-15
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多