cyberweb 0.4.174 → 0.5.225

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cyberweb might be problematic. Click here for more details.

Files changed (625) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1782 -405
  3. data/bin/cyberweb_sanitize +10 -0
  4. data/bin/download_webpage +7 -0
  5. data/bin/html_to_cyberweb_converter +7 -0
  6. data/cyberweb.gemspec +25 -25
  7. data/doc/README.gen +1745 -383
  8. data/doc/USAGE.md +16 -16
  9. data/doc/{AUTHORS.md → authors.md} +0 -0
  10. data/doc/configuration/configuration.md +3 -1
  11. data/doc/deprecations.md +13 -7
  12. data/doc/{DOCUMENTATION_FOR_CYBERSPRAWL.md → documentation_for_cybersprawl.md} +7 -4
  13. data/doc/future_design_goals.md +33 -0
  14. data/doc/html_characters.md +7 -7
  15. data/doc/{JQUERY.md → jquery/jquery.md} +20 -12
  16. data/doc/{MOUSE.md → mouse.md} +1 -9
  17. data/doc/{RENDER_WEB_BASE.md → render_web_base.md} +11 -4
  18. data/doc/todo/todo_for_the_cyberweb_project.md +791 -0
  19. data/examples/advanced/animated_css_example/animated_css_example.html +47 -0
  20. data/examples/advanced/animated_submarine/animated_submarine.html +511 -0
  21. data/examples/advanced/animated_windmill/animated_windmill.html +468 -0
  22. data/examples/advanced/delayed_update_of_the_body_via_javascript.cgi +8 -5
  23. data/examples/advanced/draw_circle/draw_circle.cgi +36 -0
  24. data/examples/advanced/drop_shadow_examples.cgi +37 -0
  25. data/examples/advanced/games/snake/food.png +0 -0
  26. data/examples/advanced/games/snake/ground.png +0 -0
  27. data/examples/advanced/games/snake/snake.cgi +28 -0
  28. data/examples/advanced/games/tetris/tetris.cgi +7 -0
  29. data/examples/advanced/games/tetris/tetris.rb +17 -0
  30. data/examples/advanced/games/tetris/tetris.sinatra +58 -0
  31. data/examples/advanced/games/tic-tac-toe/tic-tac-toe.cgi +123 -0
  32. data/examples/advanced/get_some_coffee/get_some_coffee.html +293 -0
  33. data/examples/advanced/glow_on_hover_example/glow_on_hover_example.cgi +27 -0
  34. data/examples/advanced/hybrid_experiment.cgi +34 -12
  35. data/examples/advanced/images/global_css_rules_for_the_images.cgi +32 -0
  36. data/examples/advanced/larger_image_on_mouse_over_example.cgi +2 -2
  37. data/examples/advanced/no_right_click.cgi +4 -3
  38. data/examples/advanced/{objectified_html_tags.cgi → objectified_html_tags/objectified_html_tags.cgi} +12 -3
  39. data/examples/advanced/objectified_html_tags/testing_objectified_html_tags_with_the_webobject.cgi +28 -0
  40. data/examples/advanced/random_glow_effects.cgi +34 -0
  41. data/examples/advanced/select_everything_example/select_everything_example.cgi +25 -0
  42. data/examples/advanced/simple_calculator.cgi +13 -21
  43. data/examples/advanced/simple_form_example.cgi +11 -11
  44. data/examples/advanced/traffic_light/traffic_light.html +163 -0
  45. data/examples/advanced/weather_animation/weather_animation.html +560 -0
  46. data/examples/css/animated_3D_cube_example/animated_3D_cube_example.html +265 -0
  47. data/examples/css/animated_bird_example/animated_bird_example.html +207 -0
  48. data/examples/css/animated_desk_example/animated_desk_example.html +120 -0
  49. data/examples/css/animated_dog_example/animated_dog_example.html +432 -0
  50. data/examples/css/animated_submit_button.html +190 -0
  51. data/examples/css/animated_text_colour_change/animated_text_colour_change.html +41 -0
  52. data/examples/css/blue_border.html +3 -1
  53. data/examples/css/border_image_example/border_image_example.html +40 -0
  54. data/examples/css/box_shadow/box_shadow_example.html +18 -0
  55. data/examples/css/christmas_snow_globe_animation.html +596 -0
  56. data/examples/css/css_border_spacing_example.html +5 -5
  57. data/examples/css/css_bubbles.html +3 -1
  58. data/examples/css/css_checkboxes_example/css_checkboxes_example.html +110 -0
  59. data/examples/css/css_drag_and_drop.html +1 -5
  60. data/examples/css/css_grid_feline_style/css_grid_feline_style.html +161 -0
  61. data/examples/css/css_neon_glow_effects.html +1 -1
  62. data/examples/css/css_rotate_these_words.html +83 -0
  63. data/examples/css/css_text_decoration_example.html +7 -7
  64. data/examples/css/css_thermometer/css_thermometer.html +91 -0
  65. data/examples/css/{css_tooltip.html → css_tooltip/css_tooltip.html} +8 -6
  66. data/examples/css/css_typewriter_example/css_typewriter_example.html +226 -0
  67. data/examples/css/cyberweb_animated_logo/cyberweb_animated_logo.html +179 -0
  68. data/examples/css/daily_coffee/daily_coffee.html +1110 -0
  69. data/examples/css/different_colour_on_selected_text/different_colour_on_selected_text.html +31 -0
  70. data/examples/css/differentially_glowing_text_example/differentially_glowing_text_example.html +82 -0
  71. data/examples/css/fade_in_and_fade_out_effect.html +2 -2
  72. data/examples/css/flying_birds_example/flying_birds_example.html +171 -0
  73. data/examples/css/folding_cards_example/folding_cards_example.html +624 -0
  74. data/examples/css/font_size_examples.html +7 -5
  75. data/examples/css/glowing_on_hover_animation/glowing_on_hover_animation.html +90 -0
  76. data/examples/css/grow_example.html +31 -0
  77. data/examples/css/happy_toaster_example/happy_toaster_example.html +830 -0
  78. data/examples/css/landing_on_mars_animation/landing_on_mars_animation.html +374 -0
  79. data/examples/css/letter_spacing_example.cgi +18 -14
  80. data/examples/css/lighthouse_example/lighthouse_example.html +1161 -0
  81. data/examples/css/{meter_example.html → meter_example/meter_example.html} +0 -0
  82. data/examples/css/motorcycle_on_the_go/motorcycle_on_the_go.html +227 -0
  83. data/examples/css/on_hover_glow_effect/on_hover_glow_effect.html +50 -0
  84. data/examples/css/on_mouse_button_pressed.html +6 -4
  85. data/examples/css/our_solar_system/our_solar_system.html +441 -0
  86. data/examples/css/outline/outline_versus_border_example.html +57 -0
  87. data/examples/css/polaroid_card_effect_example/polaroid_card_effect_example.html +130 -0
  88. data/examples/css/responsive_image_gallery/responsive_image_gallery.html +97 -0
  89. data/examples/css/rotating_DNA/rotating_DNA.html +626 -0
  90. data/examples/css/rotating_sphere_example/rotating_sphere_example.html +112 -0
  91. data/examples/css/scale_example.html +4 -5
  92. data/examples/css/shadow_example_in_CSS/shadow_example_in_CSS.cgi +62 -0
  93. data/examples/css/shaking_shapes_example.html +133 -0
  94. data/examples/css/simple_stars_example/simple_stars_example.html +27 -0
  95. data/examples/css/slide_checkbox_example/slide_checkbox_example.html +564 -0
  96. data/examples/css/speak_bubble_quote_example/speak_bubble_quote_example.html +109 -0
  97. data/examples/css/speedy_truck_example/speedy_truck_example.html +168 -0
  98. data/examples/css/{sticky_div_example.html → sticky_div_example/sticky_div_example.html} +0 -0
  99. data/examples/css/stitched_div.html +9 -0
  100. data/examples/css/sun_and_clouds_animation/sun_and_clouds_animation.html +292 -0
  101. data/examples/css/talking_candles_example/talking_candles_example.html +550 -0
  102. data/examples/css/text_decoration_underline_example/text_decoration_underline_example.html +62 -0
  103. data/examples/css/this_is_a_cat/this_is_a_cat.html +219 -0
  104. data/examples/css/three_dots_indicating_page_loading.html +65 -0
  105. data/examples/css/user_select_example/user_select_example.html +24 -0
  106. data/examples/css/walking_cat/walking_cat.html +128 -0
  107. data/examples/css/water_wave_text_animation_effect/water_wave_text_animation_effect.html +86 -0
  108. data/examples/csv/README.md +2 -1
  109. data/examples/flip_card_example/flip_card_example.html +10 -3
  110. data/examples/games/README.md +3 -0
  111. data/examples/games/snake/images/food.png +0 -0
  112. data/examples/games/snake/images/ground.png +0 -0
  113. data/examples/games/snake/snake.html +16 -0
  114. data/examples/games/snake/snake.js +117 -0
  115. data/examples/games/tetris/smaller_tetris_game.html +518 -0
  116. data/examples/games/tetris/tetris.html +461 -0
  117. data/examples/games/tic-tac-toe/index.js +125 -0
  118. data/examples/games/tic-tac-toe/style.css +79 -0
  119. data/examples/games/tic-tac-toe/tic-tac-toe.html +39 -0
  120. data/examples/html/MathML/001_show_a_simple_quadratic_equation.html +22 -0
  121. data/examples/html/MathML/002_simple_equation.html +7 -0
  122. data/examples/html/MathML/003_function_of_example.html +17 -0
  123. data/examples/html/MathML/README.md +2 -0
  124. data/examples/html/abbr_example.html +2 -5
  125. data/examples/html/accordion/README.md +1 -0
  126. data/examples/html/accordion/accordion.html +56 -0
  127. data/examples/html/base64_image_example.html +8 -5
  128. data/examples/html/buttons_example.html +133 -0
  129. data/examples/html/canvas_drawing_example.html +54 -0
  130. data/examples/html/colour_wheel.html +441 -442
  131. data/examples/html/column_width_example.html +2 -2
  132. data/examples/html/custom_cursor.html +8 -5
  133. data/examples/html/cyberweb_logo/README.md +2 -0
  134. data/examples/html/cyberweb_logo/cyberweb_logo.html +11 -0
  135. data/examples/html/draggable_paragraph.html +1 -2
  136. data/examples/html/email_popup_example/email_popup_example.html +175 -0
  137. data/examples/html/fieldset_example.html +3 -1
  138. data/examples/html/font_examples/README.md +1 -0
  139. data/examples/html/font_examples/chancery_text.html +19 -0
  140. data/examples/html/font_examples/fantasy_text.html +19 -0
  141. data/examples/html/font_examples/georgia_text.html +19 -0
  142. data/examples/html/font_size_example/font_size_example.html +85 -0
  143. data/examples/html/glyph_example.html +0 -1
  144. data/examples/html/grayscale_filter_example/grayscale_filter_example.html +15 -0
  145. data/examples/html/html_links_example.html +61 -0
  146. data/examples/html/html_slider/html_slider.html +39 -0
  147. data/examples/html/input_autofocus_example.html +11 -7
  148. data/examples/html/input_placeholder_example.html +15 -0
  149. data/examples/html/larger_image_on_mouse_over_example.html +1 -1
  150. data/examples/html/ordered_and_unordered_bulletsin.html +4 -2
  151. data/examples/html/play_video_example.html +3 -2
  152. data/examples/html/remote_image_example.html +8 -2
  153. data/examples/html/select_everything_on_mouse_click_event.html +38 -0
  154. data/examples/html/selected_text_appears_in_another_colour_example.html +34 -0
  155. data/examples/html/send_email_hyperlink/send_email_hyperlink.html +8 -0
  156. data/examples/html/simple_unordered_list.html +3 -0
  157. data/examples/html/spinner_example/spinner.html +79 -0
  158. data/examples/html/table_with_header_example.html +26 -13
  159. data/examples/html/test_mkv_codec/test_mkv_codec.html +11 -0
  160. data/examples/html/two_columns_flex_example.html +4 -1
  161. data/examples/{javascript → javascript_and_jquery}/README.md +0 -0
  162. data/examples/{javascript → javascript_and_jquery}/arrays/arrays_example_in_javascript.html +0 -0
  163. data/examples/javascript_and_jquery/autocomplete_on_an_input_field/autocomplete_on_an_input_field.html +295 -0
  164. data/examples/javascript_and_jquery/change_the_background_colour_dynamically/change_the_background_colour_dynamically.html +41 -0
  165. data/examples/{javascript → javascript_and_jquery}/delay_example/delay_example.html +0 -0
  166. data/examples/{javascript → javascript_and_jquery}/drag_support/drag_support.html +0 -0
  167. data/examples/javascript_and_jquery/jquery_bubbling_header/bubbling_header.html +109 -0
  168. data/examples/{javascript → javascript_and_jquery}/jquery_drag_and_drop/drag_and_drop_image_example.html +0 -0
  169. data/examples/javascript_and_jquery/jquery_showcase/README.md +6 -0
  170. data/examples/javascript_and_jquery/jquery_showcase/jquery_001.cgi +23 -0
  171. data/examples/javascript_and_jquery/jquery_showcase/jquery_002.cgi +34 -0
  172. data/examples/javascript_and_jquery/jquery_showcase/jquery_003.cgi +24 -0
  173. data/examples/javascript_and_jquery/jquery_showcase/jquery_004.cgi +34 -0
  174. data/examples/javascript_and_jquery/on_change_event/on_change_event.html +29 -0
  175. data/examples/javascript_and_jquery/on_click_colour_change/on_click_colour_change.html +31 -0
  176. data/examples/javascript_and_jquery/on_click_display_random_number/on_click_display_random_number.html +43 -0
  177. data/examples/{javascript → javascript_and_jquery}/on_click_event_hello_world/on_click_event_hello_world.html +0 -0
  178. data/examples/javascript_and_jquery/on_mouse_wheel_event/on_mouse_wheel_event.html +37 -0
  179. data/examples/javascript_and_jquery/read_the_content_of_a_local_file/read_the_content_of_a_local_file.html +35 -0
  180. data/examples/{javascript → javascript_and_jquery}/rgb_to_hex/rgb_to_hex.html +0 -0
  181. data/examples/{javascript → javascript_and_jquery}/screen_resolution/screen_resolution.html +2 -1
  182. data/examples/{javascript → javascript_and_jquery}/select_everything/select_everything.html +1 -1
  183. data/examples/javascript_and_jquery/vue/README.md +1 -0
  184. data/examples/javascript_and_jquery/vue/showcasing_vue.html +80 -0
  185. data/examples/{javascript → javascript_and_jquery}/write_into_a_file/write_into_a_file.html +0 -0
  186. data/examples/rack/example_with_html_template.rb +5 -4
  187. data/examples/rack/example_with_rack_and_cyberweb_showing_how_to_use_images.rb +3 -2
  188. data/examples/rack/hello_world_example_with_rack.rb +3 -2
  189. data/examples/rack/lobster.rb +7 -5
  190. data/examples/rack/rack_env.rb +3 -3
  191. data/examples/{show_greek_letters.rb → show_greek_letters/show_greek_letters.rb} +0 -0
  192. data/examples/simple/input_example_with_coloured_focus.cgi +32 -0
  193. data/examples/simple/input_type_examples.cgi +51 -0
  194. data/examples/simple/on_click_event_hello_world.cgi +5 -5
  195. data/examples/simple/rotate_these_words.cgi +90 -0
  196. data/examples/{example1.rb → simple/show_how_to_set_a_title.rb} +0 -0
  197. data/examples/simple/simple_gradient.cgi +57 -0
  198. data/images/cyberweb_favicon.png +0 -0
  199. data/images/cyberweb_logo.png +0 -0
  200. data/images/cyberweb_theme.png +0 -0
  201. data/lib/cyberweb/REST/README.md +7 -0
  202. data/lib/cyberweb/REST/base/accept_entry.rb +94 -0
  203. data/lib/cyberweb/REST/base/application.rb +37 -0
  204. data/lib/cyberweb/REST/base/bad_request.rb +10 -0
  205. data/lib/cyberweb/REST/base/base.rb +1131 -0
  206. data/lib/cyberweb/REST/base/common_logger.rb +35 -0
  207. data/lib/cyberweb/REST/base/delegator.rb +75 -0
  208. data/lib/cyberweb/REST/base/error.rb +8 -0
  209. data/lib/cyberweb/REST/base/extended_rack.rb +66 -0
  210. data/lib/cyberweb/REST/base/helpers/helpers.rb +473 -0
  211. data/lib/cyberweb/REST/base/helpers/stream.rb +75 -0
  212. data/lib/cyberweb/REST/base/mime_type_entry.rb +67 -0
  213. data/lib/cyberweb/{constants/file_constants.rb → REST/base/not_found.rb} +10 -5
  214. data/lib/cyberweb/REST/base/request.rb +145 -0
  215. data/lib/cyberweb/REST/base/response.rb +94 -0
  216. data/lib/cyberweb/REST/base/templates/templates.rb +208 -0
  217. data/lib/cyberweb/REST/base/wrapper.rb +28 -0
  218. data/lib/cyberweb/{constants/nl.rb → REST/constants.rb} +8 -9
  219. data/lib/cyberweb/REST/main.rb +109 -0
  220. data/lib/cyberweb/REST/show_exceptions.rb +396 -0
  221. data/lib/cyberweb/and_sinatra_base.rb +0 -0
  222. data/lib/cyberweb/autoinclude.rb +0 -0
  223. data/lib/cyberweb/autoinclude_webobject.rb +0 -0
  224. data/lib/cyberweb/base/base.rb +9 -2
  225. data/lib/cyberweb/base/colours.rb +8 -6
  226. data/lib/cyberweb/base/constants.rb +8 -0
  227. data/lib/cyberweb/base/misc.rb +140 -53
  228. data/lib/cyberweb/base/save_file.rb +3 -0
  229. data/lib/cyberweb/base_module/base_module.rb +79 -0
  230. data/lib/cyberweb/cascading_style_sheets/admonition.css +0 -0
  231. data/lib/cyberweb/cascading_style_sheets/balloon.css +0 -0
  232. data/lib/cyberweb/cascading_style_sheets/border.css +107 -41
  233. data/lib/cyberweb/cascading_style_sheets/code.css +0 -0
  234. data/lib/cyberweb/cascading_style_sheets/colours.css +46 -23
  235. data/lib/cyberweb/cascading_style_sheets/css_reset.css +59 -0
  236. data/lib/cyberweb/cascading_style_sheets/cursors.css +14 -0
  237. data/lib/cyberweb/cascading_style_sheets/custom/animated_bike.css +199 -0
  238. data/lib/cyberweb/cascading_style_sheets/default.css +171 -136
  239. data/lib/cyberweb/cascading_style_sheets/div.css +18 -4
  240. data/lib/cyberweb/cascading_style_sheets/drop_shadow.css +154 -0
  241. data/lib/cyberweb/cascading_style_sheets/error_404_css_class.css +26 -0
  242. data/lib/cyberweb/cascading_style_sheets/fonts.css +60 -39
  243. data/lib/cyberweb/cascading_style_sheets/glow_effects.css +69 -0
  244. data/lib/cyberweb/cascading_style_sheets/gradient_effects.css +5 -0
  245. data/lib/cyberweb/cascading_style_sheets/hover.css +4212 -0
  246. data/lib/cyberweb/cascading_style_sheets/links.css +8 -8
  247. data/lib/cyberweb/cascading_style_sheets/margin.css +195 -178
  248. data/lib/cyberweb/cascading_style_sheets/menu.css +0 -0
  249. data/lib/cyberweb/cascading_style_sheets/message_boxes.css +0 -0
  250. data/lib/cyberweb/cascading_style_sheets/misc.css +51 -11
  251. data/lib/cyberweb/cascading_style_sheets/popup.css +0 -0
  252. data/lib/cyberweb/cascading_style_sheets/rpg.css +0 -0
  253. data/lib/cyberweb/cascading_style_sheets/ruby_regexes.css +12 -0
  254. data/lib/cyberweb/cascading_style_sheets/shapes.css +59 -0
  255. data/lib/cyberweb/cascading_style_sheets/template2.css +0 -0
  256. data/lib/cyberweb/cascading_style_sheets/text_shadow.css +21 -0
  257. data/lib/cyberweb/cascading_style_sheets/tooltip.css +0 -0
  258. data/lib/cyberweb/cgi/constants.rb +1 -2
  259. data/lib/cyberweb/cgi/exceptions.rb +1 -1
  260. data/lib/cyberweb/coloured_tags/coloured_tags.rb +1 -1
  261. data/lib/cyberweb/colours/colour_chart.rb +10 -56
  262. data/lib/cyberweb/colours/colours.rb +149 -4
  263. data/lib/cyberweb/commandline/commandline_interface.rb +13 -8
  264. data/lib/cyberweb/configuration/load_the_configuration_file.rb +1 -1
  265. data/lib/cyberweb/constants/constants.rb +592 -2
  266. data/lib/cyberweb/controller/{webobject_controller.rb → controller.rb} +1 -1
  267. data/lib/cyberweb/css_manager/css_manager.rb +237 -0
  268. data/lib/cyberweb/databases/sqlite.rb +56 -0
  269. data/lib/cyberweb/debug/debug.rb +1 -1
  270. data/lib/cyberweb/encoding/encoding.rb +11 -0
  271. data/lib/cyberweb/erb/test.rhtml +0 -0
  272. data/lib/cyberweb/erb/test_template.erb +0 -0
  273. data/lib/cyberweb/evaluate_from_the_same_named_file_then_serve.rb +1 -1
  274. data/lib/cyberweb/favicon/favicon.rb +8 -7
  275. data/lib/cyberweb/forum/README.md +4 -0
  276. data/lib/cyberweb/foto_gallery/foto_gallery.rb +158 -0
  277. data/lib/cyberweb/generator/README.md +2 -2
  278. data/lib/cyberweb/generator/cgi.rb +22 -9
  279. data/lib/cyberweb/generator/static_webpage.rb +22 -12
  280. data/lib/cyberweb/html_tags/README.md +3 -3
  281. data/lib/cyberweb/html_tags/button.rb +10 -2
  282. data/lib/cyberweb/html_tags/h2.rb +6 -4
  283. data/lib/cyberweb/html_tags/html_tags.rb +17 -1
  284. data/lib/cyberweb/html_tags/input.rb +10 -5
  285. data/lib/cyberweb/html_tags/legend.rb +1 -1
  286. data/lib/cyberweb/html_tags/span.rb +10 -2
  287. data/lib/cyberweb/html_tags/table.rb +30 -19
  288. data/lib/cyberweb/html_template/html_template.rb +248 -85
  289. data/lib/cyberweb/images/embed_this_image.rb +3 -1
  290. data/lib/cyberweb/images/images.rb +2 -2
  291. data/lib/cyberweb/images/is_image.rb +2 -1
  292. data/lib/cyberweb/images/path_to_images.rb +2 -1
  293. data/lib/cyberweb/images/remove_this_substring_from_all_images.rb +1 -1
  294. data/lib/cyberweb/images/standalone_drag_and_drop_this_image.rb +3 -3
  295. data/lib/cyberweb/images/string_image.rb +6 -3
  296. data/lib/cyberweb/images_base64_encoded/404_ERROR.png.md +1 -0
  297. data/lib/cyberweb/images_base64_encoded/AUSRUFUNGSZEICHEN.png.md +0 -0
  298. data/lib/cyberweb/images_base64_encoded/BLUEARROW.png.md +0 -0
  299. data/lib/cyberweb/images_base64_encoded/BUBBLE.png.md +0 -0
  300. data/lib/cyberweb/images_base64_encoded/CAT.png.md +0 -0
  301. data/lib/cyberweb/images_base64_encoded/CAUTION.png.md +0 -0
  302. data/lib/cyberweb/images_base64_encoded/CHEERING_PERSON.png.md +0 -0
  303. data/lib/cyberweb/images_base64_encoded/CURSOR.png.md +0 -0
  304. data/lib/cyberweb/images_base64_encoded/DOT_01.png.md +0 -0
  305. data/lib/cyberweb/images_base64_encoded/DUCKY.png.md +0 -0
  306. data/lib/cyberweb/images_base64_encoded/ELEPHANT.png.md +0 -0
  307. data/lib/cyberweb/images_base64_encoded/HALLOWEEN.png.md +0 -0
  308. data/lib/cyberweb/images_base64_encoded/HANGING_MONKEY.png.md +0 -0
  309. data/lib/cyberweb/images_base64_encoded/LENS.png.md +0 -0
  310. data/lib/cyberweb/images_base64_encoded/README.md +0 -0
  311. data/lib/cyberweb/images_base64_encoded/SIX_SIDED_DICE.png.md +1 -0
  312. data/lib/cyberweb/images_base64_encoded/TU_WIEN_LOGO.png.md +0 -0
  313. data/lib/cyberweb/images_base64_encoded/VOGEL.png.md +0 -0
  314. data/lib/cyberweb/javascript/drag_and_drop.rb +17 -14
  315. data/lib/cyberweb/javascript/javascript.rb +79 -34
  316. data/lib/cyberweb/javascript/javascript_clock.rb +50 -14
  317. data/lib/cyberweb/javascript/javascript_helper/javascript_helper.rb +59 -0
  318. data/lib/cyberweb/javascript/jquery.rb +9 -5
  319. data/lib/cyberweb/javascript/on_click_change_opacity.rb +5 -1
  320. data/lib/cyberweb/javascript/on_click_hide.rb +2 -0
  321. data/lib/cyberweb/javascript/popup.rb +5 -2
  322. data/lib/cyberweb/javascript/resize.rb +4 -1
  323. data/lib/cyberweb/javascript_code/README.md +1 -1
  324. data/lib/cyberweb/javascript_code/custom_functions.js +51 -25
  325. data/lib/cyberweb/javascript_code/disable_right_click.js +5 -0
  326. data/lib/cyberweb/javascript_code/games/snake.js +113 -0
  327. data/lib/cyberweb/javascript_code/games/tetris.js +491 -0
  328. data/lib/cyberweb/javascript_code/games/tic-tac-toe.js +125 -0
  329. data/lib/cyberweb/javascript_code/html_colours.js +161 -0
  330. data/lib/cyberweb/javascript_code/jquery/jquery-3.6.1.js +10909 -0
  331. data/lib/cyberweb/javascript_code/select_everything_on_mouse_click_event.js +23 -0
  332. data/lib/cyberweb/javascript_code/simple_calculator.js +3 -3
  333. data/lib/cyberweb/javascript_code/simulate_a_dice.js +20 -0
  334. data/lib/cyberweb/javascript_code/sleep.js +3 -0
  335. data/lib/cyberweb/mouse/mouse.rb +4 -1
  336. data/lib/cyberweb/objectified/html_tags/README.md +13 -0
  337. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/a.rb +17 -35
  338. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/abbr.rb +18 -9
  339. data/lib/cyberweb/objectified/html_tags/base.rb +960 -0
  340. data/lib/cyberweb/objectified/html_tags/blockquote.rb +106 -0
  341. data/lib/cyberweb/{objectified_html_tags/span.rb → objectified/html_tags/body.rb} +25 -20
  342. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/button.rb +26 -34
  343. data/lib/cyberweb/objectified/html_tags/canvas.rb +202 -0
  344. data/lib/cyberweb/objectified/html_tags/cite.rb +103 -0
  345. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/combobox.rb +26 -34
  346. data/lib/cyberweb/objectified/html_tags/div.rb +155 -0
  347. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/embed.rb +18 -33
  348. data/lib/cyberweb/objectified/html_tags/fieldset.rb +107 -0
  349. data/lib/cyberweb/objectified/html_tags/figure.rb +152 -0
  350. data/lib/cyberweb/objectified/html_tags/form.rb +155 -0
  351. data/lib/cyberweb/objectified/html_tags/h1.rb +176 -0
  352. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h2.rb +32 -40
  353. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h3.rb +30 -42
  354. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h4.rb +30 -42
  355. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h5.rb +31 -40
  356. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h6.rb +31 -41
  357. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/hbox.rb +12 -10
  358. data/lib/cyberweb/objectified/html_tags/head.rb +126 -0
  359. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/img.rb +47 -32
  360. data/lib/cyberweb/objectified/html_tags/include_objectified_html_tags.rb +49 -0
  361. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/input.rb +50 -51
  362. data/lib/cyberweb/objectified/html_tags/map.rb +107 -0
  363. data/lib/cyberweb/{objectified_html_tags/div.rb → objectified/html_tags/meta.rb} +36 -47
  364. data/lib/cyberweb/{objectified_html_tags/h1.rb → objectified/html_tags/object.rb} +34 -42
  365. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/p.rb +17 -32
  366. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/pre.rb +28 -34
  367. data/lib/cyberweb/{objectified_html_tags/table.rb → objectified/html_tags/progress.rb} +99 -94
  368. data/lib/cyberweb/objectified/html_tags/span.rb +103 -0
  369. data/lib/cyberweb/objectified/html_tags/table.rb +257 -0
  370. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/textarea.rb +25 -36
  371. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/title.rb +11 -17
  372. data/lib/cyberweb/{objectified_html_tags/form.rb → objectified/html_tags/ul.rb} +45 -42
  373. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/window.rb +15 -10
  374. data/lib/cyberweb/objectified/mask/README.md +8 -0
  375. data/lib/cyberweb/objectified/mask/compatibility_to_html_tags.rb +40 -0
  376. data/lib/cyberweb/objectified/mask/mask.rb +490 -0
  377. data/lib/cyberweb/objectified/web_object/README.md +4 -0
  378. data/lib/cyberweb/objectified/web_object/web_object.rb +119 -0
  379. data/lib/cyberweb/predefined_and_freeform_methods/frage.rb +4 -2
  380. data/lib/cyberweb/predefined_and_freeform_methods/freeform_methods.rb +30 -19
  381. data/lib/cyberweb/predefined_and_freeform_methods/hash_registered_extra_tags.rb +6 -0
  382. data/lib/cyberweb/predefined_and_freeform_methods/header.rb +2 -0
  383. data/lib/cyberweb/predefined_and_freeform_methods/predefined_methods.rb +10 -175
  384. data/lib/cyberweb/project/project.rb +9 -4
  385. data/lib/cyberweb/rack/request.rb +11 -11
  386. data/lib/cyberweb/raw_images/404.png +0 -0
  387. data/lib/cyberweb/raw_images/500.png +0 -0
  388. data/lib/cyberweb/raw_images/README.md +2 -0
  389. data/lib/cyberweb/raw_images/a_dice.png +0 -0
  390. data/lib/cyberweb/raw_images/food.png +0 -0
  391. data/lib/cyberweb/raw_images/ground.png +0 -0
  392. data/lib/cyberweb/requires/require_generators.rb +1 -1
  393. data/lib/cyberweb/requires/require_html_tags_files.rb +1 -1
  394. data/lib/cyberweb/requires/require_javascript_files.rb +1 -1
  395. data/lib/cyberweb/requires/require_objectified_html_tags_files.rb +29 -3
  396. data/lib/cyberweb/requires/require_the_constants.rb +3 -1
  397. data/lib/cyberweb/requires/require_the_cyberweb_project.rb +12 -31
  398. data/lib/cyberweb/requires/require_the_toplevel_methods_files.rb +1 -1
  399. data/lib/cyberweb/requires/require_web_object_files.rb +1 -1
  400. data/lib/cyberweb/requires/require_yaml.rb +3 -3
  401. data/lib/cyberweb/rest +1 -0
  402. data/lib/cyberweb/route_handler/class_based_test.rb +43 -0
  403. data/lib/cyberweb/route_handler/module/misc.rb +108 -0
  404. data/lib/cyberweb/route_handler/module/route_handler_module.rb +215 -0
  405. data/lib/cyberweb/route_handler/module/verbs.rb +53 -0
  406. data/lib/cyberweb/route_handler/route_handler.rb +56 -0
  407. data/lib/cyberweb/route_handler/test.rb +43 -0
  408. data/lib/cyberweb/{constants/array_predefined_constants.rb → sinatra/base/set_use_this_port.rb} +16 -9
  409. data/lib/cyberweb/sinatra/base/use_this_port.rb +40 -0
  410. data/lib/cyberweb/sinatra/base.rb +51 -36
  411. data/lib/cyberweb/sinatra/custom_extensions.rb +39 -14
  412. data/lib/cyberweb/standalone_classes/all_css_classes.rb +1 -1
  413. data/lib/cyberweb/standalone_classes/calculator.rb +7 -1
  414. data/lib/cyberweb/standalone_classes/correct_image_entries_in_html_file.rb +12 -7
  415. data/lib/cyberweb/standalone_classes/turn_html_into_cyberweb.rb +13 -11
  416. data/lib/cyberweb/svg/standalone/README.md +2 -0
  417. data/lib/cyberweb/svg/standalone/amusement_park.svg +738 -0
  418. data/lib/cyberweb/svg/svg.cgi +2 -3
  419. data/lib/cyberweb/toplevel_methods/a.rb +2 -1
  420. data/lib/cyberweb/toplevel_methods/anmerkung.rb +3 -0
  421. data/lib/cyberweb/toplevel_methods/audio.rb +1 -1
  422. data/lib/cyberweb/toplevel_methods/bold.rb +9 -3
  423. data/lib/cyberweb/toplevel_methods/charsets.rb +17 -13
  424. data/lib/cyberweb/toplevel_methods/consider_serving_the_web_object.rb +3 -3
  425. data/lib/cyberweb/toplevel_methods/css.rb +719 -25
  426. data/lib/cyberweb/{csv → toplevel_methods}/csv.rb +5 -3
  427. data/lib/cyberweb/{constants/roebe.rb → toplevel_methods/custom_error_page.rb} +10 -10
  428. data/lib/cyberweb/toplevel_methods/{date.rb → date_and_time.rb} +23 -10
  429. data/lib/cyberweb/toplevel_methods/disable.rb +7 -3
  430. data/lib/cyberweb/toplevel_methods/dot.rb +2 -2
  431. data/lib/cyberweb/toplevel_methods/download_webpage.rb +41 -3
  432. data/lib/cyberweb/toplevel_methods/edit_configuration_file.rb +1 -1
  433. data/lib/cyberweb/toplevel_methods/fields.rb +2 -0
  434. data/lib/cyberweb/toplevel_methods/filename.rb +3 -1
  435. data/lib/cyberweb/toplevel_methods/frames.rb +0 -2
  436. data/lib/cyberweb/toplevel_methods/google.rb +52 -0
  437. data/lib/cyberweb/{html_codes → toplevel_methods}/greek_letters.rb +22 -1
  438. data/lib/cyberweb/toplevel_methods/hardware_information.rb +2 -1
  439. data/lib/cyberweb/{help → toplevel_methods}/help.rb +3 -2
  440. data/lib/cyberweb/toplevel_methods/html_comment.rb +2 -2
  441. data/lib/cyberweb/toplevel_methods/html_tables.rb +401 -266
  442. data/lib/cyberweb/toplevel_methods/internal_hash.rb +173 -0
  443. data/lib/cyberweb/{io → toplevel_methods}/io.rb +1 -1
  444. data/lib/cyberweb/toplevel_methods/javascript.rb +42 -0
  445. data/lib/cyberweb/toplevel_methods/jquery.rb +8 -0
  446. data/lib/cyberweb/toplevel_methods/last_modified.rb +4 -0
  447. data/lib/cyberweb/toplevel_methods/links.rb +23 -7
  448. data/lib/cyberweb/toplevel_methods/listing.rb +2 -1
  449. data/lib/cyberweb/toplevel_methods/localhost.rb +3 -0
  450. data/lib/cyberweb/toplevel_methods/markdown.rb +3 -2
  451. data/lib/cyberweb/toplevel_methods/mathml.rb +5 -3
  452. data/lib/cyberweb/toplevel_methods/message_boxes.rb +6 -2
  453. data/lib/cyberweb/toplevel_methods/misc.rb +531 -79
  454. data/lib/cyberweb/toplevel_methods/padlem_and_marlem.rb +3 -0
  455. data/lib/cyberweb/toplevel_methods/path.rb +6 -1
  456. data/lib/cyberweb/toplevel_methods/pdf.rb +1 -1
  457. data/lib/cyberweb/toplevel_methods/process_content.rb +4 -7
  458. data/lib/cyberweb/toplevel_methods/progress.rb +6 -2
  459. data/lib/cyberweb/toplevel_methods/quote.rb +7 -1
  460. data/lib/cyberweb/toplevel_methods/random.rb +4 -1
  461. data/lib/cyberweb/toplevel_methods/rds.rb +14 -6
  462. data/lib/cyberweb/toplevel_methods/read_and_display.rb +3 -2
  463. data/lib/cyberweb/toplevel_methods/return_head_start.rb +1 -1
  464. data/lib/cyberweb/toplevel_methods/return_html_fin.rb +6 -3
  465. data/lib/cyberweb/toplevel_methods/return_html_header.rb +8 -3
  466. data/lib/cyberweb/toplevel_methods/return_html_start.rb +7 -2
  467. data/lib/cyberweb/toplevel_methods/return_meta_collection.rb +15 -4
  468. data/lib/cyberweb/toplevel_methods/return_pwd.rb +4 -0
  469. data/lib/cyberweb/toplevel_methods/return_strict_doctype.rb +8 -7
  470. data/lib/cyberweb/toplevel_methods/roebe.rb +6 -0
  471. data/lib/cyberweb/toplevel_methods/s2.rb +3 -1
  472. data/lib/cyberweb/toplevel_methods/sanitize_url.rb +7 -5
  473. data/lib/cyberweb/toplevel_methods/sbr.rb +7 -7
  474. data/lib/cyberweb/toplevel_methods/server_base_directory.rb +7 -3
  475. data/lib/cyberweb/toplevel_methods/show_and_display.rb +15 -15
  476. data/lib/cyberweb/toplevel_methods/show_configuration.rb +2 -2
  477. data/lib/cyberweb/toplevel_methods/spacer.rb +5 -2
  478. data/lib/cyberweb/toplevel_methods/svg.rb +62 -4
  479. data/lib/cyberweb/toplevel_methods/tag.rb +8 -2
  480. data/lib/cyberweb/toplevel_methods/temp_directory.rb +2 -2
  481. data/lib/cyberweb/toplevel_methods/textile.rb +2 -2
  482. data/lib/cyberweb/toplevel_methods/title.rb +14 -2
  483. data/lib/cyberweb/toplevel_methods/video.rb +3 -4
  484. data/lib/cyberweb/toplevel_methods/write_what_into.rb +2 -0
  485. data/lib/cyberweb/utility_scripts/README.md +3 -4
  486. data/lib/cyberweb/utility_scripts/autogenerate_drop_shadow_rules/autogenerate_drop_shadow_rules.rb +71 -0
  487. data/lib/cyberweb/utility_scripts/create_standalone_html_page.rb +223 -0
  488. data/lib/cyberweb/utility_scripts/download_all_images_from_this_website.rb +143 -0
  489. data/lib/cyberweb/utility_scripts/download_balloon_css.rb +1 -1
  490. data/lib/cyberweb/utility_scripts/fix_incorrect_links_to_locally_existing_images_in_this_file.rb +142 -0
  491. data/lib/cyberweb/utility_scripts/html_to_cyberweb_converter.rb +235 -0
  492. data/lib/cyberweb/utility_scripts/images_to_html/images_to_html.rb +878 -0
  493. data/lib/cyberweb/utility_scripts/images_to_html/misc.rb +62 -0
  494. data/lib/cyberweb/utility_scripts/new_tags.rb +105 -0
  495. data/lib/cyberweb/utility_scripts/simple_index/README.md +9 -0
  496. data/lib/cyberweb/utility_scripts/simple_index/simple_index.rb +149 -0
  497. data/lib/cyberweb/version/version.rb +2 -2
  498. data/lib/cyberweb/vue/README.md +2 -0
  499. data/lib/cyberweb/vue/vue.rb +91 -0
  500. data/lib/cyberweb/web_images/array_listing_all_project_images.rb +1 -1
  501. data/lib/cyberweb/web_images/map_symbol_to_image_location.rb +60 -4
  502. data/lib/cyberweb/web_images/web_images.rb +37 -20
  503. data/lib/cyberweb/{constants/array_images.rb → web_object/display_output_and_report.rb} +11 -10
  504. data/lib/cyberweb/web_object/english.rb +55 -0
  505. data/lib/cyberweb/web_object/favicon.rb +103 -22
  506. data/lib/cyberweb/web_object/html_tags.rb +1433 -0
  507. data/lib/cyberweb/web_object/images.rb +428 -398
  508. data/lib/cyberweb/web_object/{javascript.rb → javascript_and_jquery.rb} +174 -276
  509. data/lib/cyberweb/web_object/{links.rb → link.rb} +185 -83
  510. data/lib/cyberweb/web_object/misc.rb +3934 -3928
  511. data/lib/cyberweb/web_object/reset.rb +153 -67
  512. data/lib/cyberweb/web_object/run.rb +1 -1
  513. data/lib/cyberweb/web_object/web_object.rb +3690 -49
  514. data/lib/cyberweb/web_scraper/scrape_this_url.rb +4 -2
  515. data/lib/cyberweb/webmin/biology_server.cgi +14 -15
  516. data/lib/cyberweb/webmin/calculator.cgi +2 -2
  517. data/lib/cyberweb/webmin/colour_chart.cgi +4 -5
  518. data/lib/cyberweb/webmin/comments.cgi +8 -7
  519. data/lib/cyberweb/webmin/comments_data +0 -0
  520. data/lib/cyberweb/webmin/constants.rb +1 -2
  521. data/lib/cyberweb/webmin/dictionary.cgi +3 -4
  522. data/lib/cyberweb/webmin/sys_info.cgi +1 -2
  523. data/lib/cyberweb/webmin/webforum.cgi +1 -2
  524. data/lib/cyberweb/webmin/webmin.cgi +2 -3
  525. data/lib/cyberweb/yaml/autogenerated_system_settings.yml +10 -10
  526. data/lib/cyberweb/yaml/custom_tags.yml +1 -1
  527. data/lib/cyberweb/yaml/html5_global_attributes.yml +5 -1
  528. data/lib/cyberweb/yaml/html_tag_legend.yml +2 -0
  529. data/lib/cyberweb/yaml/http_status_codes.yml +4 -1
  530. data/lib/cyberweb/yaml/load_these_yaml_files_by_default.yml +29 -0
  531. data/lib/cyberweb/yaml/project_configuration.yml +42 -31
  532. data/lib/cyberweb/yaml/video_attributes.yml +2 -0
  533. data/lib/cyberweb/yaml/web_images.yml +1 -1
  534. data/test/REST/simple.rb +7 -0
  535. data/test/complex_tests/simple_sinatra_example_using_cyberweb/simple.rb +1 -1
  536. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.cgi +1 -1
  537. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.rb +4 -4
  538. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.sinatra +1 -2
  539. data/test/complex_tests/testing_frames.cgi +3 -5
  540. data/test/complex_tests/testing_objectified_html_tags/testing_objectified_html_tags.html +28 -0
  541. data/test/complex_tests/testing_objectified_html_tags/testing_objectified_html_tags.rb +175 -0
  542. data/test/complex_tests/testing_style_variants/show_coloured_boxes.cgi +11 -7
  543. data/test/complex_tests/testing_tables.cgi +3 -3
  544. data/test/complex_tests/testing_the_cyberweb_shell.rb +2 -0
  545. data/test/complex_tests/testing_web_object.rb +5 -2
  546. data/test/css/README.md +4 -3
  547. data/test/css/return_the_content_of_these_css_classes.rb +5 -1
  548. data/test/css/test_hover_css/test_hover_css.cgi +59 -0
  549. data/test/css/test_ordered_list/test_ordered_list.cgi +31 -0
  550. data/test/css/testing_css_effects.cgi +3 -4
  551. data/test/css/testing_css_masking.cgi +3 -4
  552. data/test/hello_world/hello_world.cgi +6 -4
  553. data/test/html_template/html_template.rb +15 -0
  554. data/test/javascript/testing_custom_functions.js +24 -0
  555. data/test/javascript/testing_drag_and_drop_support.cgi +1 -1
  556. data/test/javascript/testing_on_click_change_opacity.cgi +4 -5
  557. data/test/javascript/testing_snowflakes.cgi +2 -2
  558. data/test/simple_tests/ad-hoc-test.cgi +5 -2
  559. data/test/simple_tests/cgi/hello_world_with_cyberweb.cgi +14 -0
  560. data/test/simple_tests/commandline_tests.rb +21 -15
  561. data/test/simple_tests/display_this_file.cgi +2 -2
  562. data/test/simple_tests/simple_html_example.cgi +2 -1
  563. data/test/simple_tests/simple_html_test_page/simple_html_test_page.html +20 -0
  564. data/test/simple_tests/simple_status_page.cgi +2 -2
  565. data/test/simple_tests/string_s2_test.rb +5 -0
  566. data/test/simple_tests/test_simple_string_as_input.rb +3 -1
  567. data/test/simple_tests/testing_base64_images.cgi +3 -4
  568. data/test/simple_tests/testing_checkboxes.cgi +22 -0
  569. data/test/simple_tests/testing_dragging_an_image.cgi +5 -6
  570. data/test/simple_tests/testing_editable_text.cgi +2 -3
  571. data/test/simple_tests/testing_email.cgi +6 -7
  572. data/test/simple_tests/testing_embedding_a_pdf_file.cgi +5 -5
  573. data/test/simple_tests/testing_google_charts.cgi +3 -3
  574. data/test/simple_tests/testing_html_forms.cgi +3 -3
  575. data/test/simple_tests/testing_html_template.rb +2 -0
  576. data/test/simple_tests/testing_popup_div.cgi +2 -3
  577. data/test/simple_tests/testing_return_dataset_without_any_comments.rb +3 -1
  578. data/test/simple_tests/testing_the_cap_box.cgi +3 -4
  579. data/test/simple_tests/testing_the_div_tag.cgi +3 -4
  580. data/test/simple_tests/testing_the_headers_tag.cgi +3 -4
  581. data/test/simple_tests/testing_the_html_colours.cgi +2 -3
  582. data/test/simple_tests/testing_the_info_box.cgi +2 -3
  583. data/test/simple_tests/testing_the_li_tag.cgi +2 -1
  584. data/test/simple_tests/testing_the_s2_method.rb +6 -1
  585. data/test/simple_tests/testing_the_select_tag.cgi +16 -8
  586. data/test/simple_tests/testing_the_span_tag.cgi +2 -3
  587. data/test/simple_tests/testing_web_images.rb +4 -2
  588. data/test/testing_html_tags/button_example.cgi +6 -7
  589. metadata +345 -151
  590. data/doc/CONVENTIONS.md +0 -7
  591. data/doc/CYBERWEB_TUTORIAL.cgi +0 -43
  592. data/doc/FUTURE_DESIGN_GOAL_CONSIDERATIONS.md +0 -13
  593. data/doc/todo/TODO_FOR_THE_CYBERWEB_PROJECT.md +0 -1089
  594. data/examples/css/shadow_example_in_CSS.cgi +0 -30
  595. data/lib/cyberweb/charts/README.md +0 -2
  596. data/lib/cyberweb/charts/google_charts.rb +0 -51
  597. data/lib/cyberweb/colours/random_colour.rb +0 -28
  598. data/lib/cyberweb/colours/sanitize_for_colours.rb +0 -95
  599. data/lib/cyberweb/constants/array_local_css_files.rb +0 -35
  600. data/lib/cyberweb/constants/configuration_file.rb +0 -33
  601. data/lib/cyberweb/constants/http_status_codes.rb +0 -42
  602. data/lib/cyberweb/constants/project_constants.rb +0 -99
  603. data/lib/cyberweb/constants/standalone_constants.rb +0 -309
  604. data/lib/cyberweb/csv/README.md +0 -2
  605. data/lib/cyberweb/generator/webpage_for_images.rb +0 -553
  606. data/lib/cyberweb/html_codes/README.md +0 -15
  607. data/lib/cyberweb/images/real/README.md +0 -6
  608. data/lib/cyberweb/io/README.md +0 -1
  609. data/lib/cyberweb/javascript/scroll.rb +0 -17
  610. data/lib/cyberweb/objectified_html_tags/README.md +0 -8
  611. data/lib/cyberweb/objectified_html_tags/base.rb +0 -376
  612. data/lib/cyberweb/predefined_and_freeform_methods/hash_css_class_to_use.rb +0 -55
  613. data/lib/cyberweb/requires/require_charts.rb +0 -20
  614. data/lib/cyberweb/web_object/css.rb +0 -627
  615. data/lib/cyberweb/web_object/evaluate.rb +0 -126
  616. data/lib/cyberweb/web_object/html_related_tags.rb +0 -320
  617. data/lib/cyberweb/web_object/initialize.rb +0 -51
  618. data/lib/cyberweb/web_object/input_related_functionality.rb +0 -414
  619. data/lib/cyberweb/web_object/languages.rb +0 -172
  620. data/lib/cyberweb/web_object/params.rb +0 -289
  621. data/lib/cyberweb/web_object/sinatra_related_functionality.rb +0 -30
  622. data/lib/cyberweb/web_object/sitemap.rb +0 -176
  623. data/lib/cyberweb/web_object/table.rb +0 -378
  624. data/test/complex_tests/testing_objectified_html_tags.rb +0 -82
  625. data/test/javascript/testing_cheerleader_javascript.cgi +0 -0
@@ -0,0 +1,31 @@
1
+ <html>
2
+ <head>
3
+ <title>
4
+ Different colour on selected text
5
+ </title>
6
+
7
+ <style>
8
+
9
+ ::selection {
10
+ background-color: gold;
11
+ color: royalblue;
12
+ }
13
+
14
+ p {
15
+ margin: 2em;
16
+ }
17
+
18
+ body {
19
+ font-size: 1.6em;
20
+ }
21
+
22
+ </style>
23
+ </head>
24
+ <body>
25
+ <h1>Select anything on this page</h1>
26
+ <p>This is the first paragraph.</p>
27
+ <p>This is the second paragraph.</p>
28
+ <p>This is the third paragraph.</p>
29
+
30
+ </body>
31
+ </html>
@@ -0,0 +1,82 @@
1
+ <html>
2
+ <head>
3
+ <style>
4
+ * {
5
+ font-family: 'JJ', sans-serif;
6
+ }
7
+ .panel {
8
+ overflow: auto;
9
+ width: 100%;
10
+ height: 100vh;
11
+ position: relative;
12
+ background: radial-gradient(circle, #0e0e0e 15%, #010101);
13
+ }
14
+ .jj {
15
+ position: absolute;
16
+ top: 50%;
17
+ left: 50%;
18
+ transform: translate(-50%, -50%);
19
+ text-align: center;
20
+ font-size: 20vmin;
21
+ color: #fff;
22
+ line-height: 0.85;
23
+ text-transform: uppercase;
24
+ background-image: url(https://anonimag.es/i/cee6d0f7-9dd3-430b-b9c3-bee2c52779b453d9f.jpg);
25
+ background-size: contain;
26
+ -webkit-text-fill-color: rgba(255, 255, 255, 0.1);
27
+ -webkit-background-clip: text;
28
+ z-index: 10;
29
+ }
30
+
31
+ .jj + .jj {
32
+ -webkit-text-fill-color: red;
33
+ z-index: 20;
34
+ animation: meh 3s ease-out infinite alternate;
35
+ }
36
+ @keyframes meh {
37
+ from {
38
+ clip-path: polygon(100% 0, 100% 100%, 20% 100%, 61% 91%, 94% 47%);
39
+ }
40
+ 50% {
41
+ clip-path: polygon(100% 0, 100% 100%, 20% 100%, 59% 52%, 74% 13%);
42
+ }
43
+ to {
44
+ clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 85%, 87% 41%);
45
+ }
46
+ }
47
+ .jj span {
48
+ display: block;
49
+ }
50
+ @font-face {
51
+ font-family: 'JJ';
52
+ src: url('GothicNo13BT-Regular.eot');
53
+ font-weight: normal;
54
+ font-style: normal;
55
+ }
56
+ @font-face {
57
+ font-family: 'JJ';
58
+ src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff2'), url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAADSgAA8AAAAAWUQAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAA0hAAAABoAAAAcWNu+h0dERUYAADCoAAAAHQAAAB4AJwDtR1BPUwAAMOgAAAOcAAAGWGFChz9HU1VCAAAwyAAAACAAAAAgbJF0j09TLzIAAAHMAAAASQAAAGAS+Ce8Y21hcAAABDAAAAGmAAAB8sPXXIpnYXNwAAAwoAAAAAgAAAAI//8AA2dseWYAAAeoAAAl9AAARHw/Y2oRaGVhZAAAAVgAAAAzAAAANuepaRxoaGVhAAABjAAAACAAAAAkB5kD62htdHgAAAIYAAACGAAAA5ql1CPkbG9jYQAABdgAAAHQAAAB0HXzh7RtYXhwAAABrAAAAB4AAAAgATAARW5hbWUAAC2cAAABmQAAAuKhB02ycG9zdAAALzgAAAFmAAAB8DVaNzJ4nGNgZGBgAOJHO7a6xvPbfGXgZn4BFGE4FD1pA4z+H/lfhKWK+TCQy8HABBIFAIMPDaMAeJxjYGRgYD78X4SBgWXa/8j/USxVDEARFPAMAI8ABot4nGNgZGBgeM7gxMDOAAJMQMzIABJzAPMZACGpAXYAAHicY2BizGX8wsDKwMDUxdTFwMAwDUIDxYwYHjIggQYGBn0HBgYPBlSg8JuJ6fR/TwYz5sMMbxQYGAUdGUC6mU6D5BiYAL4FDuEAAAB4nG2Ty2tTURCHf3PSEAs1qLckgkkbtSFQQoUUa8CVoIUicSsiuhBE3SoFFwXJRkVcuJD6J7gRDL4IGCgqiiiSXV2Liyi+KAaxYLx+55iILQ18mXvnzJn3VUfhZzX+/PN37bHDKiVMGWsrkygr5xLK6o5KNq4pSFpXhcQBLWCfsap2IyftYvwF+xzshwkYgxHYDjthHPLexseAHD7q3o+Xdl0jiQ8q21v8r2jaVon3G7kETeip5FLISHvtjYadqcpZ1dU1HfSc23Jf9pA/iH9fKTesir1S0j3Fbyvu2UN4rl02p0Mh5zltIu5rahKct4Yia1FPg/stFfAxZnml7YGy5DFJrWV9jH+in/LP7jK26IOdv+fv1JBX6UWe+psq2jUNuX3EvxT/4jllx/HXVQ1ewiz1Hw19b1N/WwV3MvRrW/98AuaxmbGD3LurHf2ezaC/QP5b/btV6HNFo+juuVPxO+Qo+W1B1tGXbJb8ueu+qtgnoufZ0O8NcMtxN8xgqT+DAZFcmEEUryKT7EbyX//XQV5XwtyYwf+EGfhZPQl9jjbC3aCWRpjhGtSJP4cZdOL38C3oB/1fR+jL3/PiGvwM/KyQ3pc9U1Ir1PGYXG9h73fHz2+wK35e7bhDL8/1OQsvYAEewRm46XeIXfLfkd+TTPg+mmE/MoEuNYM7okXsTgwtEmMz+wK6HR8j39Mh509KK/0HwXHaqXicY2BgYGaAYBkGRgYQeAPkMYL5LAwXgLQBgwKQJcBQx7CG4T+jIaMTYzBjImMFYx3jJKbjTHcVRBSkFOQUlBTUFAwUrBRcFJWUhH4z/f8P1KnAsJBhHVCHI2MQYwJQRy1QxzGmGwrCChIKMgoKYB2WUB2M////f/z/4P8D//v/N/wv/J/63/+/93+Lf6x/vz448GDvgz0Pdj/Y8WD9g+UP5t0/eO8S6xOoa0kCjGwMcG2MTECCCV0BMChYWNnYOTi5uHl4+fgFBIWERUTFxCUkpaRlZOXkFRSVlFVU1dQ1NLW0dXT19A0MjYxNTM3MLSytrG1s7ewdHJ2cXVzd3D08vbx9fP38AwKDgkNCw8IjIqOiY2Lj4hMSGVpa2zsnTpuzcMGiJYuXLl+5YtXqtWvWrd+4edOWbVt37dy953ZBckrG3bL5eVmPSzIZ2mYwFDIwpJWCXZddxbBsR31SLsMpBoac6nsMDc1TDx+5fOXGzavXtjPsP/6I4cHDp8/ulF+/db+pq7G7o7evv2fyFIZJs2bPPHD6Yv7Zc+crLl04AwALIpcQAAAAAAAAAAAAAAAAABYAKgBcAKYA7AEuATwBUgFmAYQBmgGqAbYBwgHSAgQCFgI6AngClgLEAvoDDgNEA34DkAOmA7oDzgPiBB4EegSYBNIFBAUqBT4FUgWIBZ4FqgXGBeQF8gYaBjwGbgaUBtIHDgdUB2YHggecB84H6ggACBQIJgg2CEgIWghmCHQIogjICPYJHglMCWwJxAnkCfYKGAo8CkgKdAqSCroK4AsICyALWgt2C5YLrgveC/gMJAw4DIAMjgzQDPgNDg1EDYYNwA3qDfwOTA5eDq4O3A70DwQPUg9gD4APnA/CD/4QDBAwEEwQYBB+EJAQthDQEQIRPBGWEdQR+hIgEkoShhKwEugTDBNWE3ITjhOuE84T4hP2FA4UJhRaFJgU0BUIFUQVkhXOFegWIhZGFmoWkha6FtYW/hc0F2oXoBfaGCYYYBiqGPQZOhluGaIZ2hoSGiYaOhpSGmoaqhrmGxQbRBt4G74b8hwYHFYcfByiHMwc9h0oHVYdjB2YHbAdyB38HkAekh7WHvYfFh82H2YfeB+KH6AfrB/MH+QgCCAcICggNiBGIFYgZiCAIJogsiDWIQIhFiEsIYwhnCGsIbwh3iHsIhgiPnicnTwHdBTXtfNmVluk1bbZorraot2Vdld1tqgjBGqoUIUEqKBGE9X0YgTYYJqMAQk7P+7+QGRsE+PYDi7E+TEBW84/3xj7x981x/nfjh07TkIaRrP/vjezKwkWiCNpR6ud9+69775777ttRNFUDkVRr9MjFEMpKIrzc4Y4BBcmZ6g7fyjv3DkqhKynTvGfwCiacqGnUTp9DsbKKIrltHb8crW3P9LeTp/j/4C0/B/IOGPoO/orgJlMpVEU4mRcEF4yO3nZg+QV5PDLBLfQ/OXVG2qW1+xP35d5r/1eeLextq/6oGO/+0j64RrPVjc9Al9dG7rEX10bNlBAgTH07+gso6YklJfKB2r8UoOe4Qx6o8mfjfy+QBBWYUYGvczu9zld5K1UZrD7nXDPVAYjXBeDW7aZzO2zWmcWzp2Ptiaauxf0NBeeRr9NtZah93fTAS9/lS3gJGeLF1U19simTlF0ztHIZfnZ6Hjh2ro5S2QLWtlfxuj6kTWFy4B1x1ApoT8xWvp94A5LmWDtHorS+QL5Rr3UFtQb8wOlyOe0SQ0s4lAgyucpFc9MnvxMID5DqcyIl6NH5/Ad31Y8U1GBP4qHH3T3N4sXf7P4sbSkpLStaYmJaaNn6c9HExd/s2TJN4sfx59uwRcgBfhjCv0J/R5oSaZswCHKIbXbYOlBvPx8I7DFBFg5/Ntgz0HAO2M+EwBO2YEOPaouK53dtTKv7b6mdZNNi0uqD0+rdFh9hkITqzc5uL7WrYt7fTVt08tXt25018Tq75p3j/KBu92ZaU7U68lhTUlGB9CAsLxQu4m8UKKkYDGhyL3s0DGUBPSB1GH0JjumDiX19a3btIl+/+23/4v8CGNjQseoPwpjTUCki8MLiCFDl+FReCgeZ0GF6DKMUwE+mSvoCppcnCxokplkV6d17X7O8ZBzm/Mhx3O7u9AnJ6q3suvmP/vs/HXs1mo8dxsI7nl6DhWHJdbAGewgK3Y/h1Z1//nP8EPP+Ufn1audAj3GUBt1jrpASQWNAXl2D3bUTr9w4YknyH07dQ4ZUQCvG4uh/c/nNm3Cn7vhLp7HCPPcgxcu4PGhr0NPoANAN3wuA9lgUW0T/2IbE7j2JkX0CeQKPQf3tZQZVgayHeDyTUS4YVddzqBW2DctlqUUTZJ/+Upfotadt2ZVvvtv2uQUjaZAgxZtvMfVWO/Yv+nLSXX15R1I63O7ffwf/BmZwpqK4TIJdBY0G7bKnx/ktI/2rkzbSMe3dY76hTHpcHka6EjA9Jcxfh/GCvoF5BixenEGp3V5TmZGkmaot71tad+mDx7KOjC52RF0BwPzulZ0NJ+48yiGY4b1nAY42cAfDssely/InswfeStNRVgkCGQZXiuRX8sxxCYla1K82thYTWayJsGoPozOdbXPys94s7drVJ2U7fQWBJ1oPUrLctvMDn2s7mLvko2muIaGz/tWqoCXSiDgFVhnDKURpFIqY2Gj4R3e83vukMsNli8uns3JgR1Ermy+bO8p9ABff2gv0J0AdP8Y5low3WGys2m7zWBnrQa7TOSD3eb3JT3ApqSqaQWryTqsQjNfk6RzDTM61lz8WzLn9lU7HOnxk9DQgeWWjeuP3vWBEuiyinucgrnMRiC5sMLi/TYCP7IRZngKgm0Gg/HzrMKaqR1LYJM1Sb4VC3qPIr3JrNIEtNoAeix79bodm+vLv8C73tuqTbdmBN5b6fEu92D+Y6t8XNxrXdDut9LMPn3zu2jPwkRUNnof/2N+N7EhqUDTGaBJQyWBTFPIiHdhvBEhLMC2i5gx/AYtaB55s7m+85WuPwADWLZIJ9Xka+AHbbMMfPTRgMW2uaO7u2Pz65zHvSQz8885Ga6FLpco488ArljKBeu3iVLhczKcGXHYRAoGDEs+kTXy52eJrCYlWaP54ChiTWb1dQyh6zNyS7M8yz38Zoc1098wnieLWinx7ENXxPMMH3vwyhkaGkJZFy7w74B2YrraxDGxY2NA4/Ew0PnwSNB8RO2k4unX6GpsF5AhHhkcfvo1vh79ZPTndHXfmTN9X3cK+ryNOkyfR6+LeK0G8r2Nrh19Eb/Q651rOom+jYPHxhhi/FloJz1p9Ofoeb6Orv5959cAk8DDMr2e2A+3YFkYX5k0GCD6CWLjc4ZVVIVkqhjDnsEhhpZJYiVK5M8wavajzubZ7bp4La2JUcZIzp1DKM6gMcTqpQa6PVhmdbISlWTh0t4WW0VKGmOOTdYkKYV1eENLmVfpd4Azk4EC4eyAvQqaxvYqyDHkw6Co4CpENpYMwbIdFDcU7yc9S1kbnN2QMVVJ+9oaZ+zrbnQkNdcw2ZnOpucO7++aPe/N4cd3Z9z/wqtb7+89Ovrkqru2VbUsRnNnbm5qLeEWz2iaueGh8lz+Q6Xc5pjev+6BioITPceeaytc077+P05se66p999PdBcQumOA2ktE/tXAL5Zj7S67LMi5nC6wBjF3n7/7uGqxKmFOqpRR0DJ6ZNTf3v6bazn5mQXAYQ7mXoa5WCec2FaKto+YYxWyMwZBbu02xpAfsWbcE3t7be58T5l5eo0qVuMyJbg0ihgNk5tqztLSIw3rSys18U0z12UblfTsk8jWY+c/eRk5C4Muco6CbrwD+2sVdHCCWRA9nLD5L0XoEuq+Y70/S5sSWLdqEToJxh/b/xKd7cjd9ZM/37Q7o3HnAbOmgcvI4PgrvoxMrhXzBK/rv2FdSsoorgpOGKJnjBavAp8x3HBdh9mq01kDR+j4zJTUTHokzem589t+dyU9jS+wZSNXjg3oxbCeAlhxGBIYRnKcwqGK+i4cP/4uPTK4ffDw4LhxinHjtBzafOnECRi0Z5D/TDh3XKE/ordh/U7Bj3EJDh6sHgt32GvREoNRiuDQ1tpRd7CqzZ/EYia8cwLpE+EQTE3R5VyamVnQ4Dq4HnPhjzKJhnE7MBf8rkwu/QC/RqTpcph2oFkL0OCbOzn75MnZ9EiICo36UQr/W0wXPhY/Jr4zHqv1D2NZgc8VsF8PExmBEwa7VsA+TqsnWqF4XJ0bf7J7ydJOlDs/K8OZg/7C6zatvWMzzAPppKXCPIxbjx1nhrUzdjD+BScYxYoTP/jRmdUKhh552uX6jj/Lb0OuAtOvCY9gLvopOdcILZyh4MT/ADlviHymG+GeidwzGU1cYBLC6/IFATiAN2i5l0viYxSMqvTlQ1LlrIZZSqDjr8EMV+FfYLkVQY6fg57yBfhzBFeYR2wEnrMUw2NAgYBU7qFGFSuPOfJwg5qVA5zfeKqCtZcAjjJ/dmPtVcF2YJl+D/ZUh30a07g9FR0bl3ZMqPn1/mSdLjmwbqM/SecN1Aoirap3Hrpz9d3g1aQf3PhVWd03SBmRaQEHpvMCkS+QaXZMMYl0Y0XyIO178nhXQqIz/tRjlTPM5W3zgvS0M8i5xDn6PD2iTgxsW7aK/0Kgt4PQm0KBr2/KloSpxVaVlmHQEM042XFU/6en2GGQYQnc6PcqUgNeZwMTS0v2tZUK9Mtj7MEFS+qxKNZP+qBjQ1eevAzFz/eipokLEdbxf2QdzujrkIGy0ibwD3wu4iPYte8p1FkpqVnqU8en1KXOyMieGscwcuXDagXNWOx0HENPO43SlzjwKuWarEOlVayxx9JbnWyatDLVYUb8R2E/7V1Ysx/7O3rB25HlILJVgkciuIB6c4zJzBgEATcfq0y20LKYeLkuNiFmcqF/VUfX6qFiY7IkTmFSWuU5uX7DpsW9a3+3PC1ZpoyPVcm1cjYmkNsSaF60cqFK0pjIylSaOH1skszpnVTmaF+9dQXQIhNtheifgrXQ7ulHx/vp4ODg6BuCncgHerENUxPPbkzvgKr8E8Dxkz0fd9MjvBGcXh/6ktdtWbN6K4kvRDnBOs9wLNaPIMsxQ/c9GJBJFIws+MMjMO1JT3lZFppLnGEyh36VxLjj50TmEl2Qyph7dg35JBI5kvkP+mRIIZH4hnYNFsgYOSMrBJg/TC73ZqHF/A+yvOXJqBfrmrO42CnoWWgULq8BjniKsrMMZxLMAZxVzL37HyuQFzxx4N5Hy0BotqCZL77In+b3vPVWZN7ZsF0V52nv2f9wsaLk4QOwfQ/99rd8N3+JrMMGl0fFsX4WMxaiaNvF19CGkZED6Jkje/iGI3hcJcQokwX+m7TEThsqr/X3tzEZJaMzS6lIHLNfiGNYZEcVqGYO/yL9/rU3mQDBJYf7jAgDW2l4ybdv/66tlD5dcu3Xwh6OoBeZFPoN4kPhg1lmRy9s/Wrt8y+spd/gv3n+eTyGCunRldAmjAd7TugKr9zbA5/fQQdQBf0J/hzZXRyqKL9vOR0YJjrEhq6gQzQFcMHeOPzEKTG5xKiYuEoyOzlPtXoTonozUjPk2RXFFV+jLLdkp3y4rUUysFBX4VlZWNlQeSJRGhdMv7+zlx9NSwDY7tBf0YNknwQLqwVAxNy7DDoihVhb3QP26q1TS2stMVj9U5Jh9/+vjv/r1p0tjajmWHFxXUORoHNX0BGgE3x0hxj0RHQNoKhovZkm5xw6cra7paV7fsdBXaJWJ6eRXKdJMLwf+0H/PXu3r1gqjc1yqNzpcxzu+MwstWAPLUDnUUInRHBWP1m8BtgAFLvCQRi48LGW2tKpW2ttA/+rgRhGW6BubNm5FcXWoaRR/2hdcVH9tNIiAg/Ten+YpyyHmWgwgQ9kizicMrte8OSDp3rzuS/p9qYl81u6O9vo36GElCwa5anmzPm3uQu27d+7fct2lS1GI/G4CogcQAyPtPRblEHQd06ACIKHXVosf1MDgcYuiT4mxpZYXo7u2OXqnIF2JtiTd/H3CvmPWohdKCqXKqQmgf0S/dFA0GDDfihxOT3IJhOtFxKtlxDcCNEMeKT5fp/N0FvcWtnuNpfTcpSSinr0Fh0rT5TEKQ26NGVby/KersUFRffqvDqtyeh74YWfBTrqOqdXKXYjQ5x+S6qUlrBSeQxDI4SklTW1swr9vtSMvKIPp5rNU8281el2U2JugOyNLiJBIIr2cGTvHsiqLsgdiGeTDCA3v2lsnMP/COU4zDYn/57oi8P1ZeKLyAQIOE7xHjp0CGsHXXLoEEWH/h6aTr1K7COc3DIiRTCQRFMehGMbeYxFc5/S5F2k8d+XZc21oWf4WYmT61P89NcAQMjbiH6GXsACPgr2JWSgqcLhn31AJpfag8d27L1/SpJCAe4z/8Fkj2rK0s/4P9wbTPKUrxPgjNFL4HgPib4T8IHuRFepVMEHIns2jhdjv913Z1XPYL01Bbn7VPqsvfBCV2Y2NzeHWVPDvyf+GuMvwNVF4E7g715vfaHAXwyloWkcewU5HwJZiqUSQZKIIGqwtAQNgjIKHqi5pbunpbm3u+U+Wq5Tm9XgcKqv7t2+nf92e/+gyeFMjy9orC/yEXtRix5EvGAvTGFqNNheaCJ66N5L1LDaLmRwXqRPYTXk/1p3Ff3jWElRQ12xqNO1sC5e0GnsHWuJnGPzykRsjxRJbbXE+OwbaFEXaNWpKZopdSgWG5/RJvRMQ1HptPqi4jCfKmCt8QKfykDXhGyM+0DiZM6Z7DajK/MDuU8rfCW/x+NTgDfLYXwm9hGAdnARGNeY0RKCQjMzpmEp22i3Vc7q7Mq++VW1LZtpW7xOrtc54oP5LY0z5z2emyaPVyrUUl/35JamGlmGOk4Bf2ukyVN8dS3zZmCcON5V04+RvXSW0tg6CCk7vRmZ2hIKC+8rKmJU6sBu3fFdTz+967i/qDIRz3OErqJ7IZbXRawflmDCcHiDpN6GwhwiAwNYBFAL/zYWAeTmlYLMSuCyB+YLfkLYj2bu6j+YHsvIUZzj4A505SfZOY6Cn8AUwUfIh/HgI6DIaKIoUjVEimEIqMkik8ilTNI9i7Y7IOZkpOn9i+5JYqRyicyCrpx2+afpTvPKly1+v+Vl+Fs3ze86jc/ba3C5C+AT/8BFznkZ8Q8k61cdyZBnHF61ftAr9yDJt5s2fctfGxjAflSohsxJAskjkuYCQ4EJ8QFxBkaFSE4xBU4P7cJ9jlhaHp++b1FSZpJzTrKaS3MkT0VbYl/1eV1TnlPwfUuWJ9gQFbHXtQB3gh+h2r8LZe490oSs25v4T7bjcQ0hPzpNX6J8OEdiE0SLhM/wi3jRBpsQ4uGkOHZl/flCXCfGu+g0RG0+S2ZJSabFx2gksgRpm9eqyyth4iWSeKY4n7V426QJ9NuLUGbh+spJKlVZ5YbCDLQIJbBlpVsrCuFd4ZQtpZPYBITpuQi+RBZ9LZyjvtjbS1+7liCsqQpo/RH9NpwhcA8HJhEaw2RjIRpP4RjZVdZut4UlZOlKRaJkhPSMUpF0+u0EXXkJISk4ZWvpJF0C0JYhED2JEA00NFNv0V+hvdjyIAPhjATnSUmgJOHy6a+652ZlxRUmZznZGcuXNBU2K5wGS6p6Btq7fIpawiqUMQ3Lq1KZeJlCQuzFhHoPa7D7TfjCvj7UkzeUT4+cOxfiPzl1ClmJjQ7tAd9wA446gpF8DhydYVfEIIbcnJCTkNnXVjd3Jia4qnPqBwSnRGVO0A+0zTNZvNW2/Gfv6ZfdcSDrUGyWEzwTd2NhZpYmvm+FfBfJ3YPv/gvwHfMAF5xGflKiAc0W8GJPQgg1TMB8PT69sa3hhGyI88dckyTbKq8rTuxpexlt54wJ9vpKlJ6azN2BplU7SvxTBmOzctJzOttzZ817Vh9bl2iy9nTG6CSLgqbZsfqWBRbCGyv1BF1GnxOynayJrNdEXAWTzEVW6Ao6fUGXhKQnwUWY0+ObMtXfzXU7HHDxTa3kesh7VLVyxvTV0+lz3U5nt6/HVzHZDzfgPdfju9vXM3tGsKBx+koiY2CLkBhHIBmsTRYpPeDVuyI24tXpjUut+w8eObDPsrRx+pA3LkYeE5tFj3w5s3Pmxx/D5ctTnryC9FN4HRdDTSDTL4/V6QyCZINsv8zfix0kmkoPHUT/CfyOp4JwbhBDINhqkxBSwmqDZoQ/xwEfiLYoADJ8+OrTELHnKEdtKKxJULHFU2a4Zk/rmdmaanUafZ05bn+ufU71wur53jRrbke+J/CpTplUUseqksqqWnzc1JmLau2pBm2qvyunprVcGfQW1bRPCVj1+Z3cFHduBdC3nm5C/fT5sdwstvHreyp66KbV8EXy04HQd4wSbIkKvAWIMJCYSbQIiUUTce6MQu7R5TSJ6XOSoeTGeano0Qf6li5dzf/P8r6+JQ/smDvvzJ3bWptb5uW1SrzpXq7b7pW0S7oa5y9bPq+ug77Ut/SB+xevWN43OLRiWUnLgm13npnftGN7y7xPbc7pNUcznVNnre3p3ViP90EF+uyhL4v+8c1jDjAlptfqzaZUqZXz5p9BtjSmU9pfNZlBb09RZZkbMnIDueu0MTJX4tIp1S/o9Bh2MrUMDaJDcMbAaYQ9MJNduCa3LmttXTa3ta+1te/a0SPkm9S3nqXPoxP4TMK1Cj/ON3fyCejEX4aAl5IILzUQeXhJxiGSlyXsLEOYnyAdYX7GYK2UAkIXyCtrwCe/HT36b32L+1YMHlu+xJ/3ePedc1ub59+5uX3e3Hn87x5+Kidz/oqG3K6u3Nkt9KUVS4/9YMmylcuOds+f3Voyt/Vqc+u8uVt3tSzoWJdREPeT48dR0/rCEsEOr6V70E76KWKj4WBZi1R0T02N4Pdq0eOokMSvoEksycXanL6AMayix0ubm7c1ze2s4vJr8uiR5rLS5rnbmifl29PzuSqciw+F6PN0E3BRPbHyx+DIUqz+/Znk5pse6XzkkU7+yU5MUwJoQDL9Dva62Oi1sERDTVpyki62q6KstKp6+mFkbk+e4/QbrYlWS6BocqGvp65FWJ8eGVEKwPJibZ1YD7tFOczvM3SjeK0ujk2Nk2mTdbEadWwHunNyWcCatPsu9IJCk2xKsllNqEqXnGjQGZXS2E0lk6rUsuzs/btYjPcMxMu7hHiZBcN+pmf5fRAuD5NY/jchN11BG7Cfz3IyQW2I+xLEEsHYewYc6tmcX+sdaL9L4aooz/AepA2XZ+XNb+r8bvSrwtpiPiSsDS6fglxh7hrsWuFbyCChT4PTGqfN6lzSTF8KjPbQD472oH6mrba+HeZpEEP9N3qTkpOKJ6mVOzVFs4qLZxWhRe4i+FUk1EhCJtQP7/Q4p0D8T+I0wEbmEyu2c6bHX8moJFmytZOKg5eLDA4X6slu9+aR+rSZekfIR7BizXPZlGnsdNja4oIifjaWLxPocC7osAznECPV/AmOv2nysYqKYx4kVcUZlUqjIQ6dO9fScq7lNU1SUpIiI+BzpwuyOkFnHTJ70MWBHwhXNEjUtZmo7jVBZ49QRC8doT/Rn5GegjhKS6WMUcogDjk4vx1UEMQ1KEhub3kVW1ePHpvNd6AZNTFSpf7I9nVmWA4CneBX8y/ihoEn70tIuFa/8LdXZtQLvQIYx/sijvTrMESX7fF4WH1lalKiJra9vLioYmrd/onIVC2Jjel5hrSEtDRwFfx57ZWzyLpYcV0e8Ej8VPmNkj+hEuz35Y+T+wAbbe36DqTUaGO1KXFSaWySNlatUrR+y1kSd9yJlt7IkTcUqiRDgiXNgCqQLtHEavVx6tVrK+KlHs+uLRKWz76BUzTpqegnvpOHSLOf1atiRN0AUv2c3hhOI5ShYFmMH0kHh2iZJC5GhXwZBh3ahxaOL7Vhd4sPKU1GtVFholsLSy12Ri2RqJkbqm2MULNizpKaFXtj1Qr+4K6vXM3F6a9x1SvEDQv7fRtYDNiC62EVYdswEdbwOFgvEVjGqLDghLgB3F0g6eUzZ02E+OSTixaNg3mcwEyPslZ8eOfgeiM5PtMQPpOux/BYXHaGRpepj7PE5rF18SkeZbxVMQHfxWAQNsHaJ1My6YKuCXgfEfliirIa0Q+5HtlG7JeMhz1L9FHCMH9BYJpwBe96mLRoU1xitG6Txmx/e/t46Gtql9XWLlM6CxyOAid9cnTeGMvwjdo7UxyOlFSnE9uY0BW4/ILIqF7w/ZCfHSvBWf122ccrVPyLl9E3F48ff5ffO2ShQqhy9JVY+uekLLduXbg+YxJrjoF/purIRLO90UuRJ7FFlqgYwSLfsjA5+u04ey3UQZ4CuSVn9fjKIgTVnFhd3ESEniyF0QyP1YGizkO4MU2Yx/+dSHh44vDYvJdgnu6GeViqw1NPh6VZnC0IMiPOf4TgZa+DIEpSGMTLRIKE+TmC8NDwTVEfA91jOT1Yp39YKep1ZH1+wKObMA7W5R9+UNRZYTkgG/+AccmwHtLLII7D6/AP/++YPobJF/VQDfQz5GSIZBUx3f7h90WZD5Mr1tU/IPVLm5i1nVBHJksXauJC3q2A44br2oWK8mGF1wsOqDs11c3EoaJ1KHWstPzgup/i5hdXjh1F9vMy2AcW1+KiVSCjWoiJZclL0e3DdbVK5vhEI8EIdUvgNa5b2m5bucRmOXr1MgU28VYVTLp7+F/Ahzc+Or51IAy3wTc8hu8lgs/xz+DDAhQd5auCUN0aa1hXBLzHCV7u9nyNtsHRqVgc3ui0uLGNviVNf5+45xKRtkfEPXDeniuikkQn6FlQnFvi3yUoFKLuoWLpi3Qd1j3WRPoYcQbCNfLhh5XkZ+qHH9J18Osj/G7qhx8JdrsfaC2llHj3HBGiQOlkYySDlETaB2V25NEGtJqUZO1rGSlgqld5PJ6agNfs9W3O9HpqPgXSMjMF0vbZj+3buCejMX7NYfOxI0C3aifGSequIKPEyl1fecWVuEj1FSUT2zWxBEtzoh27JRwcoUTgHCCm7QYwE+C8JHgkUeBgkY2AqgibvuuhiWYQZFOA90jYK7gBorjdEZCNxDReBy/sEoAdJvVZWKdCyLKHK7RYecNV2h/CAscqtcSCj/UzkFw/K5YNcBcDBODhpgCpnXsill25qG1e8OQTpLchg1GCp7kYLVuzbNWzKA83N4g5W3foCjoB8FyYinDFTnCyXcFw85IH+YXsplB1mbVgTsvMct+ejDQWSWljnAE74UqdIZ2O626b37w6SdHR81/aVcjprylYkmBPSrcUjn4JPBTqr5+QXIjtthVYfNBFr8L2gQDdpBIrlHq/Py5ge3Rc38Em3BzX8DhcnxJcjttXlgXhi46Of0UQxZuiDNtKAecIwcndfn3RbGV0CizRDsWbkTNyg/8s0HVe5Lvz9twQFecm7LgIanQz5GISUMTJpBCcGTh7fBucVDiKFRxuUvCOjv7dWp9/zO++GSFLl9VOg3HYBy9wOgT504eu0OvAeZNRKlznIBQRD4RUyBmxOzIoEFaGhBIndqnFYXjDEL3UqE86tZjzLahtKJ+yfnN2pmSnZN70mhxv1Vn6dwmp2fTddHvz3P3dukpjwgX13Gb+L2XTpjZ3xMdMSa9tzMn5qypdn51ZMHcBJdbqTWJfge92nQXRffmo7QYnJ2RXbtJ8wM8e58Vj/gh9AxH9vE3nAPahonYP6MEURO8gQIeHvz8ebAei4tmGbfHN8AxH8ERswO3xYBsQFdV5wQLcDBsxABIR3zg9ux1GUc+iojwLWnYTfD8mSkaHfg+79grJE4rxBd4S7yGE+Y+7CwLDYz0I18aPwyz1HjqE+SeME+KQz+DwiQF+XR+HeA/9Wlw/GR2OQ0L4kZF/iLWA6+IQ76G3MP14fFMkDhHq9R9DHOImveSpSI9rZfg0g5gbF3FcQaNY2om0Kr+fyCJaGquONas1KoVuY+JWhbU6Q7c0eWEXLurPadWi5d58e2KqTaORBqZVF2zwOPKKOU2JPTcxs9R58sKujZt29m/E+Md6OVxRuw2ieq/jWhB+Gs0MX9+XcIP9ZcR1f0L6FFJv0akQhO2L1q2wDjY0SsfCl8PfA7YL+5ZRYKeAEESFPTye9k8JfMut4WNRiYaiVxCeaFjGfDkBzwjBk30LPFH3KBrWn0XbrCg0oP4bzkuBlvMiT623oCYs7tEImAcKEA2fIlIn20ZZ6fO0j5JDVGCAT8JVEpnVYJWE/0B3lXg9ZZ4PyCMIMvKe9nnSzPDmmc4qeONxlxHd2gI0rwQ4uONDbAUNBxRCPMEKpJfRwsMxUsMd2c6WdoPdOSnb65zbnprkmrQMk4+PEVrOahJYTfLqjj07ZOsPJK6B39IdaIfS6XDGqzwOr9vlVmd4BPtC+jdABnXYr4/SwUG8xnFdHMtAnq/v5Aj3A94WFvYKx8G6CvIbBdbwGKxPAVZi9M4S0esbB44Xg+MbQRJRZUSY5wl9SdGhhr2n8WDfAGG4AaZgGWmh9wPWnER6rm/e/YFDregdIJ3AhehdIPTXAi9IbxOJUVJJpDTW2mQnT/WEDbF7wDIVdxlaB84m6QTDm6LRQNT0Rd2uLbjLifYFys12l4GVib1OjEj/eUK/7dYrEHkTfRXpwKToq2CU4dib9KeR537E/jR8xoi9wq8IPbmcVuYPgnUPGmQGzlASDJ5cseJ9pHDsc6KC303bP+31QWE89fvw8wSR8do8r/eQ14uUadvT0OS/mbeb+SfFvCtchmG8AdsDazjPAE7iWO7QMS7VgGxHAxadzmZur0ObLx4//h6/V1fGsmW6ysydGzf0e5xpR+46fPTIR0jrzxz3vB+xg/RW8AeVENPm4E6QsdqL1DTOUdUEorqnwxqLVaO1mHWfL/ZxlY76npaWzgZXVsMLYde0bXYjUltqg8Uzppf4rarmufznef1I1Z+X9ze1DTumTa3iWf0n9C7E6n6q5Pt0mbMctjn2f7bZvH7SrJnlrcu+T885/emiReKeCD1un4LFy/1nu9xE+m7T7GYSyLpdzxs9BZPCiHmDR0jeQDshcyCKezh78GvsE41lD3JE/Se93sBrBXnCJNKlhQRaxaZv/oxAVLj5m3kpwgfS4wV8iD5fbPbiLwvzw01fET6i0OehBvI8YRrIG4QWJPLB/SS4omhnVAxOO2ApDB6u79bNbUnOMRhlFqNiem+WMtEzOdeVo0/WpBpiUfuO3Rtit8Xk1e7gr9S0VJtV/YrsyaBrS+kAOkD8cErM8iwVkzthX3LiGIHupQK9Y3RSS+gatJ9+lzzxx0VEfkmxZPYsSZGkunIv/W5lZU0lGftLeirKoc8KvQmc4ZdL6anr1+O+AtqLNjEZwCutWMEmx6zYWmzbRmo6tSXOAqezgD7lq4Vgc9q0GfgvJ4H7QsiBmijSh2nFbnwxMgjxLCqZpDdl5RQGFwTyDbp6d3ZZJR6/mJ6FBoS+XBQ14B+InvCe6JTQ1CCdQ/qwhL4bOzAIfi5wk1tTpy/cRuc8CV+EPop6A11BHrzuUmQ1oCtvdHWJnzNfCJ9rwb1gvriWgDxdYr4JraIuAWyp0HkGgM8NdtTOoAPi85NG1EmdI3kNwsvwc9W0JHz/ls9d0xg+epzAj49gsI5DhJQEHEEnTKIxTjhnR8Q5AtTxwIfGKIjgATrQvYSO+AglN8yJzEAUF9qNfg44tLjHK2hwGU1Sxk67AkGZ3+RCVcBUQ6JdUSZzJBqefDKHHnk7eyhvjW8R/xayb/StyRvKFp+D50J3Ezi4F1CKAZnsGIRThMQR2KjSmABQHgCoCUaTSXxrQhne9TmHvb/6lfdwznpv3urcI1m/+lXWkdzVAPcY9Rl6kZbgjkBdJD1yrKmkuKlpEyrYNGdOSfFcfGa0weUgeX5diMPCNSx4tQ2eHXxp8AL5onDmIyX0J8mWCf8LgcN9+N/n/yEY/4X/kfDHf+EfJjx/4z9QQBCDLKO+Jr0aYneVpW11a+tq3FF1430XZ5JZ4G5b2zKhcwOF5sG51jD2TP9J0oGgwugFW9qLfkb/B/0m8IfUaYWuIwe2SFq7XwZ+j73361m1s5B9YVnJwoo6c0MF/Wbw8uXg44/zf7kIXxTp6YKoGLUS2xN+ghi1dpPzHdvqn5HnJxKFXvpoz1CEI+kJz1J0DgwMTHyeIvIIgXgGhOHeAup1ECfCI63+/w8oJCB4eJylkLFOG0EQhv81hggpcoVEukxJ49OtbWQdRSTsIqJxESGqNGff2l6x3Fl7a5BfII+RR0gd8QS8RB6Bkp7f5xURSFTcSrPfzPzz7+gAdPAHCrvvJ+4jK3xWOnILn9Qk8h6O1a/IbRyph8j71DxGPsBR6yuVqn3I7G8ztWWFL+o4cgsd9S3yHhJ1FbmNE/U78j41/yIfsP6EMSqssIGHxQJLBAg0Mp6UlKNuYsm4ZlwxTuGorak1KFi/o4PHNWlKH8GI3cB+YNVw9oa1C87OkJAE55x3vP+/WDeZ4W143za+O+12uxJzKgtWS2otHR27GFerjbeLZRCdZankteSlrMvVeupsvTSF3FX+WqYbGdlQB2/yG7koZ4nIuXPSDNbiTW38rSlYHVfl3BamDDZ3dP/OhwOXs1xbMGGW8Lf02ajC0s5kUiWa2Q9uteA/cdzKMzWLtcv9++NnjBpDngynGPD00Xtteqb1cJidDgb93mufrcvWY4RLdN++vHOYVLo/uuy+rNHjsynFurnRS9KuTtKP2j4DnFmDOwAAAHicbdFVTxcAAADxn4iBHdjdAnZ3d3egYnd3YHdP56ZPOhXnBk7ExCl2t87u7lb00fmfz952X+BOkH/8iTPA/3gbMIUgKQVLJbU00gqRTnoZZJRJZllklU12oXLIKZfc8sgrn/wKKKiQwoooqpjiSiiplNLChItQRlnllFdBRZVUVkVV1VRXQ0211FZHXfXU10BDjTTWRFPNNNdCS6201kZb7bTXQUeddNZFV91010NPkXrprY8offXTX4yFFjlivXcWW22FjWJts9wDC6zzw0+rbLDUKU98t0mcX5L9ttVOF5wTH+gz0BqDXDLYeRddc9kVV703xE3X3bDLUN+sdccttw3z0WfLjDDcSKONMsZmY403zgQTTTbJFFN9MM0M00WbZaaDtphjtrnm+eSLQ+564aUEu73y2mFvAk+2u+e5hx557Jn7ntpjrwMSnbbPfmfMd9ISO5x11DFJVvrquBN/AW4Vb4sAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBMJnQMwC5jEAAA2AARUAAAAAAQAAAAoAHAAeAAFsYXRuAAgABAAAAAD//wAAAAAAAHicZZTPS1RRFMfPG9+oFeXMEAWS4sKxX2pghYxj0MJijAiSxmyUqKBNDS2iRSC4G/fuJCQXA+5cuBnETYGzeBs3D+bNjwehMEouXv/C63Pv3JmEGL5zzrv3nu/3nHvPvWKJyHkZlFGx8m+/fJJesRmRMBQ1Y318/1mNSeuLuYi2vWJFy3rlqLyTDWnIb6vbyljz1hvrg7VueRE78jryNfKn62HX966fdr99wx63X9g5O2+v2Bv2lu3Yv6IS7ZeN6D3Li04xn7dvRDPRFQ01c0lGJCG3wBiYAJOhI6nQlanwVKZDT+YYW5Vrso7dBfugDPr4DUkcDPA1qCObRAZEBkQGssRYBTYPtip+Db+O38DvkhicHqvqoEeG+T8bWwBV0AAx6Qv3JA4GyGcQqNWTkpQZbAZkUV7A5k3klo5eIXpFDvGV2lXya3FH4AvgU15b44KM8D+hstY8TVnH7oNK6JP9ENn7ZD4EX5PKh1Fv7ZRvcvZkhrElvgvYLVAJ16hwh+gk0WtUugNDEq0+VsfYhTi2vXtpk52Hr7KqY1VmV1hdlFhYZnWRyv1O1XP4Wey82es8+RQYU9XvYsugwrhH7dUwLzX8On4D/5C13dSRgLnJKSY0o6dXJMipj/kYiIOBcJtd30a7qXdphpN4DDLgKavnsFnymw9/cAqu5Fi7BFQ+yzqnJjntkdMeOe2ZCkumwpLO5QhcRrWEqotqSZ/xDKMZqpjDLmBbjL45YwdGB0bHMDqG0TGMPrWqzonRya3uOaWOU8PsG2b/TPf4sLc7yO/s4f/sPuwB97PdM/96JTCnHeiTVmdXRt9Dv4z+AfoHRt9F30XfRfsQ7dKZyly0XbRdtJNoF9FOol1Eu6Qro6ONntKyZJH/c52+fqm6j1715JHupRp+Hb+h16qTtnWsZ+LrekR15OIZ1h74vmmdONbjlahSRR3bwEZ0F6sO7u3oVtSd5mZWGa3h1/Eb+FH6pd2zqjcDagt03AFxB8QlTZxDXNLEqQ4d67xI7Xvm8xo90TPtG+gw45v7U6K+mHlfEvruqnt7kT33ZCzchDchKRmXKXojza5MwzILsnrvPVmlb4/5PgFxbnlCn7HSUuc8yYmk0Jgi5zT7MI32LOM5Igv6nUx2euEYnOj9HiUX9V5cl5vE3IZtXO7w1t6V++STIpc0eTyQDJk8k+e8uFl5JTlZ5FbnZRnmVV7fTd6UXV7eCh1Wo7sO5egv/HCGiHicY2BgYGQAgisqM9VA9KHoSRtgNAA/iwZ3AAA=) format('woff'), url('GothicNo13BT-Regular.ttf') format('truetype');
59
+ font-weight: normal;
60
+ font-style: normal;
61
+ }
62
+
63
+
64
+ </style>
65
+ </head>
66
+ <body>
67
+
68
+ <div class="panel">
69
+ <h1 class="jj">
70
+ <span>Cats</span>
71
+ <span>and</span>
72
+ <span>Mice</span>
73
+ </h1>
74
+ <h1 class="jj">
75
+ <span>Cats</span>
76
+ <span>and</span>
77
+ <span>Mice</span>
78
+ </h1>
79
+ </div>
80
+
81
+ </body>
82
+ </html>
@@ -25,7 +25,7 @@ Content
25
25
  {
26
26
  visibility: visible;
27
27
  opacity: 1;
28
- transition: opacity 5s linear;
28
+ transition: opacity 4s linear;
29
29
  }
30
30
 
31
31
  /* Fade-Out Effect */
@@ -33,7 +33,7 @@ Content
33
33
  {
34
34
  visibility: hidden;
35
35
  opacity: 0;
36
- transition: visibility 0s 5s, opacity 5s linear;
36
+ transition: visibility 0s 8s, opacity 8s linear;
37
37
  }
38
38
 
39
39
  #wrapper > div
@@ -0,0 +1,171 @@
1
+ <html>
2
+ <head>
3
+ <title>Flying Birds Example</title>
4
+ <style>
5
+ @import url('https://fonts.googleapis.com/css?family=Arima+Madurai:300');
6
+
7
+ *, *::before, *::after {
8
+ box-sizing: border-box;
9
+ }
10
+ h1 {
11
+ font-family: 'Arima Madurai', cursive;
12
+ color: black;
13
+ font-size: 4rem;
14
+ letter-spacing: -3px;
15
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.6);
16
+ position: relative;
17
+ z-index: 3;
18
+ }
19
+ .generic_flying_bird_container {
20
+ position: absolute;
21
+ top: 20%;
22
+ left: -10%;
23
+ transform: scale(0) translateX(-10vw);
24
+ will-change: transform;
25
+ animation-name: fly-right-one;
26
+ animation-timing-function: linear;
27
+ animation-iteration-count: infinite;
28
+ }
29
+
30
+ .container_for_the_birds {
31
+ z-index: 1;
32
+ position: relative;
33
+ overflow: hidden;
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ min-height: 50rem;
38
+ background-image: linear-gradient(to bottom, rgba(255, 168, 76, 0.6) 0%, rgba(255, 123, 13, 0.6) 100%), url('https://images.unsplash.com/photo-1446824505046-e43605ffb17f');
39
+ background-blend-mode: soft-light;
40
+ background-size: cover;
41
+ background-position: center center;
42
+ padding: 2rem;
43
+ }
44
+ .bird {
45
+ background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/174479/bird-cells-new.svg);
46
+ background-size: auto 100%;
47
+ width: 88px;
48
+ height: 125px;
49
+ will-change: background-position;
50
+ animation-name: fly-cycle;
51
+ animation-timing-function: steps(10);
52
+ animation-iteration-count: infinite;
53
+ }
54
+ .bird_one {
55
+ animation-duration: 1s;
56
+ animation-delay: -0.5s;
57
+ }
58
+ .bird_two {
59
+ animation-duration: 0.9s;
60
+ animation-delay: -0.75s;
61
+ }
62
+ .bird_three {
63
+ animation-duration: 1.25s;
64
+ animation-delay: -0.25s;
65
+ }
66
+ .bird_four {
67
+ animation-duration: 1.1s;
68
+ animation-delay: -0.5s;
69
+ }
70
+ .bird_container_one {
71
+ animation-duration: 15s;
72
+ animation-delay: 0;
73
+ }
74
+ .bird_container_two {
75
+ animation-duration: 16s;
76
+ animation-delay: 1s;
77
+ }
78
+ .bird_container_three {
79
+ animation-duration: 14.6s;
80
+ animation-delay: 9.5s;
81
+ }
82
+ .bird_container_four {
83
+ animation-duration: 16s;
84
+ animation-delay: 10.25s;
85
+ }
86
+ @keyframes fly-cycle {
87
+ 100% {
88
+ background-position: -900px 0;
89
+ }
90
+ }
91
+ @keyframes fly-right-one {
92
+ 0% {
93
+ transform: scale(0.3) translateX(-10vw);
94
+ }
95
+ 10% {
96
+ transform: translateY(2vh) translateX(10vw) scale(0.4);
97
+ }
98
+ 20% {
99
+ transform: translateY(0vh) translateX(30vw) scale(0.5);
100
+ }
101
+ 30% {
102
+ transform: translateY(4vh) translateX(50vw) scale(0.6);
103
+ }
104
+ 40% {
105
+ transform: translateY(2vh) translateX(70vw) scale(0.6);
106
+ }
107
+ 50% {
108
+ transform: translateY(0vh) translateX(90vw) scale(0.6);
109
+ }
110
+ 60% {
111
+ transform: translateY(0vh) translateX(110vw) scale(0.6);
112
+ }
113
+ 100% {
114
+ transform: translateY(0vh) translateX(110vw) scale(0.6);
115
+ }
116
+ }
117
+ @keyframes fly_right_two {
118
+ 0% {
119
+ transform: translateY(-2vh) translateX(-10vw) scale(0.5);
120
+ }
121
+ 10% {
122
+ transform: translateY(0vh) translateX(10vw) scale(0.4);
123
+ }
124
+ 20% {
125
+ transform: translateY(-4vh) translateX(30vw) scale(0.6);
126
+ }
127
+ 30% {
128
+ transform: translateY(1vh) translateX(50vw) scale(0.45);
129
+ }
130
+ 40% {
131
+ transform: translateY(-2.5vh) translateX(70vw) scale(0.5);
132
+ }
133
+ 50% {
134
+ transform: translateY(0vh) translateX(90vw) scale(0.45);
135
+ }
136
+ 51% {
137
+ transform: translateY(0vh) translateX(110vw) scale(0.45);
138
+ }
139
+ 100% {
140
+ transform: translateY(0vh) translateX(110vw) scale(0.45);
141
+ }
142
+ }
143
+
144
+ </style>
145
+ </head>
146
+
147
+ <body>
148
+
149
+ <div><h1>ONE</h1></div>
150
+ <div><h1>TWO</h1></div>
151
+ <div><h1>THREE</h1></div>
152
+ <div><h1>FOUR</h1></div>
153
+
154
+ <!-- Next follow the animated birds. -->
155
+
156
+ <div class="container_for_the_birds">
157
+ <div class="generic_flying_bird_container bird_container_one">
158
+ <div class="bird bird_one"></div>
159
+ </div>
160
+ <div class="generic_flying_bird_container bird_container_two">
161
+ <div class="bird bird_two"></div>
162
+ </div>
163
+ <div class="generic_flying_bird_container bird_container_three">
164
+ <div class="bird bird_three"></div>
165
+ </div>
166
+ <div class="generic_flying_bird_container bird_container_four">
167
+ <div class="bird bird_four"></div>
168
+ </div>
169
+ </div>
170
+ </body>
171
+ </html>