Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Position: sticky buttons not working in IE 11

I need to make the div containing the buttons sticky, so that the buttons in that div will stay at the bottom as the user scrolls the screen.

This is so that the user does not have to scroll all the way down to click on the buttons.

The div containing the buttons is all the way down here:

<div class="form-group sticky-button-thing-not-working-on-ie">     <div class="col-md-offset-2 col-md-10">         <input type="submit" value="Save" class="btn btn-default" />     </div> </div> 

.sticky-button-thing-not-working-on-ie {    position: sticky;    bottom: 0;    right: 0;    background: rgba(0, 211, 211, 0.6);  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>  <script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>  <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet"/>  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>          <div class="container body-content">        <h2>Edit</h2>        <form action="/Movies/Edit/3" method="post">          <input name="__RequestVerificationToken" type="hidden" value="kBoJXRfdKTYn4uw8fXl3V_yNVa_xD1s0vyepuNLJLxC3InZ-jA1R4b9EjFDO3SGMMp6T7E91m_wy9vGzm4Z0WUm1_8vljyrKMz6frJcQBqY1" />          <div class="form-horizontal">            <h4>Movie</h4>            <hr />              <input data-val="true" data-val-number="The field ID must be a number." data-val-required="The ID field is required." id="ID" name="ID" type="hidden" value="3" />              <div class="form-group">              <label class="control-label col-md-2" for="Title">Title</label>              <div class="col-md-10">                <input class="text-box single-line" data-val="true" data-val-length="The field Title must be a string with a minimum length of 3 and a maximum length of 60." data-val-length-max="60" data-val-length-min="3" id="Title" name="Title" type="text" value="Ghostbusters 2"                />                <span class="field-validation-valid" data-valmsg-for="Title" data-valmsg-replace="true"></span>              </div>            </div>            <div class="form-group">              <label class="control-label col-md-2" for="ReleaseDate">Release Date</label>              <div class="col-md-10">                <input class="text-box single-line" data-val="true" data-val-date="The field Release Date must be a date." data-val-required="The Release Date field is required." id="ReleaseDate" name="ReleaseDate" type="date" value="1986-02-23" />                <span class="field-validation-valid" data-valmsg-for="ReleaseDate" data-valmsg-replace="true"></span>              </div>            </div>              <div class="form-group">              <label class="control-label col-md-2" for="Genre">Genre</label>              <div class="col-md-10">                <input class="text-box single-line" data-val="true" data-val-length="The field Genre must be a string with a maximum length of 30." data-val-length-max="30" data-val-regex="The field Genre must match the regular expression &#39;^[A-Z]+[a-zA-Z&#39;&#39;-&#39;\s]*$&#39;."                data-val-regex-pattern="^[A-Z]+[a-zA-Z&#39;&#39;-&#39;\s]*$" data-val-required="The Genre field is required." id="Genre" name="Genre" type="text" value="Comedy" />                <span class="field-validation-valid" data-valmsg-for="Genre" data-valmsg-replace="true"></span>              </div>            </div>                  <div class="form-group">              <label class="control-label col-md-2" for="Price">Price</label>              <div class="col-md-10">                <input class="text-box single-line" data-val="true" data-val-number="The field Price must be a number." data-val-range="The field Price must be between 1 and 100." data-val-range-max="100" data-val-range-min="1" data-val-required="The Price field is required."                id="Price" name="Price" type="text" value="9.99" />                <span class="field-validation-valid" data-valmsg-for="Price" data-valmsg-replace="true"></span>              </div>            </div>              <div class="form-group">              <label class="control-label col-md-2" for="Rating">Rating</label>              <div class="col-md-10">                <input class="text-box single-line" data-val="true" data-val-length="The field Rating must be a string with a maximum length of 5." data-val-length-max="5" data-val-regex="The field Rating must match the regular expression &#39;^[A-Z]+[a-zA-Z&#39;&#39;-&#39;\s]*$&#39;."                data-val-regex-pattern="^[A-Z]+[a-zA-Z&#39;&#39;-&#39;\s]*$" id="Rating" name="Rating" type="text" value="G" />                <span class="field-validation-valid" data-valmsg-for="Rating" data-valmsg-replace="true"></span>              </div>            </div>                <div class="form-group sticky-button-thing-not-working-on-ie">              <div class="col-md-offset-2 col-md-10">                <input type="submit" value="Save" class="btn btn-default" />              </div>            </div>          </div>        </form>  </div>

The CSS class to make it sticky (working on Firefox):

.sticky-button-thing-not-working-on-ie {     position: sticky;     bottom: 0;     right: 0;     background: rgba(0, 211, 211, 0.6); } 

But the same is not working on Internet Explorer 11. Any help on how to get the same code working on IE11?

Expected result:

Sample page: https://jsfiddle.net/thunderbolt36/a4yjfg13/

like image 321
Tx36 Avatar asked Jun 05 '16 19:06

Tx36


People also ask

Does position sticky work in IE?

Position Sticky doesn't work in IE but there's a solution position: sticky is extremely useful when you build a web page, but it's not supported by every browser.

Why position sticky is not working?

Position sticky will most probably not work if overflow is set to hidden, scroll, or auto on any of the parents of the element. Position sticky may not work correctly if any parent element has a set height. Many browsers still do not support sticky positioning. Check out which browsers support position: sticky.

Is position sticky supported?

Position Sticky is supported by all major modern browsers, except for old IE. For Safari browsers you will need to add the -webkit prefix.

Does position sticky work in Edge?

The sticky doesn't work on IE11/edge, but luckily, in this case, we can use position : fixed, which will work on both older and newer browsers i.e. Anil Singh is an author, tech blogger, and software programmer.


2 Answers

sticky doesn't work on IE11, but luckily, in this case, you can use fixed, which will work on both old and new browsers.

.sticky-button-thing-not-working-on-ie {   position: fixed;                          /* added to support older browsers */   position: sticky;   bottom: 0;   right: 0;   background: rgba(0, 211, 211, 0.6); } 

And you can actually drop sticky, since it's not used how it's intended. sticky excels i.e. when you position it below the top edge, and when one scroll down it it will move with the page until it reach the top edge, where it will stop and stay until one scroll up again.

Side note: Edge support sticky from version 16

like image 91
Asons Avatar answered Sep 16 '22 14:09

Asons


IE11 will not support position:sticky and never will (as it is being superceded by Edge): see browser support at Can I Use

CSS Tricks recently posted something that may help: Sticky Footer, Five Ways

Even then, the flex example won't work with IE11, but you can tweak it using code from Normalizing Cross-browser Flexbox Bugs.

like image 45
aardrian Avatar answered Sep 19 '22 14:09

aardrian