responsive_image_tag 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,5 +1,51 @@
1
1
  = responsive_image_tag
2
2
 
3
+ == Creating responsive images
4
+
5
+ The @responsive_image_tag@ helper selects an image depending on the width of
6
+ the current device. The @screen.width@ is detected by javascript and then an
7
+ image element is inserted in the page with a dynamically created @src@
8
+ attribute.
9
+
10
+ It works with Rails 2 and Rails 3, and there are javascript adapters for both Jquery and Prototype. Pick your poison.
11
+
12
+ == HTML structure
13
+
14
+ Here's the HTML which the helper inserts into the page:
15
+
16
+ <span class="img-placeholder"></span>
17
+ <noscript data-mobilesrc="small.jpg" data-fullsrc="big.jpg" data-alttext="your alt text" class="responsivize">
18
+ <img src="big.jpg">
19
+ </noscript>
20
+
21
+ The responsive images have to appear for non-javascript users as well as
22
+ those with javascript turned on.
23
+
24
+ To achieve this the helper places the default image inside a <noscript>
25
+ tag which is then deleted by the javascript library. The image attributes
26
+ such as full size, mobile size and alt text are also stored as HTML5 data
27
+ attributes on the <noscript> tag so they are available in the DOM for the
28
+ javascript to access.
29
+
30
+ The library relies on a trick which has all the elegance of a greasy
31
+ late-night kebab: child elements of the <noscript> tag are not added to the
32
+ DOM, so deleting the <noscript> prevents an HTTP request being made to the
33
+ server. This way only the image being requested by the dynamically inserted image tag is making a request.
34
+
35
+ To insert the dynamically created image element into the page you need a
36
+ parent element in the DOM to append to. The rails helper also creates a
37
+ <span> tag with a class of "img-placeholder" to house the new image.
38
+
39
+ When the DOM is ready the javascript object responsiveImageTag detects
40
+ all <noscript> elements on the page with a class of "responsivize".
41
+
42
+ It retrieves the HTML5 data attributes (@data-mobilesrc@, @data-fullsrc@, and
43
+ @data-alttext@) and then creates an image tag with the correct source
44
+ depending on the available screen width of the users device. Any device
45
+ smaller than 768px is considered to be a mobile device. The library
46
+ inserts the new element into the page and the <noscript> tags are then hidden
47
+ from view.
48
+
3
49
  == Installation
4
50
 
5
51
  Put it in your Gemfile:
@@ -17,19 +63,31 @@ You can run it like this:
17
63
 
18
64
  === Rails 3
19
65
 
20
- rails g responsive_image_tag:javascript
66
+ rails g responsive_image_tag:jquery
67
+
68
+ or
69
+
70
+ rails g responsive_image_tag:prototype
21
71
 
22
72
  === Rails 2
23
73
 
24
- script/generate responsive_image_tag
74
+ script/generate jquery_responsive_image_tag
75
+
76
+ or
77
+
78
+ script/generate prototype_responsive_image_tag
25
79
 
26
80
 
27
81
  == Usage
28
82
 
29
83
  You need to do two things. First, make sure that you include a reference to the JavaScript file in your layout:
30
84
 
31
- <%= javascript_include_tag "responsive-image-tag" %>
32
-
85
+ <%= javascript_include_tag "responsive-image-tag-jquery" %>
86
+
87
+ or
88
+
89
+ <%= javascript_include_tag "responsive-image-tag-prototype" %>
90
+
33
91
  After that, you can use the new tag like so, in a view:
34
92
 
35
93
  <%= responsive_image_tag("small.jpg", "big.jpg") %>
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
@@ -12,7 +12,7 @@ module ResponsiveImageTag
12
12
  def create_javascript_file
13
13
  template 'responsive-image-tag-jquery.js',
14
14
  File.join(
15
- 'public', 'javascripts', 'responsive-image-tag-prototype.js')
15
+ 'public', 'javascripts', 'responsive-image-tag-jquery.js')
16
16
  end
17
17
 
18
18
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{responsive_image_tag}
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dave Hrycyszyn"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: responsive_image_tag
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dave Hrycyszyn