oscarviedma

Estilos CSS Navegación Vertical Dots

Sep 5th, 2025
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CSS 5.61 KB | None | 0 0
  1. /* Mobile Navigation Trigger */
  2. .ov-vfn-nav-trigger {
  3.   display: block;
  4.   position: fixed;
  5.   z-index: 1000;
  6.   bottom: 30px;
  7.   right: 5%;
  8.   width: 44px;
  9.   height: 44px;
  10.   border-radius: 8px;
  11.   background: rgba(234, 242, 227, 0.9);
  12.   border: none;
  13.   cursor: pointer;
  14. }
  15.  
  16. .ov-vfn-nav-trigger .et_pb_row,
  17. .ov-vfn-nav-trigger .et_pb_column,
  18. .ov-vfn-nav-trigger .et_pb_code,
  19. .ov-vfn-nav-trigger .et_pb_code_inner {
  20.   height: 100%;
  21. }
  22.  
  23. .ov-vfn-nav-trigger.ov-vfn-nav-trigger span {
  24.   position: absolute;
  25.   width: 4px;
  26.   height: 4px;
  27.   background: #3a2c41;
  28.   border-radius: 50%;
  29.   left: 50%;
  30.   top: 50%;
  31.   transform: translate(-50%, -50%);
  32. }
  33.  
  34. .ov-vfn-nav-trigger span::before,
  35. .ov-vfn-nav-trigger span::after {
  36.   content: '';
  37.   position: absolute;
  38.   width: 100%;
  39.   height: 100%;
  40.   background: #3a2c41;
  41.   border-radius: 50%;
  42.   left: 0;
  43. }
  44.  
  45. .ov-vfn-nav-trigger span::before {
  46.   top: -9px;
  47. }
  48.  
  49. .ov-vfn-nav-trigger span::after {
  50.   bottom: -9px;
  51. }
  52.  
  53. /* Mobile Navigation */
  54. .ov-vfn-vertical-nav {
  55.   position: fixed !important;
  56.   z-index: 999 !important;
  57.   right: 5%;
  58.   bottom: 30px;
  59.   width: 90%;
  60.   max-width: 400px;
  61.   border-radius: 8px;
  62.   background: rgba(234, 242, 227, 0.95);
  63.   transform: scale(0);
  64.   transform-origin: right bottom;
  65.   transition: transform 0.3s ease;
  66. }
  67.  
  68. .ov-vfn-vertical-nav.ov-vfn-open {
  69.   transform: scale(1);
  70. }
  71.  
  72. .ov-vfn-vertical-nav ul {
  73.   list-style: none;
  74.   margin: 0;
  75.   padding: 0;
  76. }
  77.  
  78. .ov-vfn-vertical-nav a {
  79.   display: block;
  80.   padding: 1rem;
  81.   color: #3a2c41;
  82.   text-decoration: none;
  83.   font-weight: 600;
  84.   border-bottom: 1px solid rgba(58, 44, 65, 0.1);
  85. }
  86.  
  87. .ov-vfn-vertical-nav a:hover,
  88. .ov-vfn-vertical-nav a.ov-vfn-active {
  89.   color: #c0a672;
  90. }
  91.  
  92. /* Desktop Navigation */
  93. @media (min-width: 800px) {
  94.   .ov-vfn-nav-trigger {
  95.       display: none;
  96.   }
  97.  
  98.   .ov-vfn-vertical-nav {
  99.       right: 0;
  100.       top: 0;
  101.       bottom: auto;
  102.       height: 100vh;
  103.       width: 90px;
  104.       max-width: none;
  105.       transform: scale(1);
  106.       background: transparent;
  107.       display: flex;
  108.       align-items: center;
  109.       justify-content: center;
  110.   }
  111.  
  112.   /* Dark background that slides in on hover */
  113.   .ov-vfn-vertical-nav::before {
  114.       content: '';
  115.       position: absolute;
  116.       top: 0;
  117.       left: 0;
  118.       width: 100%;
  119.       height: 100%;
  120.       background: rgba(0, 0, 0, 0.8);
  121.       transform: translateX(100%);
  122.       transition: transform 0.4s ease;
  123.   }
  124.  
  125.   .ov-vfn-vertical-nav:hover::before {
  126.       transform: translateX(0);
  127.   }
  128.  
  129.   .ov-vfn-vertical-nav ul {
  130.       position: relative;
  131.       z-index: 2;
  132.       display: flex;
  133.       flex-direction: column;
  134.       align-items: center;
  135.   }
  136.  
  137.   /* LI elements - start with no margin, expand on hover */
  138.   .ov-vfn-vertical-nav li {
  139.       position: relative;
  140.       margin: 0;
  141.       transition: margin 0.4s ease;
  142.   }
  143.  
  144.   .ov-vfn-vertical-nav:hover li {
  145.       margin: 1.4rem 0;
  146.   }
  147.  
  148.   .ov-vfn-vertical-nav a {
  149.       position: relative;
  150.       display: block;
  151.       width: 32px;
  152.       height: 32px;
  153.       padding: 0;
  154.       border: none;
  155.       color: #eaf2e3;
  156.       text-decoration: none;
  157.   }
  158.  
  159.   /* Small dots - always visible */
  160.   .ov-vfn-vertical-nav a::before {
  161.       content: '';
  162.       position: absolute;
  163.       left: 50%;
  164.       top: 50%;
  165.       transform: translate(-50%, -50%) scale(0.25);
  166.       width: 32px;
  167.       height: 32px;
  168.       background: #eaf2e3;
  169.       border-radius: 50%;
  170.       transition: all 0.4s ease;
  171.   }
  172.  
  173.   .ov-vfn-vertical-nav a.ov-vfn-active::before {
  174.       background: #c0a672;
  175.   }
  176.  
  177.   /* Font Awesome Icons - hidden by default, shown on navigation hover */
  178.   .ov-vfn-vertical-nav a::after {
  179.       content: '';
  180.       position: absolute;
  181.       left: 50%;
  182.       top: 50%;
  183.       transform: translate(-50%, -50%) scale(0);
  184.       width: 16px;
  185.       height: 16px;
  186.       opacity: 0;
  187.       transition: all 0.4s ease;
  188.       font-family: FontAwesome !important;
  189.       font-weight: 900 !important;
  190.       font-size: 16px;
  191.       color: #000000;
  192.       display: flex;
  193.       align-items: center;
  194.       justify-content: center;
  195.   }
  196.  
  197.   /* Font Awesome Icon definitions */
  198.   .ov-vfn-vertical-nav a[href="#intro"]::after {
  199.       content: "\f007"; /* fa-user */
  200.   }
  201.  
  202.   .ov-vfn-vertical-nav a[href="#events"]::after {
  203.       content: "\f073"; /* fa-calendar */
  204.   }
  205.  
  206.   .ov-vfn-vertical-nav a[href="#help"]::after {
  207.       content: "\f059"; /* fa-question-circle */
  208.   }
  209.  
  210.   .ov-vfn-vertical-nav a[href="#share"]::after {
  211.       content: "\f1e0"; /* fa-share-alt */
  212.   }
  213.  
  214.   /* Text labels - positioned below the dots with slide-in effect */
  215.   .ov-vfn-vertical-nav .ov-vfn-label {
  216.       position: absolute;
  217.       left: 50%;
  218.       top: 40px;
  219.       transform: translateX(-50%) translateX(100%);
  220.       font-size: 12px;
  221.       font-weight: 600;
  222.       color: #eaf2e3;
  223.       white-space: nowrap;
  224.       opacity: 0;
  225.       transition: all 0.4s ease;
  226.   }
  227.  
  228.   /* Show icons and labels on navigation hover with scale effect */
  229.   .ov-vfn-vertical-nav:hover a::before {
  230.       transform: translate(-50%, -50%) scale(1);
  231.   }
  232.  
  233.   .ov-vfn-vertical-nav:hover a::after {
  234.       opacity: 1;
  235.       transform: translate(-50%, -50%) scale(1);
  236.   }
  237.  
  238.   .ov-vfn-vertical-nav:hover .ov-vfn-label {
  239.       opacity: 1;
  240.       transform: translateX(-50%) translateX(0);
  241.   }
  242.  
  243.   /* Individual dot hover effect when navigation is expanded */
  244.   .ov-vfn-vertical-nav:hover a:hover::before {
  245.       background: #c0a672;
  246.   }
  247.  
  248.   /* Active state colors */
  249.   .ov-vfn-vertical-nav a.ov-vfn-active::after {
  250.       color: #000000;
  251.   }
  252.  
  253.   .ov-vfn-vertical-nav a.ov-vfn-active .ov-vfn-label {
  254.       color: #c0a672;
  255.   }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment