HTML и CSS3 отзывчивость - PullRequest
0 голосов
/ 12 июня 2018

В последнее время я работаю над веб-сайтом, и, хотя с точки зрения отзывчивости страница в целом хороша, выпадающий список работает не очень хорошо.

У меня выпадающий список W3Schools , и при изменении размера страницы (то есть при просмотре с разным разрешением экрана) все кнопки изменяются соответственно, кроме кнопки выпадающего списка.

На скриншоте ниже, как вы можете видеть, при разрешении 1366x768 все в порядке:

nav bar in normal conditions

Однако, на втором скриншоте ниже, давайте попробуем увеличить (имитируя другое разрешение экрана):

nav bar in other conditions

Код :

.meny {
  background-color: #282828;
  border-radius: 10%;
  border: none;
  color: white;
  padding: 1% 2%;
  text-align: center;
  text-decoration: none;
  font-size: 100%;
  float: none;
}

.nmbutoni {
  background-color: #282828;
  border-radius: 10%;
  border: none;
  color: white;
  padding: 21% 37%;
  text-align: center;
  text-decoration: none;
  font-size: 100%;
  float: none;
  transition: linear 0.2s;
}

@-moz-document url-prefix() {
  .nmbutoni {
    padding: 14% 15%;
  }
}


/* Smartphones (portrait & landscape) */

@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
  .nmbutoni {
    padding: 18% 37%;
  }
  footer {
    text-align: center;
    margin: auto;
    background-color: #282828 !important;
    width: 70% !important;
    color: white;
  }
  #googleMap {
    width: 500px !important;
    height: 300px !important;
  }
}


/* position of main menu */

.nenmeny {
  position: relative;
  display: inline-block;
}


/* dropdown content (default hidden) */

.nenmeny-content {
  display: none;
  position: absolute;
  background-color: #f1f1f1;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  min-width: 155px;
  z-index: 1;
}


/* Links inside dropdown menu*/

.nenmeny-content a {
  color: black;
  padding: 7% 9%;
  /*12px 16px*/
  text-decoration: none;
  display: block;
}


/* Hover color change */

.nenmeny-content a:hover {
  background-color: #ddd
}


/* Displaying content on hover */

.nenmeny:hover .nenmeny-content {
  display: block;
}


/* Bgcolor change on dropdown hover */

.nenmeny:hover .nmbutoni {
  background-color: black;
  color: #FFB849;
}
<a href="#" class="meny active">Ballina</a>
<a href="lajme.html" class="meny">Lajme</a>
<a href="ekipet.html" class="meny">Ekipet</a>
<a href="sponsor.html" class="meny">Sponzorët</a>
<div class="nenmeny">
  <button class="nmbutoni">Për ne</button>
  <div class="nenmeny-content">
    <a href="rrethparkour.html">Sporti Parkour</a>
    <a href="historia.html">Historia jonë</a>
    <a href="kontakti.html">Kontakti</a>
  </div>
</div>

Я пытался изменить отступы и другие свойства выпадающего класса, пробовал либо статический (в пикселях), либо без процентов.

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Используйте подходящий инструмент для работы.Обратите внимание, что стилизация для выбора одинакового для всех браузеров / устройств очень сложна.Вы можете попробовать библиотеку пользовательского интерфейса, такую ​​как Google MDC-Web select .

<select>

Элемент HTML представляет элемент управления, который предоставляет меню параметров:

<!-- The second value will be selected initially -->
<select name="text"> <!--Supplement an id here instead of using 'text'-->
  <option value="first">First Value</option> 
  <option value="second" selected>Second Value</option>
  <option value="third">Third Value</option>
</select>
0 голосов
/ 12 июня 2018

ОК, давайте решать проблему шаг за шагом.Сначала перейдите к точке, в которой вы сказали:

пробовал либо статически (в пикселях), либо без процента.

Это потому, чтопроблема была вызвана: transition: linear 0.2s; в вашем nmbutoni классе.Когда вы удалите эту строку и установите для отступов nmbutoni и meny какое-то статическое (px) значение, оно будет работать частично.Посмотрите на фрагмент ниже:

.meny {
  background-color: #282828;
  border-radius: 10%;
  border: none;
  color: white;
  padding: 16px;
  text-align: center;
  text-decoration: none;
  font-size: 100%;
  float: none;
}

.nmbutoni {
  background-color: #282828;
  border-radius: 10%;
  border: none;
  color: white;
  padding: 16px;
  text-align: center;
  text-decoration: none;
  font-size: 100%;
  float: none;
}



/* Smartphones (portrait & landscape) */

@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
  .nmbutoni {
    padding: 18% 37%;
  }
  footer {
    text-align: center;
    margin: auto;
    background-color: #282828 !important;
    width: 70% !important;
    color: white;
  }
  #googleMap {
    width: 500px !important;
    height: 300px !important;
  }
}


/* position of main menu */

.nenmeny {
  position: relative;
  display: inline-block;
}


/* dropdown content (default hidden) */

.nenmeny-content {
  display: none;
  position: absolute;
  background-color: #f1f1f1;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  min-width: 155px;
  z-index: 1;
}


/* Links inside dropdown menu*/

.nenmeny-content a {
  color: black;
  padding: 7% 9%;
  /*12px 16px*/
  text-decoration: none;
  display: block;
}


/* Hover color change */

.nenmeny-content a:hover {
  background-color: #ddd
}


/* Displaying content on hover */

.nenmeny:hover .nenmeny-content {
  display: block;
}


/* Bgcolor change on dropdown hover */

.nenmeny:hover .nmbutoni {
  background-color: black;
  color: #FFB849;
}
<a href="#" class="meny active">Ballina</a>
<a href="lajme.html" class="meny">Lajme</a>
<a href="ekipet.html" class="meny">Ekipet</a>
<a href="sponsor.html" class="meny">Sponzorët</a>
<div class="nenmeny">
  <button class="nmbutoni">Për ne</button>
  <div class="nenmeny-content">
    <a href="rrethparkour.html">Sporti Parkour</a>
    <a href="historia.html">Historia jonë</a>
    <a href="kontakti.html">Kontakti</a>
  </div>
</div>

Однако, если вы посмотрите внимательно, кнопка не совсем соответствует другим ссылкам, тем не менее, размер кнопки немного больше сверху.Это потому, что button является элементом формы.Таким образом, он работает не так, как другие элементы.Итак, здесь проблема.

И еще одна проблема - когда вы используете процент, тогда они работают по-разному, потому что % относительно родительского элемента и родителя nmbutoni и meny в этом случае не совпадают.

Итак, чтобы решить первую проблему, мы просто заменим <button> на тег <a>, как предложено Nandita Arora Sharma тоже в своем ответе, так что все ссылки становятся похожими, поэтому нет проблем с наличием элементов формы.

И, для решения 2-й задачи мы не будем использовать %, а скорее использовать vw, что соответствует 1% ширины окна просмотра, т.е. размер окна браузера .

Итак, вот полное решение с чистым кодом:

body {
  margin-top: 20px;
}

.meny {
  background-color: #282828;
  text-decoration: none;
  color: white;
  border-radius: 3px;
  padding: 1vw;
  font-size: 1em;
  border: none;
  cursor: pointer;
}

.nmbutoni {
  background-color: #282828;
  color: white;
  padding: 1vw;
  font-size: 1em;
  font-family: inherit;
  border-radius: 3px;
  border: none;
  cursor: pointer;
}

.nenmeny {
  position: relative;
  display: inline-block;
}

.nenmeny-content {
  display: none;
  position: absolute;
  background-color: #f1f1f1;
  min-width: 155px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  z-index: 1;
}

.nenmeny-content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}

.nenmeny-content a:hover {
  background-color: #ddd
}

.nenmeny:hover .nenmeny-content {
  display: block;
  margin-top: 1vw;
}

.nenmeny:hover .nmbutoni {
  background-color: black;
  color: #FFB849;
}
<a href="#" class="meny">Ballina</a>
<a href="lajme.html" class="meny">Lajme</a>
<a href="ekipet.html" class="meny">Ekipet</a>
<a href="sponsor.html" class="meny">Sponzorët</a>
<div class="nenmeny">
  <a class="nmbutoni">Për ne</a>
  <div class="nenmeny-content">
    <a href="rrethparkour.html">Sporti Parkour</a>
    <a href="historia.html">Historia jonë</a>
    <a href="kontakti.html">Kontakti</a>
  </div>
</div>

Надеюсь, это решит вашу проблему.

0 голосов
/ 12 июня 2018

Изменен тег кнопки для привязки в раскрывающемся списке.Добавлен класс meny в выпадающий контейнер.Также добавлено left: 0 на nenmeny-content div

.meny {
 background-color: #282828;
 border-radius: 10%;
 border: none;
 color: white;
 padding: 10px 20px;
 text-align: center;
 text-decoration: none;
 font-size: 100%;
 float: none;
}

.nmbutoni {
 background-color: #282828;
 border-radius: 10%;
 border: none;
 color: white;
 text-align: center;
 text-decoration: none;
 font-size: 100%;
 float: none;
 transition: linear 0.2s;
}
@-moz-document url-prefix() {
  .nmbutoni {
    padding: 14% 15%;
  }
}

/* Smartphones (portrait & landscape) */
@media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
	.nmbutoni {
	padding: 18% 37%;
	}
	footer {
	text-align: center;
	margin: auto;
	background-color: #282828 !important;
	width: 70% !important;
	color: white;
	}
	#googleMap {
		width: 500px !important;
		height: 300px !important;
	}
}

/* position of main menu */

.nenmeny {
 position: relative;
 display: inline-block;
}

/* dropdown content (default hidden) */

.nenmeny-content {
 display: none;
 position: absolute;
 background-color: #f1f1f1;
 box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
 min-width: 155px;
 z-index: 1;
 left: 0;
}

/* Links inside dropdown menu*/

.nenmeny-content a {
 color: black;
 padding: 7% 9%;
 /*12px 16px*/
 text-decoration: none;
 display: block;
}

/* Hover color change */

.nenmeny-content a:hover {
 background-color: #ddd
}

/* Displaying content on hover */

.nenmeny:hover .nenmeny-content {
 display: block;

}

/* Bgcolor change on dropdown hover */

.nenmeny:hover .nmbutoni {
 background-color: black;
 color: #FFB849;
}
<a href="#" class="meny active">Ballina</a>
<a href="lajme.html" class="meny">Lajme</a>
<a href="ekipet.html" class="meny">Ekipet</a>
<a href="sponsor.html" class="meny">Sponzorët</a>
<div class="nenmeny meny">
	<a class="nmbutoni">Përne</a>
	<div class="nenmeny-content">
		<a href="rrethparkour.html">Sporti Parkour</a>
		<a href="historia.html">Historia jonë</a>
		<a href="kontakti.html">Kontakti</a>
	</div>
</div>
...