Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Valign-arvo

Sivun loppuun

Macro [31.10.2009 18:44:52]

#

Koitan saada kahta div-elementtiä vierekkäin, ja niin että teksti alkaisi aina ylhäältä.

<div valign="top" style="display: inline;">
	Tämä on vasen palkki<br><br>
	Tämä on vasen palkki
</div>
<div valign="top" style="display: inline">
	Miksei tämä näy ylhäällä valign="top"-arvosta huolimatta?
</div>

Miksiköhän "Miksei tämä..." -kohta ei näy siis sivun yläreunassa, vaan alkaa toisesta "Tämä on..." -rivistä. Mitä tehdä?

Merri [31.10.2009 19:01:45]

#

Nyt mennäänkin CSS-taiton perusteiden puolelle. Elementit voidaan hyvin karkeasti jakaa kahdenlaisiin elementteihin: jatkuvasti rivinä vasemmalta oikealle, ylhäältä alas soljuvana inline-sisältönä, sekä laatikkoina, jotka oletuksena valtaavat kaiken tilan vaakasuunnassa, joten ne pinoutuvat päällekkäin.

Ainut tyyli, joka on DIV-elementillä on, on display: block;. Vastaavasti SPAN-elementin ainut tyyli on display: inline;. Tavallaan siis tyylimäärityksesi tekee DIV-elementistä SPAN-elementin. Lopputulos siis vastaa tätä:

Tämä on vasen palkki<br><br>
Tämä on vasen palkkiMikseitämä näy ylhäällä

... sillä mikään tyyli ei määrittele toimimaan toisin. Samoin valign-attribuutilla ei ole minkäänlaista merkitystä DIV-elementissä, ja taulukoissakin se on jäänne ajalta ennen CSS:ää.


Joten mitä pitäisi sitten tehdä? Yksi yksinkertaisimpia tapoja on kelluttaa toinen elementti vasemmalle ja antaa toisen elementin olla kuten se on.

<!DOCTYPE html>
<html>
    <head>
        <title>Kaksi palstaa</title>
        <style type="text/css">

/* allaoleva temppu vanhemmissa IE:n versioissa (tavallaan bugi) */
div.palsta {
    width: 100%;
}

/* pseudoelementti, jonka tehtävä on tehdä div.palstasta vähintään kellutetun elementin korkuinen */
div.palsta:after {
    clear: both;
    content: '';
    display: block;
}

/* vasen palsta (kellutettu elementti) */
div.palsta div:first-child {
    float: left;
    width: 49%;
}

/* oikea palsta (normaalisti käyttäytyvä DIV-elementti) */
div.palsta div:first-child + div {
    margin-left: 50%;
}

        </style>
    </head>
    <body>
        <div class="palsta">
            <div>
                <h1>Vasen palkki</h1>
                <p>Tämä on vasen palkki.</p>
            </div>
            <div>
                <h1>Oikea palkki</h1>
                <p>Tämä on oikea palkki.</p>
            </div>
        </div>
    </body>
</html>

Muitakin tapoja on. Mitä tulee ylälaidasta alkamiseen, niin siitä ei vain tarvitse välittää, koska sisältö alkaa ylälaidasta. CSS:n vertical-align vaikuttaa inline-elementin sijoittumiseen pystysuunnassa sijaitsemallaan rivillä. Poikkeus tähän on nimenomaan taulukon solu, jossa se määrittää alkaako inline-sisältö keskeltä (oletus), ylhäältä vai alhaalta.

Macro [31.10.2009 19:41:21]

#

Keksinkin jo, miten teen sen pikkaisen yksinkertaisemmin.

<div style="float: left">
    Tämä on vasen palkki<br><br>
    Tämä on vasen palkki
</div>
<div style="padding-left: 5px">
    Nyt se toimii, mutta padding-left: 5px ei toimi?
</div>

Miksei jälkimmäisessä elementissä toimi padding-left -arvo?

peg [31.10.2009 19:56:29]

#

laita margin-left.

Macro [31.10.2009 19:57:44]

#

Koitin jo sitä, ei toimi.

Merri [31.10.2009 21:03:24]

#

Tuossa tapauksessa voit floattia molemmat, tosin paljon riippuu siitä, mikä on haluttu lopputulos.

Tuo ei toimi, koska kellutettu elementti ei vaikuta toisen elementin sisennykseen:

-----------------------------------------
| floatti | padding-left: 5px           |
|         |                             |
|         | <- 5px ei vaikuta tässä     |
|----------                             |
| <- se 5px vaikuttaa tuolla laidassa   |
|                                       |
-----------------------------------------

Voit havainnollistaa tämän laittamalla taustavärin laatikoille ja tekemällä oikeanpuoleisesta laatikosta isomman.

Jos taas laitat kiinteän leveyden vasemmanpuoleiselle laatikolle ja vasenta marginaalia oikeanpuoleiselle, niin saat tämäntapaisen lopputuloksen:

----------- -----------------------------
| floatti | | 5px vaikuttaisi tässä     |
|         | |                           |
----------- |                           |
            |                           |
            -----------------------------

Macro [01.11.2009 10:29:48]

#

Joo, kiitos Merri =) Nyt se näyttäisi toimivan hyvin.

<div style="float: left">
    <p>Tämä on vasen palkki</p>
	<p>Tämä on vasen palkki</p>
</div>
<div style="margin-left: 5px; float: left">
    <p>Ensimmäinen kappale</p>
	<p>Toinen kappale</p>
	<p>Nämä kaikki näkyvät oikeassa kohdassa</p>
</div>

Macro [01.11.2009 12:24:25]

#

*---------------------------------------------------------------*
| Yläosan div                                                   |
|                                                               |
|                                                               |
|                                                               |
*-----------------*---------------------------------------------*
| Valikko-div     | Sisältö tulee tänne
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
*-----------------*
| Alaosan div     |
|                 |
*-----------------*

Tältä pitäisi näyttää nyt. Ongelmana on se, että en saa tuota alaosan diviä paikoilleen tuonne. Miten se määritetään tähän?

<html>
	<head>
		<title>Sivun otsikko</title>
		<link rel="stylesheet" href="styles.css" type="text/css">
	</head>
	<body>
		<div id="ylabot"></div>
		<div id="sis" style="float: left">
			<p style="padding-left: 5px">Tämä on vasen palkki</p>
			<p style="padding-left: 5px">Tämä on vasen palkki</p>
		</div>

		<div style="margin-left: 10px; float: left">
			<p style="margin-top: 0px">Ensimmäinen kappale</p>
			<p>Toinen kappale</p>
			<p>Nämä kaikki näkyvät oikeassa kohdassa</p>
		</div>
	</body>
</html>

MIB [01.11.2009 14:54:54]

#

Auttaisiko tämä?

https://www.ohjelmointiputka.net/keskustelu/19387-vaaka-pystysuunnassa-venyvä-ulkoasu#v152561

Macro [01.11.2009 15:18:28]

#

Nähtävästi Merrin linkki ei toimi ko. sivulla.

Merri [01.11.2009 23:03:13]

#

Ei toimi, tuli pakkomuutto pois nopean netin ääreltä niin jouduin vetämään oman kotipalvelimen pois.

Siirretty nyt tänne: http://merri.net/xhtml/venyy_paukkuu/


Mitä tulee asetteluusi, niin helpointa lienisi asettaa div vasemman divin sisälle. Samoin olisi erittäin hyvä opetella erittelemään CSS HTML-koodin seasta, sekasopasta tulee pian vaikea ylläpidettävä.

Macro [02.11.2009 17:32:34]

#

Selvä, ei siinä mitään. Kyllä, siellä se meni oikeaan kohtaan. Ongelmana on nyt se, että kuva joka on taustakuvana ko. id:lle näkyy kahtena, vaikka height-arvo on annettu lohkolle oikein.

Kyllä, varsinaisilla sivuilla onkin niin. Kun en halunnut lähettää pitkää koodiani tänne, niin tein referaatin siitä, ja liitin CSS-määrittelyt style-attibuuttiin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta