Выезжающий слой с помощью CSS

Привет всем! Сегодня была интересная для реализации задача: выезжающий слой… вариантов нагуглено было немало (я вообще не сторонник изобретать велосипеды, и с удовольствием использую Google для решения подобного типа задач), но больше всего понравился вариант решения данной задачи с помощью CSS без подключения сторонних библиотек.

Для этого используем следующий код:

  1. <style>
    
  2. .hidden-menu {
    
  3.   display: block;
    
  4.   position: fixed;
    
  5.   list-style:none;
    
  6.   padding: 10px;
    
  7.   margin: 0;
    
  8.   box-sizing: border-box;
    
  9.   width: 200px;
    
  10.   background-color: #eee;
    
  11.   height: 25%;
    
  12.   top: 100;
    
  13.   left: -200px;
    
  14.   transition: left .5s;
    
  15.   z-index: 2;
    
  16.   -webkit-transform: translateZ(0);
    
  17.   -webkit-backface-visibility: hidden;
    
  18.   box-shadow: 0 0 10px rgba(0,0,0,0.5);
    
  19.   padding: 10px;
    
  20.   border-radius: 5px;
    
  21. }
    
  22.  
  23. .hidden-menu-ticker {
    
  24.   display: none;
    
  25. }
    
  26.  
  27. .btn-menu {
    
  28.   color: #fff;
    
  29.   background-color: #0058B9;
    
  30.   padding: 7px;
    
  31.   position: fixed;
    
  32.   top: 270px;
    
  33.   left: 5px;
    
  34.   cursor: pointer;
    
  35.   transition: left .23s;
    
  36.   z-index: 3;
    
  37.   width: 25px;
    
  38.   -webkit-transform: translateZ(0);
    
  39.   -webkit-backface-visibility: hidden;
    
  40. }
    
  41. .btn-menu span {
    
  42.   display: block;
    
  43.   height: 3px;
    
  44.   background-color: #fff;
    
  45.   margin: 5px 0 0;
    
  46.   transition: all .1s linear .23s;
    
  47.   position: relative;
    
  48. }
    
  49. .btn-menu span.first {
    
  50.   margin-top: 0;
    
  51. }
    
  52.  
  53. .hidden-menu-ticker:checked ~ .btn-menu {
    
  54.   left: 160px;
    
  55. }
    
  56. .hidden-menu-ticker:checked ~ .hidden-menu {
    
  57.   left: 0;
    
  58. }
    
  59. .hidden-menu-ticker:checked ~ .btn-menu span.first {
    
  60.   -webkit-transform: rotate(45deg);
    
  61.   top: 8px;
    
  62.  
  63. }
    
  64. .hidden-menu-ticker:checked ~ .btn-menu span.second {
    
  65.   opacity: 0;
    
  66. }
    
  67. .hidden-menu-ticker:checked ~ .btn-menu span.third {
    
  68.   -webkit-transform: rotate(-45deg);
    
  69.   top: -8px;    
    
  70. }
    
  71. </style>
    
  72.  
  73. <input type="checkbox" id="hmt" class="hidden-menu-ticker">
    
  74.  
  75. <label class="btn-menu" for="hmt">
    
  76.   <span class="first"></span>
    
  77.   <span class="second"></span>
    
  78.   <span class="third"></span>
    
  79. </label>
    
  80.  
  81. <ul class="hidden-menu">
    
  82. <table width="100%" border="0">
    
  83.     <td bgcolor="#FFFF00">Блок 1</td>
    
  84.   </tr>
    
  85.   <tr>
    
  86.     <td bgcolor="#FF9900">Блок 2</a></td>
    
  87.   </tr>
    
  88.   <tr>
    
  89.     <td bgcolor="#FF9999">Блок 3</td>
    
  90.   </tr>
    
  91. </table>
    
  92. </ul>

Как видно — представленный выше код обладает очень большим функционалом: тут тебе и возможность модификации визуальной части (расположение, внешний вид), и возможность размещать на самом слое все, что необходимо — от картинок, до видео 🙂

Пример работы кода доступен по ссылке 🙂
Спасибо за внимание!