CSS-opas, CSS - Kaiken täyttää lomakkeet

Lomakkeiden CSS-ohjeita

Myös lomakkeisiin voidaan kohdistaa CSS-ohjeita.
Esimerkkinä "Tapahtumaan osallistumisen" -lomake. Mikäli www-sivulla on enemmän kuin yksi kokonainen lomake kenttineen, on lomakkeiden CSS-muotoiluille annettava nimet.

1. Jos www-sivulla yksi lomake lomakenttineen, esimerkki CSS-ohjeesta:

	  
   input[type=text], select {
     TÄSSÄ CSS-ohjeet
   }
  
2. Jos www-sivulla useita lomakkeita lomakenttineen, esimerkki nimetystä CSS-ohjeesta:
	  
   input[type=text].lomake1, select {
     TÄSSÄ CSS-ohjeet
   }
  
Esimerkkilomakkeen CSS-ohjeiden nimet on lomake1 jolla muotoillaan lomake-kentät ja tausta1 jolla muotoillaan lomakekenttien tausta-alue.

Esimerkin CSS-ohjeet ja HTML-koodaus:


  CSS-ohjeet:
   
  input[type=text].lomake1, select {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
  }
  input[type=submit].lomake1 {
    width: 100%;
    background-color: #4CAF50;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }
  input[type=submit].lomake1:hover {
    background-color: #45a049;  
  }
  .tausta1 {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
  }
	 
  HTML-koodaus: 
  
  <div class="tausta1">
  <form action="/tiedot.php">
    <label for="eNimi"> Etunimi </label>
    <input class="lomake1" type="text" id="eNimi" name="firstname" placeholder="Anna etunimesi...">

    <label for="sNimi"> Sukunimi </label>
    <input class="lomake1" type="text" id="sNimi" name="lastname" placeholder="Anna sukunimesi..">

    <label for="country"> Kaupunki </label>
    <select id="country" name="kaupunki">
      <option value="kajaani"> Kajaani </option>
      <option value="kokkola"> Kokkola </option>
      <option value="kuopio"> Kuopio </option>
    </select>
  
    <input class="lomake1" type="submit" value="Osallistu">
   </form>
  </div>
  

Esimerkin lomakkeen CSS-ohjeista:

width: 100%; - asettaa input-kentän leveydeksi 100% siinä tilassa (div) johon lomakekenttä sijoitetaan
display: inline-block; - sijoittaa input-kentän riville lohkoksi
box-sizing: border-box; - asetuksella saadaan lomakekentän leveys pysymään sen div-elementin sisällä johon kenttä on sijoitettu
cursor: pointer; - lomakekentän sisällä käyttävä kursori-merkki

Esimerkki, lomakekenttiä yksinkertaisesti muotoiltuna:

Esimerkin CSS-ohjeet ja HTML-koodaus:


  CSS-ohjeet:
   
  input[type=text].lomake2 {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    box-sizing: border-box;
    border: none;
    border-bottom: 2px solid red;
  } 
  
  HTML-koodaus: 
  
  <form>
    <label for="fname"> Nimi </label>
    <input class="lomake2" type="text" id="Nimi" name="nimi">
    <label for="lname"> Sähköposti </label>
    <input class="lomake2" type="text" id="Email" name="email">
  </form>
  

Edellisen esimerkin ongelma on lomakekentän leveys. Kun kentän leveys on 100% kenttä on sen tilan (div:n) levyinen johon se on sijoitettu. Jos leveydeksi (width) asetetaan esim 75%, alemman kentän opasteteksti siirtyy väärää paikkaan. Korjaamiseksi on CSS-ohjeita muokattava lisää tai sijoitettava kentät esim aiemmin esitellyn tyyliseen tausta1-ohjeiseen div-elementtiin.



Edellisen esimerkin-lomake avautuu Teksti-linkistä sijoitettuna laatikkoon:


Tässä voi sijaita teksti-muotoista informaatiota.
Sulje-painikkeeseen voi yhdistää lomakkeissa käytettävän Lähetä-toiminnon.

Teksti-linkistä aukeava lomake, Lomake ja sen CSS-ohjeet edellisssä esimerkissä, alla lomake-laatikon CSS-ohjeet ja HTML-koodaus:


  CSS-ohjeet:
   
    .md-button{
		display: inline-block;
		font-weight: 500;
		font-size: 1em;
		padding: 8px;
		min-width: 88px;
		border-radius: 2px;
		border: none;
		text-align: center;
		text-transform: uppercase;
		cursor: pointer;
		-webkit-transition: all .3s;
		        transition: all .3s;
	}
	.md-button:hover{
		background-color: rgba(0,0,0, .1);
	}
	.md-button.md-button--raised{
		background-color: rgb(64,81,181);
		color: rgb(255,255,255);
		box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
	}
	.md-button.md-button--raised:hover{
		background-color: rgb(64,81,181);
		box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
	}
	.md-card{
		background-color: rgb(255,255,255);
		border-radius: 5px;
		overflow: hidden;
	}
	.md-card-content{
		padding: 20px;
	}
	.md-card-btns{
		width: 100%;
		border-top: 1px solid rgb(200,200,200);
		text-align: right;
		padding: 8px 12px;
	}
	.toggleButton{
		margin-top: 20px;
	}
	.infobox{
		visibility: hidden;
		opacity: 0;
		filter: alpha(opacity=0);
		position: fixed;
		top: 50%;
		left: 50%;
		-webkit-transform: translate(-50%, -50%);
		    -ms-transform: translate(-50%, -50%);
		        transform: translate(-50%, -50%);
		min-width: 400px;
		z-index: 1;
		box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22);
		-webkit-transition: visibility 0s .4s, opacity .4s 0s;
		        transition: visibility 0s .4s, opacity .4s 0s;
	}
	:checked + .infobox{
		visibility: visible;
		opacity: 1;
		filter: alpha(opacity=100);
		-webkit-transition: visibility 0s 0s, opacity .4s .1s;
		        transition: visibility 0s 0s, opacity .4s .1s;
	}
    /* alla olevat ohjeet tarvitaan jokaiselle avautuvalle boksille omansa */
	#avaa1{ display: none;	}
	#avaa2{ display: none;	}
	#avaa3{ display: none;	} 
  
  
  HTML-koodaus:
  
  <p><b style="color: PURPLE"><label for="avaa1"> AVAA LOMAKE TÄSTÄ </label></b><p>  
  
  <div><input id="avaa1" type="checkbox">
	<div class="infobox md-card">
	  <div class="md-card-content">
		<form>
         <label for="fname"> Nimi </label>
         <input class="lomake2" type="text" id="Nimi" name="nimi">
         <label for="lname"> Sähköposti </label>
         <input class="lomake2" type="text" id="Email" name="email">
        </form>
                
      <p>
       Tässä voi sijaita teksti-muotoista informaatiota.<br>
	   Sulje-painikkeeseen voi yhdistää lomakkeissa käytettävän Lähetä-toiminnon.
      </p>				
	 </div>
	 <div class="md-card-btns">
		<label for="avaa1" class="md-button">Sulje</label>
	 </div>
	</div>
  <div>
  

Seuraavissa esimerkeissä focus-asetuksen käyttämistä. Asetuksen avulla ilmaistaan aktiivinen lomake-kenttä:

Esimerkin (yllä) HTML-koodaus ja CSS-ohjeet:


  HTML-koodaus:
  
  <form>
    <label for="enimi"> Etunimi </label>
    <input class="lomake4" type="text" id="enimi" name="enimi" value="Matti">
	
	<label for="snimi"> Sukunimi </label>
    <input class="lomake3" type="text" id="snimi" name="snimi" value=" Meikäläinen ">
  </form>

  CSS-ohjeet:
  
  input[type=text].lomake4 {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    box-sizing: border-box;
    border: 3px solid #ccc;
    -webkit-transition: 0.5s;
    transition: 0.5s;
    outline: none;
  }
  input[type=text].lomake4:focus {
    border: 3px solid DarkOrange;
  }
  input[type=text].lomake3 {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    box-sizing: border-box;
    border: 1px solid #555;
    outline: none;
  }
  input[type=text].lomake3:focus {
    background-color: RGB(255, 228, 179);
  }
  

Etsi-lomakekenttä ja ikoni esimerkki:

Haku-ikonina eli kuvana voi käyttää valmista ikonia, kuvaa tai animaatiota. Esimerkissä Etsi-sanan edessä käytetään jpg-kuvaa jonka koko on 24px * 24 px:


  HTML-koodaus:
  
  <form>
    <input class="hakukentta" type="text" name="search" placeholder="Etsi..">
  </form>
  
  CSS-ohjeet:
  
  input[type=text].hakukentta {
    width: 100%;
    box-sizing: border-box;
    border: 2px solid #ccc;
    border-radius: 4px;
    font-size: 16px;
    background-color: white;
    background-image: url('hakuikoni.jpg');
    background-position: 10px 10px; 
    background-repeat: no-repeat;
    padding: 12px 20px 12px 40px;
  }
  

Etsi-lomakekenttä jonka leveys kasvaa aktivoitaessa kenttä ja pienenee kun klikataan www-sivua kentän ulkopuolella:

Suurenevan Etsi-kentän koodaukset:


  HTML-koodaus:
  
  <form>
    <input class="etsi2"type="text" name="Etsi" placeholder="Etsi..">
  </form>
  
  CSS-ohjeet:
  
  input[type=text].etsi2 {
    width: 130px;
    box-sizing: border-box;
    border: 2px solid #ccc;
    border-radius: 4px;
    font-size: 16px;
    background-color: white;
    background-image: url('hakuikoni.jpg');
    background-position: 10px 10px; 
    background-repeat: no-repeat;
    padding: 12px 20px 12px 40px;
    -webkit-transition: width 0.4s ease-in-out;
    transition: width 0.4s ease-in-out;
  }
  input[type=text].etsi2:focus {
    width: 100%;
    border: 2px solid blue;
    border-radius: 4px;
  }
  

Tekstilomake-kenttä:

Tekstilomake-kentän koodaukset:


  HTML-koodaus:
  
  <form>
    <textarea class="tekstilomake">Kirjoita viesti...</textarea>
  </form>
  
  CSS-ohjeet:
  
  .tekstilomake {
    width: 50%;
    height: 150px;
    padding: 12px 20px;
    box-sizing: border-box;
    border: 2px solid #ccc;
    border-radius: 4px;
    background-color: #f8f8f8;
    font-size: 16px;
    resize: none;
  }
  

Responsiivinen lomake joka reagoi laitteen näytön kokoon. Kokeile esimerkin reagointia pienentämällä selaimen kokoa tai mobiililaitteella:

Responsiivisen lomakkeen koodaukset:


 HTML-koodaus:
  
 <div class="kokolomake">
  <form action="viesti_2k.php">
  <div class="kellu">
    <div class="leveys-25">
      <label class="flomake" for="enimi"> Etunimi </label>
    </div>
    <div class="leveys-75">
      <input class="flomake" type="text" id="enimi" name="etunimi" placeholder="Etunimesi..">
    </div>
  </div>
  <div class="kellu">
    <div class="leveys-25">
      <label class="flomake" for="snimi"> Sukunimi </label>
    </div>
    <div class="leveys-75">
      <input class="flomake" type="text" id="snimi" name="sukunimi" placeholder="Sukunimesi..">
    </div>
  </div>
  <div class="kellu">
    <div class="leveys-25">
      <label class="flomake" for="kaupunki"> Kaupunki </label>
    </div>
    <div class="leveys-75">
      <select class="flomake" id="kaupunki" name="kaupunki">
        <option value="helsinki"> Helsinki </option>
        <option value="oulu"> Oulu </option>
        <option value="turku"> Turku </option>
      </select>
    </div>
  </div>
  <div class="kellu">
    <div class="leveys-25">
      <label class="flomake" for="viesti"> Viesti </label>
    </div>
    <div class="leveys-75">
      <textarea class="flomake viestikentta" id="viestisi" name="viesti" placeholder="Kirjoita viesti..">
	  </textarea>
    </div>
  </div>
  <div class="kellu">
    <input class="flomake" type="submit" value="Lähetä">
  </div>
  </form>
</div>
  
  CSS-ohjeet:
  
  * {
    box-sizing: border-box;
  }
  input[type=text].flomake, select.flomake, textarea.flomake {
    width: 100%;
    padding: 12px;
    border: 1px solid #ccc;
    border-radius: 4px;
    resize: vertical;
  }  
  label.flomake {
    padding: 12px 12px 12px 0;
    display: inline-block;
  }
  input[type=submit].flomake {
    background-color: #4CAF50;
    color: white;
    padding: 12px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    float: right;
  }
  input[type=submit]:hover {
    background-color: #45a049;
  }
  .kokolomake {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
  }
  .leveys-25 {
    float: left;
    width: 25%;
    margin-top: 6px;
  }
  .leveys-75 {
    float: left;
    width: 75%;
    margin-top: 6px;
  }
  .viestikentta{
    height: 200px;
  }
  /* lopettaa kenttien "kellumisen" */
  .kellu:after {
    content: "";
    display: table;
    clear: both;
  }
  /* Responsivuus - kun näytön leveys pienempi kuin 600px , 
   kentien edessä oleva teksti siirtyy kenttiewn yläpuolelle */
  @media screen and (max-width: 600px) {
    .leveys-25, .leveys-75, input[type=submit] {
      width: 100%;
      margin-top: 0;
    }
  }
  






KESKEN KESKEN KESKEN