Problem z rozmiarem przyciskow w menu

Witam mam taki problem z menu poziomym mianowicie chciałbym aby przyciski swoja długość dostosowywały automatycznie i nie zostawiały takiego wolnego paska.

 

http://www.iv.pl/images/58861951101693454893.jpg

 

Kod html :

http://wklej.org/id/1363393/

Kod css :

http://wklej.org/id/1363391/

domal122

Proszę zapoznać się z tematem i poprawić tytuł tematu na konkretny, mówiący o problemie.

 

Proszę poprawić pisownię w opisie problemu. W celu dokonania zaleconej korekty proszę użyć przycisku Edytuj, umieszczonego w prawym dolnym rogu swojego posta, następnie z opcji Użyj pełnego edytora, znajdującej się pod edytowanym postem.

Zignorowanie zalecenia będzie skutkowało przeniesieniem tematu do Kosza.

Po co piszesz:

#cssmenu > ul {
  background: url('bg.png');
  box-shadow: inset 0 -3px 0 rgba(0, 0, 0, 0.05);
}

Jak to to samo co:

#cssmenu ul {

Bez znaku większości/mniejszości. Masz jeden element - rodzica i jedno dziecko to raczej jest to zbędne.

 

Masz bardzo wiele namieszane w kodzie.

w #box masz width, możesz ustawić go na 500px;, ale to nie załatwi sprawy, bo ma być automatycznie. Kombinuj coś z padding-right. Długo trwałoby sprawdzanie kodu. Ja nie raz wolałem przepisać od nowa, niż myśleć i myślec, co w nim poprawić. Ty napisałeś kod, więc lepiej znasz go ode mnie.

Zmieniony Kod CSS

#box1 {
background-color: #211232;
width: 70%;
position:relative;
left: 13%; }
#cssmenu,
#cssmenu ul,
#cssmenu ul li,
#cssmenu ul li a,
#cssmenu #menu-button {
margin: 0;
padding: 0;
border: 0;
list-style: none;
line-height: 0;
display: block;
position: relative;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
#cssmenu:after,
#cssmenu > ul:after {
content: ‘.’;
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
#cssmenu #menu-button {
display: none;
}
#cssmenu {
width: auto;
font-family: ‘Open Sans’, Helvetica, sans-serif;
background: #39b1cc;
background: -moz-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #51bbd2), color-stop(100%, #2d97af));
background: -webkit-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
background: -o-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
background: -ms-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
background: linear-gradient(to bottom, #51bbd2 0%, #2d97af 100%);
}
#cssmenu > ul {
background: url(‘bg.png’);
box-shadow: inset 0 -3px 0 rgba(0, 0, 0, 0.05);
}
#cssmenu > ul > li {
float: left;
}
#cssmenu > ul > li > a {
padding: 18px 25px 21px 25px;
border-right: 1px solid rgba(80, 80, 80, 0.12);
text-decoration: none;
font-size: 13px;
font-weight: 700;
color: #d3eced;
text-transform: uppercase;
letter-spacing: 1px;
}
#cssmenu > ul > li:hover > a,
#cssmenu > ul > li > a:hover,
#cssmenu > ul > li.active > a {
color: #ffffff;
background: #32a9c3;
background: rgba(0, 0, 0, 0.1);
}
#cssmenu > ul > li.has-sub > a {
padding-right: 45px;
}
#cssmenu > ul > li.has-sub > a::after {
content: ‘’;
position: absolute;
width: 0;
height: 0;
border: 6px solid transparent;
border-top-color: #d3eced;
right: 17px;
top: 22px;
}
#cssmenu > ul > li.has-sub.active > a::after,
#cssmenu > ul > li.has-sub:hover > a {
border-top-color: #ffffff;
}
#cssmenu ul ul {
position: absolute;
left: -9999px;
top: 60px;
padding-top: 6px;
font-size: 13px;
opacity: 0;
-webkit-transition: top 0.2s ease, opacity 0.2s ease-in;
-moz-transition: top 0.2s ease, opacity 0.2s ease-in;
-ms-transition: top 0.2s ease, opacity 0.2s ease-in;
-o-transition: top 0.2s ease, opacity 0.2s ease-in;
transition: top 0.2s ease, opacity 0.2s ease-in;
}
#cssmenu > ul > li > ul::after {
content: ‘’;
position: absolute;
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: #ffffff;
top: -4px;
left: 20px;
}
#cssmenu ul ul ul::after {
content: ‘’;
position: absolute;
width: 0;
height: 0;
border: 5px solid transparent;
border-right-color: #ffffff;
top: 11px;
left: -4px;
}
#cssmenu > ul > li > ul {
top: 120px;
}
#cssmenu > ul > li:hover > ul {
top: 52px;
left: 0;
opacity: 1;
}
#cssmenu ul ul ul {
padding-top: 0;
padding-left: 6px;
}
#cssmenu ul ul > li:hover > ul {
left: 180px;
top: 0;
opacity: 1;
}
#cssmenu ul ul li a {
text-decoration: none;
font-weight: 400;
padding: 11px 25px;
width: 180px;
color: #777777;
background: #ffffff;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1), 1px 1px 1px rgba(0, 0, 0, 0.1), -1px 1px 1px rgba(0, 0, 0, 0.1);
}
#cssmenu ul ul li:hover > a,
#cssmenu ul ul li.active > a {
color: #333333;
}
#cssmenu ul ul li:first-child > a {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
#cssmenu ul ul li:last-child > a {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
#cssmenu > ul > li > ul::after {
position: absolute;
display: block;
}
#cssmenu ul ul li.has-sub > a::after {
content: ‘’;
position: absolute;
width: 0;
height: 0;
border: 4px solid transparent;
border-left-color: #777777;
right: 17px;
top: 14px;
}
#cssmenu ul ul li.has-sub.active > a::after,
#cssmenu ul ul li.has-sub:hover > a::after {
border-left-color: #333333;
}
@media all and (max-width: 800px), only screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 1024px), only screen and (min–moz-device-pixel-ratio: 2) and (max-width: 1024px), only screen and (-o-min-device-pixel-ratio: 2/1) and (max-width: 1024px), only screen and (min-device-pixel-ratio: 2) and (max-width: 1024px), only screen and (min-resolution: 192dpi) and (max-width: 1024px), only screen and (min-resolution: 2dppx) and (max-width: 1024px) {
#cssmenu {
background: #39b1cc;
}
#cssmenu > ul {
display: none;
}
#cssmenu > ul.open {
display: block;
border-top: 1px solid rgba(0, 0, 0, 0.1);
}
#cssmenu > ul > li {
float: none;
}
#cssmenu > ul > li > a {
padding: 18px 25px 18px 25px;
border-right: 0;
}
#cssmenu > ul > li:hover > a,
#cssmenu > ul > li.active > a {
background: rgba(0, 0, 0, 0.1);
}
#cssmenu #menu-button {
display: block;
text-decoration: none;
font-size: 13px;
font-weight: 700;
color: #d3eced;
padding: 18px 25px 18px 25px;
text-transform: uppercase;
letter-spacing: 1px;
background: url(‘bg.png’);
cursor: pointer;
}
#cssmenu ul ul,
#cssmenu ul li:hover > ul,
#cssmenu > ul > li > ul,
#cssmenu ul ul ul,
#cssmenu ul ul li:hover > ul {
left: 0;
top: auto;
opacity: 1;
width: 100%;
padding: 0;
position: relative;
}
#cssmenu ul ul li {
width: 100%;
}
#cssmenu ul ul li a {
width: 100%;
box-shadow: none;
padding-left: 35px;
}
#cssmenu ul ul ul li a {
padding-left: 45px;
}
#cssmenu ul ul li:first-child > a,
#cssmenu ul ul li:last-child > a {
border-radius: 0;
}
#cssmenu #menu-button::after {
display: block;
content: ‘’;
position: absolute;
height: 3px;
width: 22px;
border-top: 2px solid #d3eced;
border-bottom: 2px solid #d3eced;
right: 25px;
top: 18px;
}
#cssmenu #menu-button::before {
display: block;
content: ‘’;
position: absolute;
height: 3px;
width: 22px;
border-top: 2px solid #d3eced;
right: 25px;
top: 28px;
}
#cssmenu > ul > li.has-sub > a::after,
#cssmenu ul ul li.has-sub > a::after {
display: none;
}
}

w CSS wydaje mi się że nie da rady.

 

np. w jQuery długość całego menu podziel przez ilośc przycisków i to będzie długość jednego przycisku.

 

 

W css nie, ale na przykład w SCSS czy LESS już tak :slight_smile:

To obecne menu wygląda dobrze, ale jak chcesz mieć tylko miejsce na 4 przyciski, to nadaj elementom ul li - display: block i daj width: 25%, wtedy przycisk stanowić będzie 25% szerokości i każdy aktywny przycisk będzie wielki co będzie wyglądać nieelegancko.

Za zmianą szerokości strony przyciski tez będą zmieniać rozmiar.

 

Obejrzyj w przeglądarce mój kod, i zobacz czy oto Ci chodzi. Masz menu ciut reponsywne. Trzeba jeszcze popracować nad końcowym efektem.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Menu 100% strony</title>
<style type="text/css">
    body {max-width: 960px; margin:20px auto; padding:0; position: relative;}
 
 nav ul {
 position: absolute;
 width: 100%;
 font-family: 'Open Sans', Helvetica, sans-serif;
 background: #39b1cc;
 background: -moz-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #51bbd2), color-stop(100%, #2d97af));
 background: -webkit-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
 background: -o-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
 background: -ms-linear-gradient(top, #51bbd2 0%, #2d97af 100%);
 background: linear-gradient(to bottom, #51bbd2 0%, #2d97af 100%);
 overflow: hidden;
 display: block;
 padding: 0;
 margin: 0;
 }
 nav ul li {float:left;  width:25%; padding: 20px 0;text-align: center;list-style: none; display: block;}
 nav ul li a {font-size: 18px; color: black; text-decoration: none; text-shadow: 1px 1px 0 #ccc; }
 nav ul li:hover {background: #ccc;}
</style>
  
</head>
<body>
<nav>
 <ul>
  <li><a href="#">Home</a></li>
  <li><a href="#">Oferta</a></li>
  <li><a href="#">Linki</a></li>
  <li><a href="#">Kontakt</a></li>
 </ul>
</nav>
</body>
</html>

Nie jest to samo. Przy użyciu

.rodzic > .dziecko

wskazujemy że tylko dziecko będzie miało określony styl a nie rodzic i dziecko jednocześnie

Nie korzystaj z gotowych rozwiązań domal122 bo się nigdy nie nauczysz.Do ustawiania rozmiaru przycisków względem zawartego w nich obrazka,tekstu czy innego obiektu, stosuje się atrybut padding.Na przykład gdy masz przycisk z dowolnym tekstem o atrybucie font-size: 20px; to żeby przycisk miał stałą wysokość należy nadać klasie lub id atrybut padding:10px; (przycisk będzie miał 10px nad i pod tekstem oraz 10px po bokach niezależnie od długości tekstu).Można też ustawiać dla jakich stron ma być padding czyli czy będzie on wyświetlany nad tekstem o rozmiarze 10px pod tekstem, tylko z lewej itd.Od tego służy:

padding-top lub padding-bottom lub padding-left lub padding-right

 

Więcej na ten temat:

 

http://www.w3schools.com/css/css_padding.asp

 

autorowi nie chozilo o to o czym piszesz. On chce, zeby te cztery przciski zajmowaly caly pasek menu. Czyli jak ma 4 to kazdy ma byc dlugi  na 25% dlugosci paska menu. A potem gdy doda 5, to zeby ten sam sobie ustalal dlugosc(20%)

No dobra, przeczytaj jeszcze raz mój post.Za pomocą padding da się ustawić przyciski na 100% wystarczy policzyć px które wchodzą w skład menu.Chyba że chce on zrobić inteligentny szkielet tj. taki który dopasuje się wszystkim sam do okna przeglądarki. :wink:

P.S. Mój Kod Jest Dobry ?

Moim zdaniem to jak nawet się da to zrobić za pomocą CSS i HTML to jest to bardzo kosmiczny sposób i nie widze w nim sensu. A jak to ma być strona responsywna, to masz naprawdę dużo języków, których możesz tutaj użyć, i których zapewne byś użył.

 

Poza tym zamiast :

padding: 18px 25px 21px 25px;

możesz po prostu napisać:

padding: 18px 25px 21px;

I nie wiem czy to tylko przykład czy nie, ale jak nie to zalecam kodowanie UTF-8 i język polski :slight_smile:

po co pisać padding: 18px 25px 21px;? moim zdaniem niech sobie będzie 25px;

Tak Padding Dlatego Ja Go Zmieniłem !