Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Hiding rows from a sticky table header using jQuery

Posted on 2014-01-13
4
Medium Priority
?
766 Views
Last Modified: 2014-01-13
I'm using a jQuery plugin that will make my table header stick to the top of a users screen when they begin scrolling through my table. Its a pretty simple plugin to implement and works well.

However, as my table header takes up a fair amount of vertical real estate, I'd like for a few of the rows to disappear after a user begins scrolling (and once the header begins to "stick").

Here is an example of the type of table/table header I'm working with.

http://jsfiddle.net/MX8Qy/

Any help would be greatly appreciated. Thanks!
0
Comment
Question by:Adam
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 53

Expert Comment

by:Scott Fell, EE MVE
ID: 39777924
I think I have it working here http://jsfiddle.net/rBXvf/1/

I have comments to show my  updates
 // added to add back top part of header
  // added to remove top part of header

$(function(){
    $("table").stickyTableHeaders();
});
/*! Copyright (c) 2011 by Jonas Mosbech - https://github.com/jmosbech/StickyTableHeaders
    MIT license info: https://github.com/jmosbech/StickyTableHeaders/blob/master/license.txt */

;(function ($, window, undefined) {
	'use strict';

	var name = 'stickyTableHeaders';
	var defaults = {
			fixedOffset: 0
		};

	function Plugin (el, options) {
		// To avoid scope issues, use 'base' instead of 'this'
		// to reference this class from internal events and functions.
		var base = this;

		// Access to jQuery and DOM versions of element
		base.$el = $(el);
		base.el = el;

		// Listen for destroyed, call teardown
		base.$el.bind('destroyed',
			$.proxy(base.teardown, base));

		// Cache DOM refs for performance reasons
		base.$window = $(window);
		base.$clonedHeader = null;
		base.$originalHeader = null;

		// Keep track of state
		base.isSticky = false;
		base.leftOffset = null;
		base.topOffset = null;

		base.init = function () {
			base.options = $.extend({}, defaults, options);

			base.$el.each(function () {
				var $this = $(this);

				// remove padding on <table> to fix issue #7
				$this.css('padding', 0);

				base.$originalHeader = $('thead:first', this);
				base.$clonedHeader = base.$originalHeader.clone();

				base.$clonedHeader.addClass('tableFloatingHeader');
				base.$clonedHeader.css('display', 'none');

				base.$originalHeader.addClass('tableFloatingHeaderOriginal');

				base.$originalHeader.after(base.$clonedHeader);

				base.$printStyle = $('<style type="text/css" media="print">' +
					'.tableFloatingHeader{display:none !important;}' +
					'.tableFloatingHeaderOriginal{position:static !important;}' +
					'</style>');
				$('head').append(base.$printStyle);
			});

			base.updateWidth();
			base.toggleHeaders();

			base.bind();
		};

		base.destroy = function (){
			base.$el.unbind('destroyed', base.teardown);
			base.teardown();
		};

		base.teardown = function(){
			if (base.isSticky) {
				base.$originalHeader.css('position', 'static');
			}
			$.removeData(base.el, 'plugin_' + name);
			base.unbind();

			base.$clonedHeader.remove();
			base.$originalHeader.removeClass('tableFloatingHeaderOriginal');
			base.$originalHeader.css('visibility', 'visible');
			base.$printStyle.remove();

			base.el = null;
			base.$el = null;
		};

		base.bind = function(){
			base.$window.on('scroll.' + name, base.toggleHeaders);
			base.$window.on('resize.' + name, base.toggleHeaders);
			base.$window.on('resize.' + name, base.updateWidth);
		};

		base.unbind = function(){
			// unbind window events by specifying handle so we don't remove too much
			base.$window.off('.' + name, base.toggleHeaders);
			base.$window.off('.' + name, base.updateWidth);
			base.$el.off('.' + name);
			base.$el.find('*').off('.' + name);
		};

		base.toggleHeaders = function () {
			base.$el.each(function () {
				var $this = $(this);

				var newTopOffset = isNaN(base.options.fixedOffset) ?
					base.options.fixedOffset.height() : base.options.fixedOffset;

				var offset = $this.offset();
				var scrollTop = base.$window.scrollTop() + newTopOffset;
				var scrollLeft = base.$window.scrollLeft();
   // added to add back top part of header               
                 $('.row-1').show();
                 $('.row-2').show();
				if ((scrollTop > offset.top) && (scrollTop < offset.top + $this.height() - base.$clonedHeader.height())) {
                    
  // added to remove top part of header
                    $('.row-1').hide();
                    $('.row-2').hide();
                    
					var newLeft = offset.left - scrollLeft;
					if (base.isSticky && (newLeft === base.leftOffset) && (newTopOffset === base.topOffset)) {
						return;
					}

					base.$originalHeader.css({
						'position': 'fixed',
						'top': newTopOffset,
						'margin-top': 0,
						'left': newLeft,
						'z-index': 1 // #18: opacity bug
					});
					base.$clonedHeader.css('display', '');
					base.isSticky = true;
					base.leftOffset = newLeft;
					base.topOffset = newTopOffset;

					// make sure the width is correct: the user might have resized the browser while in static mode
					base.updateWidth();
				}
				else if (base.isSticky) {
					base.$originalHeader.css('position', 'static');
					base.$clonedHeader.css('display', 'none');
					base.isSticky = false;
				}
			});
		};

		base.updateWidth = function () {
			if (!base.isSticky) {
				return;
			}
			// Copy cell widths from clone
			var $origHeaders = $('th,td', base.$originalHeader);
			$('th,td', base.$clonedHeader).each(function (index) {

				var width, $this = $(this);

				if ($this.css('box-sizing') === 'border-box') {
					width = $this.outerWidth(); // #39: border-box bug
				} else {
					width = $this.width();
				}

				$origHeaders.eq(index).css({
					'min-width': width,
					'max-width': width
				});
			});

			// Copy row width from whole table
			base.$originalHeader.css('width', base.$clonedHeader.width());
		};

		base.updateOptions = function(options) {
			base.options = $.extend({}, defaults, options);
			base.updateWidth();
			base.toggleHeaders();
		};

		// Run initializer
		base.init();
	}

	// A plugin wrapper around the constructor,
	// preventing against multiple instantiations
	$.fn[name] = function ( options ) {
		return this.each(function () {
			var instance = $.data(this, 'plugin_' + name);
			if (instance) {
				if (typeof options === "string") {
					instance[options].apply(instance);
				} else {
					instance.updateOptions(options);
				}
			} else if(options !== 'destroy') {
				$.data(this, 'plugin_' + name, new Plugin( this, options ));
			}
		});
	};

})(jQuery, window);

Open in new window

0
 
LVL 1

Author Comment

by:Adam
ID: 39778241
Hello again Scott! :) This is pretty much everything I'm looking for, however, I need to keep the header cell that contains the search field.

Also, I added the jQuery code from the plugin I'm using in the fiddle but ideally, I'd rather keep the code I use to hide those rows separate from the plugin code (just in case there are any updates to the plugin).

Sorry, I know I'm just being picky now... ;)
0
 
LVL 53

Accepted Solution

by:
Scott Fell,  EE MVE earned 2000 total points
ID: 39778274
Ok, I did not see that was what you were asking for.

http://jsfiddle.net/mMppa/

I added a new row that is hidden when it starts and contains the search box.  When you scroll, the new row (at the top) shows while the other hides.  I had to set a height for the row-3.  

This gives you a good base to work with and tweak as you need.

<div style="width:3000px">
   some really really wide content goes here
</div>

<table>
   <thead>
       <tr class="search2"><th rowspan="8"><input type="text" placeholder="Search stuff" /></th></tr>
      <tr class="row-1">
          <th rowspan="3"><input type="text" placeholder="Search stuff" /></th>
         <th colspan="8">REMOVE ME!</th>
      </tr>
   
      <tr class="row-2">
         <th colspan="8">REMOVE ME TOO!!!</th>
      </tr>
      <tr class="row-3">
         <th>Col</th>
         <th>Col</th>
         <th>Col</th>
         <th>Col</th>
         <th>Col</th>
         <th>Col</th>
         <th>Col</th>
         <th>Col</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>
            A.P. Møller...
         </td>
         <td>
            DKK
         </td>
         <td>
            33,220.00
         </td>
         <td>
            760
         </td>
         <td>
            2.34
         </td>
         <td>
            33,140.00
         </td>
         <td>
            33,220.00
         </td>
         <td>
            594
         </td>
         <td>
            19,791,910
         </td>
      </tr>
      <tr>
         <td>
            A.P. Møller...
         </td>
         <td>
            DKK
         </td>
         <td>
            34,620.00
         </td>
         <td>
            640
         </td>
         <td>
            1.88
         </td>
         <td>
            34,620.00
         </td>
         <td>
            34,700.00
         </td>
         <td>
            9,954
         </td>
         <td>
            346,530,246
         </td>
      </tr>
      <tr>
         <td>
            Carlsberg A
         </td>
         <td>
            DKK
         </td>
         <td>
            380
         </td>
         <td>
            0
         </td>
         <td>
            0
         </td>
         <td>
            371
         </td>
         <td>
            391.5
         </td>
         <td>
            6
         </td>
         <td>
            2,280
         </td>
      </tr>
      <tr>
         <td>
            Carlsberg B
         </td>
         <td>
            DKK
         </td>
         <td>
            364.4
         </td>
         <td>
            8.6
         </td>
         <td>
            2.42
         </td>
         <td>
            363
         </td>
         <td>
            364.4
         </td>
         <td>
            636,267
         </td>
         <td>
            228,530,601
         </td>
      </tr>
      <tr>
         <td>
            Chr. Hansen...
         </td>
         <td>
            DKK
         </td>
         <td>
            114.5
         </td>
         <td>
            -1.6
         </td>
         <td>
            -1.38
         </td>
         <td>
            114.2
         </td>
         <td>
            114.5
         </td>
         <td>
            141,822
         </td>
         <td>
            16,311,454
         </td>
      </tr>
      <tr>
         <td>
            Coloplast B
         </td>
         <td>
            DKK
         </td>
         <td>
            809.5
         </td>
         <td>
            11
         </td>
         <td>
            1.38
         </td>
         <td>
            809
         </td>
         <td>
            809.5
         </td>
         <td>
            85,840
         </td>
         <td>
            69,363,301
         </td>
      </tr>
      <tr>
         <td>
            D/S Norden
         </td>
         <td>
            DKK
         </td>
         <td>
            155
         </td>
         <td>
            -1.5
         </td>
         <td>
            -0.96
         </td>
         <td>
            155
         </td>
         <td>
            155.1
         </td>
         <td>
            51,681
         </td>
         <td>
            8,037,225
         </td>
      </tr>
      <tr>
         <td>
            Danske Bank
         </td>
         <td>
            DKK
         </td>
         <td>
            69.05
         </td>
         <td>
            2.55
         </td>
         <td>
            3.83
         </td>
         <td>
            69.05
         </td>
         <td>
            69.2
         </td>
         <td>
            1,723,719
         </td>
         <td>
            115,348,068
         </td>
      </tr>
      <tr>
         <td>
            DSV
         </td>
         <td>
            DKK
         </td>
         <td>
            105.4
         </td>
         <td>
            0.2
         </td>
         <td>
            0.19
         </td>
         <td>
            105.2
         </td>
         <td>
            105.4
         </td>
         <td>
            674,873
         </td>
         <td>
            71,575,035
         </td>
      </tr>
      <tr>
         <td>
            FLSmidth &amp; Co.
         </td>
         <td>
            DKK
         </td>
         <td>
            295.8
         </td>
         <td>
            -1.8
         </td>
         <td>
            -0.6
         </td>
         <td>
            295.1
         </td>
         <td>
            295.8
         </td>
         <td>
            341,263
         </td>
         <td>
            100,301,032
         </td>
      </tr>
      <tr>
         <td>
            G4S plc
         </td>
         <td>
            DKK
         </td>
         <td>
            22.53
         </td>
         <td>
            0.05
         </td>
         <td>
            0.22
         </td>
         <td>
            22.53
         </td>
         <td>
            22.57
         </td>
         <td>
            190,920
         </td>
         <td>
            4,338,150
         </td>
      </tr>
      <tr>
         <td>
            Jyske Bank
         </td>
         <td>
            DKK
         </td>
         <td>
            144.2
         </td>
         <td>
            1.4
         </td>
         <td>
            0.98
         </td>
         <td>
            142.8
         </td>
         <td>
            144.2
         </td>
         <td>
            78,163
         </td>
         <td>
            11,104,874
         </td>
      </tr>
      <tr>
         <td>
            Københavns ...
         </td>
         <td>
            DKK
         </td>
         <td>
            1,580.00
         </td>
         <td>
            -12
         </td>
         <td>
            -0.75
         </td>
         <td>
            1,590.00
         </td>
         <td>
            1,620.00
         </td>
         <td>
            82
         </td>
         <td>
            131,110
         </td>
      </tr>
      <tr>
         <td>
            Lundbeck
         </td>
         <td>
            DKK
         </td>
         <td>
            103.4
         </td>
         <td>
            -2.5
         </td>
         <td>
            -2.36
         </td>
         <td>
            103.4
         </td>
         <td>
            103.8
         </td>
         <td>
            157,162
         </td>
         <td>
            16,462,282
         </td>
      </tr>
      <tr>
         <td>
            Nordea Bank
         </td>
         <td>
            DKK
         </td>
         <td>
            43.22
         </td>
         <td>
            -0.06
         </td>
         <td>
            -0.14
         </td>
         <td>
            43.22
         </td>
         <td>
            43.25
         </td>
         <td>
            167,520
         </td>
         <td>
            7,310,143
         </td>
      </tr>
      <tr>
         <td>
            Novo Nordisk B
         </td>
         <td>
            DKK
         </td>
         <td>
            552.5
         </td>
         <td>
            -3.5
         </td>
         <td>
            -0.63
         </td>
         <td>
            550.5
         </td>
         <td>
            552.5
         </td>
         <td>
            843,533
         </td>
         <td>
            463,962,375
         </td>
      </tr>
      <tr>
         <td>
            Novozymes B
         </td>
         <td>
            DKK
         </td>
         <td>
            805.5
         </td>
         <td>
            5.5
         </td>
         <td>
            0.69
         </td>
         <td>
            805
         </td>
         <td>
            805.5
         </td>
         <td>
            152,188
         </td>
         <td>
            121,746,199
         </td>
      </tr>
      <tr>
         <td>
            Pandora
         </td>
         <td>
            DKK
         </td>
         <td>
            39.04
         </td>
         <td>
            0.94
         </td>
         <td>
            2.47
         </td>
         <td>
            38.8
         </td>
         <td>
            39.04
         </td>
         <td>
            350,965
         </td>
         <td>
            13,611,838
         </td>
      </tr>
      <tr>
         <td>
            Rockwool In...
         </td>
         <td>
            DKK
         </td>
         <td>
            492
         </td>
         <td>
            0
         </td>
         <td>
            0
         </td>
         <td>
            482
         </td>
         <td>
            492
         </td>
         <td></td>
         <td></td>
      </tr>
      <tr>
         <td>
            Rockwool In...
         </td>
         <td>
            DKK
         </td>
         <td>
            468
         </td>
         <td>
            12
         </td>
         <td>
            2.63
         </td>
         <td>
            465.2
         </td>
         <td>
            468
         </td>
         <td>
            9,885
         </td>
         <td>
            4,623,850
         </td>
      </tr>
      <tr>
         <td>
            Sydbank
         </td>
         <td>
            DKK
         </td>
         <td>
            95
         </td>
         <td>
            0.05
         </td>
         <td>
            0.05
         </td>
         <td>
            94.7
         </td>
         <td>
            95
         </td>
         <td>
            103,438
         </td>
         <td>
            9,802,899
         </td>
      </tr>
      <tr>
         <td>
            TDC
         </td>
         <td>
            DKK
         </td>
         <td>
            43.6
         </td>
         <td>
            0.13
         </td>
         <td>
            0.3
         </td>
         <td>
            43.5
         </td>
         <td>
            43.6
         </td>
         <td>
            845,110
         </td>
         <td>
            36,785,339
         </td>
      </tr>
      <tr>
         <td>
            Topdanmark
         </td>
         <td>
            DKK
         </td>
         <td>
            854
         </td>
         <td>
            13.5
         </td>
         <td>
            1.61
         </td>
         <td>
            854
         </td>
         <td>
            855
         </td>
         <td>
            38,679
         </td>
         <td>
            32,737,678
         </td>
      </tr>
      <tr>
         <td>
            Tryg
         </td>
         <td>
            DKK
         </td>
         <td>
            290.4
         </td>
         <td>
            0.3
         </td>
         <td>
            0.1
         </td>
         <td>
            290
         </td>
         <td>
            290.4
         </td>
         <td>
            94,587
         </td>
         <td>
            27,537,247
         </td>
      </tr>
      <tr>
         <td>
            Vestas Wind...
         </td>
         <td>
            DKK
         </td>
         <td>
            90.15
         </td>
         <td>
            -4.2
         </td>
         <td>
            -4.45
         </td>
         <td>
            90.1
         </td>
         <td>
            90.15
         </td>
         <td>
            1,317,313
         </td>
         <td>
            121,064,314
         </td>
      </tr>
      <tr>
         <td>
            William Dem...
         </td>
         <td>
            DKK
         </td>
         <td>
            417.6
         </td>
         <td>
            0.1
         </td>
         <td>
            0.02
         </td>
         <td>
            417
         </td>
         <td>
            417.6
         </td>
         <td>
            64,242
         </td>
         <td>
            26,859,554
         </td>
      </tr>
   </tbody>
</table>
<div style="height: 4000px">
   lots of content down here...
</div>

Open in new window

$(function(){
    $("table").stickyTableHeaders();
});
/*! Copyright (c) 2011 by Jonas Mosbech - https://github.com/jmosbech/StickyTableHeaders
    MIT license info: https://github.com/jmosbech/StickyTableHeaders/blob/master/license.txt */

;(function ($, window, undefined) {
	'use strict';

	var name = 'stickyTableHeaders';
	var defaults = {
			fixedOffset: 0
		};

	function Plugin (el, options) {
		// To avoid scope issues, use 'base' instead of 'this'
		// to reference this class from internal events and functions.
		var base = this;

		// Access to jQuery and DOM versions of element
		base.$el = $(el);
		base.el = el;

		// Listen for destroyed, call teardown
		base.$el.bind('destroyed',
			$.proxy(base.teardown, base));

		// Cache DOM refs for performance reasons
		base.$window = $(window);
		base.$clonedHeader = null;
		base.$originalHeader = null;

		// Keep track of state
		base.isSticky = false;
		base.leftOffset = null;
		base.topOffset = null;

		base.init = function () {
			base.options = $.extend({}, defaults, options);

			base.$el.each(function () {
				var $this = $(this);

				// remove padding on <table> to fix issue #7
				$this.css('padding', 0);

				base.$originalHeader = $('thead:first', this);
				base.$clonedHeader = base.$originalHeader.clone();

				base.$clonedHeader.addClass('tableFloatingHeader');
				base.$clonedHeader.css('display', 'none');

				base.$originalHeader.addClass('tableFloatingHeaderOriginal');

				base.$originalHeader.after(base.$clonedHeader);

				base.$printStyle = $('<style type="text/css" media="print">' +
					'.tableFloatingHeader{display:none !important;}' +
					'.tableFloatingHeaderOriginal{position:static !important;}' +
					'</style>');
				$('head').append(base.$printStyle);
			});

			base.updateWidth();
			base.toggleHeaders();

			base.bind();
		};

		base.destroy = function (){
			base.$el.unbind('destroyed', base.teardown);
			base.teardown();
		};

		base.teardown = function(){
			if (base.isSticky) {
				base.$originalHeader.css('position', 'static');
			}
			$.removeData(base.el, 'plugin_' + name);
			base.unbind();

			base.$clonedHeader.remove();
			base.$originalHeader.removeClass('tableFloatingHeaderOriginal');
			base.$originalHeader.css('visibility', 'visible');
			base.$printStyle.remove();

			base.el = null;
			base.$el = null;
		};

		base.bind = function(){
			base.$window.on('scroll.' + name, base.toggleHeaders);
			base.$window.on('resize.' + name, base.toggleHeaders);
			base.$window.on('resize.' + name, base.updateWidth);
		};

		base.unbind = function(){
			// unbind window events by specifying handle so we don't remove too much
			base.$window.off('.' + name, base.toggleHeaders);
			base.$window.off('.' + name, base.updateWidth);
			base.$el.off('.' + name);
			base.$el.find('*').off('.' + name);
		};

		base.toggleHeaders = function () {
			base.$el.each(function () {
				var $this = $(this);

				var newTopOffset = isNaN(base.options.fixedOffset) ?
					base.options.fixedOffset.height() : base.options.fixedOffset;

				var offset = $this.offset();
				var scrollTop = base.$window.scrollTop() + newTopOffset;
				var scrollLeft = base.$window.scrollLeft();
   // added to add back top part of header               
                 $('.row-1').show();
                 $('.row-2').show();
                $('.search2').hide();
				if ((scrollTop > offset.top) && (scrollTop < offset.top + $this.height() - base.$clonedHeader.height())) {
                    
  // added to remove top part of header
                    $('.row-1').hide();
                    $('.row-2').hide();
                     $('.search2').show();
                    
					var newLeft = offset.left - scrollLeft;
					if (base.isSticky && (newLeft === base.leftOffset) && (newTopOffset === base.topOffset)) {
						return;
					}

					base.$originalHeader.css({
						'position': 'fixed',
						'top': newTopOffset,
						'margin-top': 0,
						'left': newLeft,
						'z-index': 1 // #18: opacity bug
					});
					base.$clonedHeader.css('display', '');
					base.isSticky = true;
					base.leftOffset = newLeft;
					base.topOffset = newTopOffset;

					// make sure the width is correct: the user might have resized the browser while in static mode
					base.updateWidth();
				}
				else if (base.isSticky) {
					base.$originalHeader.css('position', 'static');
					base.$clonedHeader.css('display', 'none');
					base.isSticky = false;
				}
			});
		};

		base.updateWidth = function () {
			if (!base.isSticky) {
				return;
			}
			// Copy cell widths from clone
			var $origHeaders = $('th,td', base.$originalHeader);
			$('th,td', base.$clonedHeader).each(function (index) {

				var width, $this = $(this);

				if ($this.css('box-sizing') === 'border-box') {
					width = $this.outerWidth(); // #39: border-box bug
				} else {
					width = $this.width();
				}

				$origHeaders.eq(index).css({
					'min-width': width,
					'max-width': width
				});
			});

			// Copy row width from whole table
			base.$originalHeader.css('width', base.$clonedHeader.width());
		};

		base.updateOptions = function(options) {
			base.options = $.extend({}, defaults, options);
			base.updateWidth();
			base.toggleHeaders();
		};

		// Run initializer
		base.init();
	}

	// A plugin wrapper around the constructor,
	// preventing against multiple instantiations
	$.fn[name] = function ( options ) {
		return this.each(function () {
			var instance = $.data(this, 'plugin_' + name);
			if (instance) {
				if (typeof options === "string") {
					instance[options].apply(instance);
				} else {
					instance.updateOptions(options);
				}
			} else if(options !== 'destroy') {
				$.data(this, 'plugin_' + name, new Plugin( this, options ));
			}
		});
	};

})(jQuery, window);

Open in new window

body
{
    margin: 0 auto;
    padding: 0 20px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #555;
}
table
{
    border: 0;
    padding: 0;
    margin: 0 0 20px 0;
    border-collapse: collapse;
}
th
{
    padding: 10px; /* NOTE: th padding must be set explicitly in order to support IE */
    text-align: center !important;        
    font-weight:bold;
    font-size: 18px;
    color: #FFF;
    background-color: #555;
}
tbody td
{
    padding: 10px;
    line-height: 18px;
    border-top: 1px solid #E0E0E0;
}
tbody tr:nth-child(2n)
{
    background-color: #F7F7F7;
}
tbody tr:hover
{
    background-color: #EEEEEE;
}
td
{
    text-align: right;
}
td:first-child, th:first-child
{
    text-align: left;
}
.row-3{height:50px;}

Open in new window

0
 
LVL 1

Author Closing Comment

by:Adam
ID: 39778277
Perfect! Thanks very much Scott.
0

Featured Post

The top UI technologies you need to be aware of

An important part of the job as a front-end developer is to stay up to date and in contact with new tools, trends and workflows. That’s why you cannot miss this upcoming webinar to explore the latest trends in UI technologies!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Boost your ability to deliver ambitious and competitive web apps by choosing the right JavaScript framework to best suit your project’s needs.
Originally, this post was published on Monitis Blog, you can check it here . Websites are getting bigger and more complicated by the day. Video, images and custom fonts are all great for showcasing your product or service. But the price to pay in…
In this tutorial viewers will learn how to embed Flash content in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: "<!DOCTYPE html>": Use the <object> tag to embed Flash content.: To specify that the object is Flash content, d…
In this tutorial viewers will learn how to embed videos in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: "<!DOCTYPE html>": Use the <video> tag to insert a video. Define the src as the URL of your video; this is similar to …

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question