Ocena wątku:
  • 1 głosów - średnia: 5
  • 1
  • 2
  • 3
  • 4
  • 5
[CSS]vertical-align nie działa
#1
Witam,
tworze menu z przycisków (div):
Kod:
<div class="przycisk"><p class="menu"><span><a class="menu" href="">O MNIE</a></span></p></div>
nadawałem z bezsilności parametr 'vertical-align:middle;' dla <div> <p>, <span> oraz <a> ale w żdanym przypadku tekst nie wyśrodkowuje się względem górnej i dolnej krawędzi, dlaczego ?
Dodam też, że <span> umieszczałem już przed <p> <a> i zupełnie do wewnątrz <span>O MNIE</span>, ale to i tak nic nie dało.
Pozdrawiam
Odpowiedz
#2
Wyśrodkowujesz menu względem całej strony, czy tekst względem menu?

Wklej też CSS.
Odpowiedz
#3
Wyśrodkowuję tekst względem diva id=przycisk.
Wklejam całość:
Kod:
* {
      padding: 0px 0px 0px 0px;
      margin: 0px 0px 0px 0px;
}

body
{
      background-image  : url("images/tlo.jpg");
      background-repeat : repeat-x;
}

div#glowny
{
      border:0px solid black;
      width:1000px;
      margin: 0 auto;
}

div#head
{
      border:0;
      width:1000px;
      height:327px;
      margin: 0 auto;
      background-image : url("images/head.jpg") ;
}

div#baner
{
position: relative;
top: 55px;
left: 0px;
width:1000px;
height:242px;
}

div#tresc
{
      border:0;
      width:1000px;
      height:200px;
      background-color: white;
}

div#stopka
{
      border:0;
      width:1000px;
      height:118px;
      background-image : url("images/stopka.jpg") ;
}

div#menu
{
margin: 0px 0px 0px 50px;
}

div.przycisk
{
width: 161px;
height: 49px;
background-image: url(images/p_menu.jpg);
float: left;
display: block;
text-align:center;
display: block;
}

p.menu
{
padding-top: 50%px;
text-align: center;
font-family: Times New Roman;
font-weight: bold;
font-size: 15px;
color: #222222;
}

a.menu
{
text-decoration: none;
color: #222222;
}

span
{
}


/* ]]> */
</style>


</head>

<body>

<div id="glowny">
      <div id="head">
            <div id="baner"></div>
      </div>

      <div id="tresc">
            <div id="menu">
                  <div class="przycisk"><p class="menu"><a class="menu" href=""><span>O MNIE</span></a></p></div></div>
                  <div class="przycisk"><p class="menu"><a class="menu" href="">GALERIA I MULTIMEDIA</a></p></div>
                  <div class="przycisk"><p class="menu"><a class="menu" href="">BIURO<br />POSELSKIE</a></p></div>
            </div>
      </div>
      <div id="stopka"></div>
</div>
</body>
Odpowiedz
#4
Spróbuj dodać do div.przycisk line-height: 49px; taki sobie sposób, ale zwykle daje radę w prostych przypadkach. Jak nie da to może to być winna innych wartości np. padding-top: 50%px; - co to ma być ? Wink
Odpowiedz
#5
Smile nie, no to -50px to pozostałość po moich próbach znalezienia rozwiązania.
To line-height to jest rozwiązanie, ale:
1. nie w przypadku gdy pozostałe pozycje mają <br> i napisy się rozjeżdżają poza przycisk
2. chciałbym również wiedzieć jak wyśrodkowywać teksty względem górnej i dolnej krawędzi i czy vertical-align jest do tego odpowiedni

Rozwiązanie, które mi podałeś mogłoby być OK, ale jest rozwiązaniem 'na chwilę', nie daje poglądu na ogół sprawy i dlatego błagam dalej o pomoc w znalezieniu jakiegoś uniwersalnego sposobu na wyśrodkowywanie tekstów góra-dół.
Odpowiedz
#6
Ja zwykle załatwiam to przez padding: (odpowiadnia wartość w px od góry). Możesz też zrobić to przez position:relative;. Wtedy nadaj div.przycisk
Kod:
position:absolute;
Natomiast p.menu
Kod:
position:relative;
top:50%;
margin-top: -(połowa wysokości czcionki)px;

Tak skomplikowane konstrukcje są odpowiednie raczej dla grafiki, a nie tekstu, ale musi zadziałać.

P.S. Ogólnie mocno namieszałeś sobie i w kodzie i w CSS na przyszłość staraj się upraszać, będziesz miał mniej problemów.
Odpowiedz
#7
Rozumiem te dwa rozwiązania, ale są one odpowiednie tylko wtedy, gdy tekst w przycisku jest w jednej linii i wtedy jasne, tekst bedzie na srodku.

[Obrazek: przyklad.jpg]

Wystarczy, że tekst będzie w dwóch liniach i wtedy już nie jest na środku.
W podobny sposób zadziała rozwiązanie z position: relative;
Interesuje mnie, czy istnieje rozwiązanie bardziej uniwersalne. Takie, które będzie potrafiło wyważyć tekst i umieścić je dokładnie tak, aby między tekstem a górną i dolną krawędzią 'rodzica' było tyle samo px'ów.
Odpowiedz
#8
No tak...fakt
Poczytaj to http://kurs.browsehappy.pl/CSS/Table i http://kurs.browsehappy.pl/Krok/TabeleCSS innych pomysłów nie mam, ale nic nie podpowiem, bo nie stosuje tego.
Odpowiedz
#9
Ok, dzięki.
Będę poszukiwał. Może znajdzie się ktoś, kto zna odpowiedź na moje pytanie Smile
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  galeria nie działa w IE Nicorrtiss 2 3,379 02-08-2013, 22:42
Ostatni post: Nicorrtiss
  Css działa tylko na... IE catalunya 5 4,618 21-12-2012, 15:04
Ostatni post: atp
  Strona na DIV-ach nie działa w IE i Operze kazelot2000 7 5,649 03-08-2012, 16:12
Ostatni post: kazelot2000
  pokazuje mi się błąd strona nie działa jabol73 1 2,295 28-07-2012, 18:17
Ostatni post: Pedro84
  Formularz nie działa raxiq 9 5,284 26-06-2012, 12:32
Ostatni post: raxiq

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl