Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][PHP] Problem z responsywnym menu
Forum PHP.pl > Forum > Przedszkole
ShamY
Cześć,

od paru dni walczę z responsywnym menu i nie mogę przeskoczyć pewnego błędu. Otóż wszystko działa, ale gdy na telefonie odpalam przycisk który wyświetla menu to owe menu nachodzi się z tekstem, który jest w .header-txt i nie da się włączyć nic z menu, bo blokuje to tekst. Jak to można ogarnąć? OBRAZEK

kod:
  1. <ul class="menu">
  2. <li><a href="#work">Our Work</a></li>
  3. <li><a href="#about">About</a></li>
  4. <li><a href="#careers">Careers</a></li>
  5. <li><a href="#contact">Contact</a></li>
  6. </ul>
  7. ...
  8. <div class="header-txt">
  9. Centrum monitoringu
  10. </div>


i CSS:
  1. /* header */
  2. ul {
  3. margin: 1%;
  4. list-style: none;
  5. overflow: hidden;
  6. font-family: 'PT Sans', sans-serif;
  7. }
  8.  
  9. li a {
  10. display: block;
  11. padding: 20px 20px;
  12. text-decoration: none;
  13. }
  14.  
  15. li a:hover,
  16. .header .menu-btn:hover {
  17. background-color: #181818;
  18. }
  19.  
  20. /* menu */
  21.  
  22. .header .menu {
  23. clear: both;
  24. max-height: 0;
  25. transition: max-height .2s ease-out;
  26. }
  27.  
  28. /* menu icon */
  29.  
  30. .header .menu-icon {
  31. cursor: pointer;
  32. display: inline-block;
  33. float: right;
  34. padding: 28px 20px;
  35. position: relative;
  36. user-select: none;
  37. }
  38.  
  39. .header .menu-icon .navicon {
  40. background: white;
  41. display: block;
  42. height: 2px;
  43. position: relative;
  44. transition: background .2s ease-out;
  45. width: 18px;
  46. }
  47.  
  48. .header .menu-icon .navicon:before,
  49. .header .menu-icon .navicon:after {
  50. background: white;
  51. content: '';
  52. display: block;
  53. height: 100%;
  54. position: absolute;
  55. transition: all .2s ease-out;
  56. width: 100%;
  57. }
  58.  
  59. .header .menu-icon .navicon:before {
  60. top: 5px;
  61. }
  62.  
  63. .header .menu-icon .navicon:after {
  64. top: -5px;
  65. }
  66.  
  67. /* menu btn */
  68.  
  69. .header .menu-btn {
  70. display: none;
  71. }
  72.  
  73. .header .menu-btn:checked ~ .menu {
  74. max-height: 240px;
  75. }
  76.  
  77. .header .menu-btn:checked ~ .menu-icon .navicon {
  78. background: transparent;
  79. }
  80.  
  81. .header .menu-btn:checked ~ .menu-icon .navicon:before {
  82. transform: rotate(-45deg);
  83. }
  84.  
  85. .header .menu-btn:checked ~ .menu-icon .navicon:after {
  86. transform: rotate(45deg);
  87. }
  88.  
  89. .header .menu-btn:checked ~ .menu-icon:not(.steps) .navicon:before,
  90. .header .menu-btn:checked ~ .menu-icon:not(.steps) .navicon:after {
  91. top: 0;
  92. }
  93.  
  94. /* 48em = 768px */
  95.  
  96. @media (min-width: 48em) {
  97. .header li {
  98. float: left;
  99. }
  100. .header li a {
  101. padding: 20px 30px;
  102. }
  103. .header .menu {
  104. clear: none;
  105. float: right;
  106. max-height: none;
  107. }
  108. .header .menu-icon {
  109. display: none;
  110. }
  111. }
Crash89
spróbuj skorzystać z właściwości z-index
ShamY
Próbowałem tak zrobić, ale okazuje się, że i tak tekst pod spodem jest widoczny, ponieważ tło jest przezroczyste w menu (niestety takie musi być). To ma być czymś w tym stylu: LINK
Crash89
Może po włączeniu menu przesuń w javascripcie napis pod menu, albo zrób tak żeby znikał.
Lub zrezygnuj z przezroczystego menu.
ShamY
Gdybym wiedział jak to zrobic to by mnie tutaj nie było wink.gif
Crash89
https://jquery.com/

  1.  
  2. $(document).ready(function(){
  3. $('#menu').click(function(){
  4.  
  5. $('#id-tekstu-który-chcesz-presunąć').css('top', wartoscPrzesuniecia);
  6.  
  7. });
  8. });


Ściągnij biblioteke jquery i dodaj ten kod w javascripcie.
ShamY
Do kodu dodałem:
  1. <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  2. ...
  3. <script type="text/javascript">
  4. $(document).ready(function(){
  5. $('#menu-icon').click(function(){
  6.  
  7. $('#header-txt-mobile').css('top', 600px);
  8.  
  9. });
  10. });
  11. </script>



Jednak nic się nie dzieje. Próbowałem #menu-icon zastąpić jeszcze tym: #menu, #menu-btn, #navicon, ale też nic.
  1. <header class="menu">
  2. <input class="menu-btn" type="checkbox" id="menu-btn" />
  3. <label class="menu-icon" for="menu-btn" id="menu-icon"><span class="navicon" id="navicon"></span></label>
  4. <ul class="menu">
  5. <li><a href="#work">Our Work</a></li>
  6. <li><a href="#about">About</a></li>
  7. <li><a href="#careers">Careers</a></li>
  8. <li><a href="#contact">Contact</a></li>
  9. </ul>
  10. </header>
  11. ...
  12. <div class="header-txt-mobile" id="header-txt-mobile">
  13. Centrum monitoringu
Crash89
To może spróbuj tego:

  1. <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  2. ...
  3. <script type="text/javascript">
  4. $(document).ready(function(){
  5. $('#menu-icon').on('click', function(){
  6.  
  7. $('#header-txt-mobile').attr('top', 600px); // lub $('#header-txt-mobile').attr('margin-top', 600px)
  8.  
  9. });
  10. });
  11. </script>


możesz też uzyć tego:
$('#header-txt-mobile').hide();

Tylko kiedy zamykasz menu to musisz przywrócić pierwotne ustawienia
np. $('#header-txt-mobile').show(); jeśli korzystasz z metody hide().
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.