stick.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <template>
  2. <LayoutNavigation />
  3. <LogicielsSchoolBanner />
  4. <LogicielsSchoolMenuScroll class="sticky-scroll" />
  5. <div v-if="shouldShowStickyMenu" id="sticky-menu">
  6. <v-row class="outil-row">
  7. <v-col cols="3">
  8. <div class="container-square">
  9. <v-row class="blue-square">
  10. <div>
  11. <v-icon class="fa-regular fa-comments icon" />
  12. <p class="text-square">Nous contacter</p>
  13. </div>
  14. </v-row>
  15. <v-row class="blue-square">
  16. <div>
  17. <v-icon class="fa-regular fa-circle-info icon" />
  18. <p class="text-square">Demander une demo</p>
  19. </div>
  20. </v-row>
  21. <v-row class="blue-square">
  22. <div>
  23. <v-icon class="fa-brands fa-readme icon" />
  24. <p class="text-square">Brochure</p>
  25. </div>
  26. </v-row>
  27. <v-row class="darkblue-square">
  28. <div>
  29. <v-icon class="fa-solid fa-phone icon" />
  30. <p class="text-square">Nous Appeler</p>
  31. </div>
  32. </v-row>
  33. </div>
  34. </v-col>
  35. </v-row>
  36. </div>
  37. <LogicielsSchoolOutil />
  38. <LogicielsSchoolAvantages />
  39. <LogicielsSchoolFonctionnalites />
  40. <LogicielsSchoolPremium />
  41. <LogicielsSchoolProjet />
  42. <LogicielsSchoolAccompagnement />
  43. <LogicielsSchoolReviews />
  44. <LogicielsSchoolAgenda />
  45. <LayoutFAQ />
  46. <LogicielsSchoolSolutions />
  47. <LayoutFooter id="layout-footer" />
  48. </template>
  49. <script setup>
  50. import { ref, onMounted } from "vue";
  51. const shouldShowStickyMenu = ref(true);
  52. onMounted(() => {
  53. const stickyMenu = document.getElementById("sticky-menu");
  54. const footer = document.getElementById("layout-footer");
  55. const observer = new IntersectionObserver(
  56. ([entry]) => {
  57. shouldShowStickyMenu.value = !entry.isIntersecting;
  58. },
  59. {
  60. root: null,
  61. threshold: 0,
  62. }
  63. );
  64. observer.observe(footer);
  65. });
  66. </script>
  67. <style scoped>
  68. .container-square {
  69. display: flex;
  70. flex-direction: column;
  71. justify-content: space-between;
  72. color: white;
  73. font-weight: 500;
  74. font-size: 0.7rem;
  75. line-height: 15px;
  76. text-align: center;
  77. letter-spacing: 0.2em;
  78. text-transform: uppercase;
  79. }
  80. .blue-square,
  81. .darkblue-square {
  82. display: flex;
  83. justify-content: center;
  84. align-items: center;
  85. font-family: "Barlow";
  86. width: 10rem;
  87. height: 7rem;
  88. margin-left: 14rem;
  89. padding: 1rem;
  90. }
  91. .blue-square {
  92. background: rgba(32, 147, 190);
  93. }
  94. .darkblue-square {
  95. background: #0e2d32;
  96. }
  97. .text-square {
  98. margin: 0.5rem 2rem;
  99. }
  100. .icon {
  101. margin-right: 1rem;
  102. }
  103. .icon-logiciel {
  104. color: rgba(32, 147, 190);
  105. margin-right: 1rem;
  106. }
  107. .outil-row {
  108. margin: 5rem 0;
  109. }
  110. #sticky-menu {
  111. position: sticky;
  112. top: 10rem;
  113. z-index: 10;
  114. margin-left: 89rem;
  115. margin-bottom: -40rem;
  116. }
  117. </style>