ARAD
FACULTATEA DE ŞTIINTE ECONOMICE INFORMATICĂ ŞI INGINERIE
LUCRARE DE LICENŢĂ
www.gwindows.ro
Proiectarea, realizarea si implementarea unui site pentru
o firmă de tâmplarie PVC
Conducător ştiinţific
Lect. univ dr. ing. GABOR ANDREI MARIUS
Absolvent
GRAB ANDREI
Arad
2016
1
CUVÂNT ÎNAINTE
2
CUPRINS
1 INTRODUCERE................................................................................................................................5
2 PREZENTAREA SITE-ULUI............................................................................................................6
3 TEHNOLOGII WEB.........................................................................................................................11
3.1 HTML 5......................................................................................................................................11
3.2 PHP............................................................................................................................................12
3.3 JAVASCRIPT............................................................................................................................14
3.3.1 Elementele de bază..............................................................................................................14
3.3.2 Validarea formularelor.........................................................................................................15
3.4 JQUERY.....................................................................................................................................17
3.4.1 Adăugarea librăriei JQuery în pagina web...........................................................................17
3.4.2 Structura librăriei JQuery.....................................................................................................18
3.4.3 Metoda document ready.......................................................................................................19
3.4.4 Acțiunea sau evenimentul unei funcții în JQuery.................................................................19
3.4.5 Selectori JQuery..................................................................................................................20
3.4.6 Animațiile JQuery................................................................................................................21
3.4.7 Metoda fade.........................................................................................................................22
3.4.8 Metodele slide.....................................................................................................................23
3.4.9 Funcția de callback..............................................................................................................23
3.4.10 Înlănțuirea metodelor JQuery............................................................................................24
3.4.11 Manipularea conținutului HTML.......................................................................................24
3.4.12 Adăugarea conținutului HTML..........................................................................................24
3.4.13 Ștergerea conținutului HTML............................................................................................25
3.4.14 Dimensiuni JQuery............................................................................................................25
3.5 CSS.............................................................................................................................................26
3.5.1 Foaie de stil externă.............................................................................................................26
3.5.2 Foaie de stil internă..............................................................................................................28
3.5.3 Stil în linie...........................................................................................................................29
3.5.4 Stiluri CSS adaptive.............................................................................................................30
4. REALIZAREA SITE-ULUI............................................................................................................32
4.1 Utilizare scripturilor...................................................................................................................32
4.2 Implementarea designului...........................................................................................................34
5. CONCLUZII ŞI CONTRIBUŢII......................................................................................................39
BIBLIOGRAFIE..................................................................................................................................40
3
LISTA FIGURILOR
4
1 INTRODUCERE
5
2 PREZENTAREA SITE-ULUI
Pagina de acasă are formatul unui “one page site” , fiind structurată in mai multe
secțiuni, mai exact în cinci. Fiecare secțiune tratează un subiect din spectrul tâmplăriei PVC,
ilustrând principalele caracteristici ale componentelor și materialelor printr-o metodă foarte
vizuală și adoptând designul minimalist, care dă impactul de simplu și frumos.
Fiecare secțiune în pagina de acasă se poate face accesând rotița de mouse, apasând
sageata de sus sau jos de la tastatură sau accesând ancorele secțiunilor din stânga jos, iar pe
6
dispozitivele mobile cu touch se poate atinge si trage sus sau jos pe pagină. Secțiunile se
adaptează în funcție de dispozitivul folosit și se centrează vertical automat. Navigarea site-
ului se realizează accesând fiecare link din bara de navigație de sus.
Pagina “Despre noi” conține informații despre firma I.F.GRAB, împreună cu detalii
despre componentele și accesoriile care duc la realizarea tâmplăriei PVC. Pagina este
structurată într-un paragraf cu delaliile firmei împreună cu șase categorii principale care
semnifică fiecare componentă a tâmplăriei PVC.
Categoriile sunt structurate în ferestre de tip modal, care pot fi accesate dând click pe
butonul corespunzător componentei
7
Figura 2.6 Pagina despre noi
8
Figura 2.8 Galeria de imagini
În pagina “Ofertă”, clientul are opțiunea de a alege unul sau mai multe modele de
tâmplărie dintr-un set prestabilit de uși și geamuri. Tâmplăria se poate adăuga foarte ușor
apasând pe butonul “Adaugă tâmplărie”. Toate modelele de tâmplărie pot fi selectate dintr-o
fereastră de tip modal.
După selecție, clientul trebuie să introducă, înălțimea, lățimea și numărul de bucăți, de
asemenea să selecteze culoarea dorită prin intermediul unor butoane radio. Accesooriile dorite
se pot selecta utilizând selecturi-le alăturate. După ce s-au stabilit toate detaliile clientul își
poate calcula prețul în funcție de ce a selectat. Tâmplăria, împreună cu prețul pot fi adăugate
într-o ofertă, unde acolo se poate vedea totalul tâmplăriilor. Această ofertă este în scop
informativ, oferindu-i clientului o idee, cât ar costa tâmplăria dorită, prețul final fiind discutat
la telefon sau pe mail.
9
Figura 2.10 Pagina de ofertă – introducere date tâmplărie
Pagina “Contact” reprezintă pagina unde clientul poate să afle informații de contact
ale firmei I.F.GRAB. În această pagină, locația firmei este ilustrată printr-o hartă interactivă
utilizând google maps.
Clientul poate contacta reprezentantul firmei apelând la numărul de telefon afișat, sau
prin mail completând formularul alărutat.
10
3 TEHNOLOGII WEB
3.1 HTML 5
Hyper Text Markup Language sau după cum îl știm cu toții HTML reprezintă un
limbaj de marcare care este folosit pentru a creea pagini web ce pot fi afișate într-un
navigator, fiind codul care stă la baza paginilor web. Aceste pagini web au extensia “.html”
sau “.htm” și sunt formate din diferite etichete sau tag-uri.
Redarea conținutului poate varia foarte mult, de la simple proprietăți ale textului, cum
ar fi text înclinat ,îngroșat sau subliniat până la scripturi mai complexe, imagini sau formulare.
Informațiile despre titlul și autorul documenului se numesc metadate, acestea structurează
documentul în segmente diferite, titluri etc., de asemenea aceste metadate conțin informații
importante care permit documentului să fie legat de alte documente, astfel pentru a forma
web-ul sau hiperlink-uri.
Tag-urile sau etichetele care duc la formarea paginilor web sunt de obicei o pereche,
cea de deschidere fiind <tag> iar cea de închidere fiind </tag>, dar mai exista și cazuri în care
se folosește doar eticheta de forma <tag />. Aceste tag-uri sau etichete sunt interpretate de
către browser sau navigator, afișând rezlutatul pe ecran în funcție de tag-urile folosite. Un
document HTML este compus din trei părți principale, acestea fiind, versiunea HTML a
documentului, zona head cu tag-urile <head> </head> și zona body cu tag-urile
<body></body>.
HTML se împarte în mai multe versiuni, ultima iterație fiind HTML 5 oferind multe
îmbunătățiri în ceea ce privește suportul pentru multimedia și în același timp fiind un limbaj
foarte ușor de citit. Pe lângă tag-urile cunoscute din versiunile anterioare de HTML acesta
cuprinde mai multe caracteristici sintactice cum ar fi, tag-urile <video>, <audio>, <header> și
<canvas> precum și integrarea SVG (grafică vectorială proporționabilă) care înlocuiește tag-
ul <object>. Aceste tag-uri facilitează manipularea în web a conținutului multimedia fără a
mai recurge la metode de plugin sau API. Au mai fost introduse de asemenea și alte elemente
noi ca <section>, <article>, <header> și <nav> îmbunătățind conținutul și așezarea în
document.
În acest moment, aproximativ 50% din browsere suportă HTML 5 cealaltă jumătate
folosind și Flash. HTML 5 utilizează foarte intens alte thenologii asemănătoare cu JavaScript,
Canvas și Css, fiind o alternativă foarte bună a clasicelor pulgin-uri.
Exemple în folosirea noilor proprietăți ale HTML5:
11
Încărcarea unui fișier video cu redarea automată
<video width= ”320” height= ”240” autoplay>
<source src= ”movie.mp4” type= ”video/mp4”>
<source src= ”movie.ogg” type= ”video/ogg”>
Browserul tău nu suportă HTML 5.
</video>
3.2 PHP
PHP: Hypertext Preprocessor sau mai pe scurt PHP, este un limbaj de programare
folosit pentru a produce pagini web cu conținut dinamic, fiind de regulă înglobat în codul
HTML facilitând creearea aplicațiilor independente. PHP este unul dintre cele mai utilizate
limbaje de programare server-side, fiind utilizat pe 1 milion de servere web conform
statisticilor.
12
PHP diferă de JavaScript prin faptul că serverul execută codul PHP și este transmis
mai departe către client prin pagina HTML, astfel clientul primește rezultatul rulării scriptului
fără a vedea codul sursă, păstrând astfel discreția dintre scriptul dezvoltatorului și client.
Fiind o combinație dintre C, Pearl și Java, PHP este un limbaj foarte simplu de utizat,
fiind folosit pentru creearea aplicațiilor de sine stătătoare. Un alt aspect important al
limbajului PHP îl reprezintă faptul că acesta poate coopera cu majoritatea bazelor de date
relaționale (MySql, Oracle). Fișierele care folosesc limbajul PHP pot avea extensiile, .php,
.php3, .ph3, .php4, .inc, .phtml acestea fiind procesate de către server și prezentate clientului
prin text sau cod HTML.
În această lucrare limbajul PHP a fost folosit pentru a creea un formular de contact,
utilizând metoda “POST”. Acest script trimite un mail la adresa contact@gwindows.ro
folosind informațiile introduse de către client în formularul de contact.
<?php
if(empty($_POST) === false){
$errors = array();
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
if (empty($name) === true || empty($email) === true || empty($message) ===
true){
$errors[] = 'Câmpurile nume, email și mesaj sunt obligatorii';
} else {
if(filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$errors[] = 'Nu ați introdus o adresă de email validă!';
}
}
if(empty($errors) === true){
$headers = "De la: " . $email . "\r\n";
mail('contact@gwindows.ro', 'Formular contact - '. $name, $message,
$headers);
header ('Location: Contact.php?trimis');
exit();
}
}
?>
13
3.3 JAVASCRIPT
JS sau JavaScript este cel mai popular limbaj de scripting, acesta fiind interpretat
direct de catre browser. Acesta dă o multitudine de funcționalități paginilor web, având un
răspuns imediat. Scriptul poate fi implementat in paginile HTML făcând posibilă verificarea
datelor introduse de utilizatori sau crearea de animații și meniuri.
Deși acest script este asemanător cu limbajul de programare Java ,prin nume, sintaxă
și librării standard, JavaScript și Java nu ai nici o legătură, acesta fiind bazat pe limbajul de
programare Self și având o sintaxă apropiată de cea a limbajului C.
Limbajul a fost dezvoltat de către Brandon Eich, sub numele de Mocha, limbajul fiind
numit oficial LiveScript atunci când a fost lansat în versiunea beta a navigatorului Nestcape
Navigator 2.0, pe urmă fiind redenumit în JavaScript când s-a lansat împreună cu Netscape
Navigator 2.0B3.
Browserele web interpretează informațiile unei pagini web sub forma unui arbore de
obiecte fiind accesate și manipulate de script-urile JavsScript. Acel arbore de obiecte se mai
numește DOM sau Document Object Model, acesta având standardul W3C, oferind
posibilitatea scrierii de scripturi portabile, care pot funcționa pe toate browserele.
Comentarii:
- pe o singură linie ex. // Comentariu pe o linie
- pe mai multe linii ex. /* .... */
Tipuri de date:
- nedefinite ex. var test;
- nule
- string („sir de caractere”) ex. var x = “Salut, lume”;
- array(“tablou” sau “matrice”) ex. var sir = []; //o variabilă array cu numele sir
- date calendaristice ex. new Data(); // creează variabila Data care conține data și
ora
14
Funcții:
Funcțiile sunt blocuri de cod care execută o sarcină specială doar atunci când cineva o
apelează. Sintaxa unei funcții în JavaScript este de forma:
Function nume(parametru1, parametru2, parametru3) {codul care trebuie executat}
Obiecte:
Obiectele sunt variabile și pot conține mai multe valori.
Acest cod atribuie mai multe valori (Mercedes, AmgGTS, negru) variabilei numite
mașină: var mașină = {type:”Mercedes”, model:”AmgGTS”, color: “negru”};
Evenimente:
Când JavaScript este folosit în pagina HTML, acesta poate reacționa la evenimentele
alocate elementelor din interiorul acelei pagini. JavaScript execută cod când acele evenimente
sunt detectate.
<!DOCTYPE html>
<html>
<body>
<p>Dați click pe buton pentru a afișa data</p>
<button onclick= "displyDate()" >Cât este data?</button>
<script>
function displayDate() {
document.getElementById("demo").innerHTML = Date();
}
</script>
<p id= "demo"></p>
</body>
</html>
Obiectul math:
Obiectul math ne permite folosirea funcțiilor matematice cum ar fi: min, max, random,
round, ceil, floor.
Math.round(1.7); // valoarea rotunjită este 2
Math.round(3.4); // valoarea rotunjită este 4
Math.SQRT4 // calculează radical din 4
Utilizatorul poate introduce date într-o pagină prin intermediul formularelor HTML,
iar validarea acelor date se poate face cu ajutorul lui JavaScript.
15
Validarea datelor ne asigură că datele introdusele în calculator sunt curate, corecte și
folositoare. Sarcinile tipice de validare sunt:
- s-au introdus date în toate câmpurile?
- a fost introdusă o dată validă?
- a fost introdus text într-un camp numeric?
Validarea poate fi definită de mai multe metode diferite, și executată în mai multe
feluri.
Validarea Client Side este executată de către browserul web înainte de a fi trimise
datele de intrare către serverul web:
<form action="demo_form.asp" method="post">
<input type="text" name="fname" required>
<input type="submit" value="Submit" >
</form>
Validarea Server Side este executată de către serverul web înainte de a fi trimisă
acestuia:
<!DOCTYPE html>
<html>
<head>
<script>
function validareForm(){
var x = document.forms[ "myForm" ][ "fname" ].value;
if (x == null || x== "") {
alert("Name must be filled out");
return false;
}
}
</script>
</head>
<body>
<form name="myForm" action= "demo_form.asp"
onsubmit="return validateForm()"
method= "post">
Name: <input type="text" name="fname">
<input type="submit" value="Submit" >
</form>
</body>
</html>
16
3.4 JQUERY
Librăria JQuery este un singur fișier JavaScript care conține toate evenimentele,
efectele și funcțiile AJAX obișnuite pentru DOM. Acest fișier poate fi inclus în pagina web
prin creearea unui link către serverele publice, sau către fișierul local, utilizând următoarea
sintaxă. Acest link trebuie introdus între tag-urile <head> </head>.
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
17
În exemplul de ma jos, JQuery ascunde toate elementele <a> , folosind metoda .hide().
<!DOCTYPE html>
<html>
<head>
<meta charset= "utf-8" >
<title>Demo</title>
</head>
<body>
<a href= "http://jquery.com/" >jQuery</a>
<script src= "jquery.js" ></script>
<script>
$(document).ready(function(){
$("a").click(function(event){
event.preventDefault();
$(this).hide( "slow" );
});
});
</script>
</body>
</html>
Sintaxa libăriei Jquery este special concepută pentru a selecta elemente HTML și de a
efectua diferite acțiuni pe acele elemente.
Sintaxa de bază este: $(selector).acțiune()
Semnul $ definește și accesează librăria Jquery
(selector) accesează sau găsește elementul HTML
acțiune() aplică o acțiune elementului HTML accesat
18
3.4.3 Metoda document ready
Metoda document ready, previne rularea oricărui cod JQuery înainte de a se încărca
pagina web în întregime.
Este o foarte bună practică de a aștepta încprcarea paginii web înainte de a lucra cu
elementele HTML din interiorul acesteia.
Acest lucru ne ajută să punem codul JQuery înainte de body, in secțiunea head, și de
asemenea previne accesarea unor elemente din pagină care nu s-au încărcat.
Toate metodele JQuery se află în interiorul funcției document.ready()
$(document).ready(function () {
'use strict'
$(function () {
var string = "Un plus de liniste in viata ta." ;
var q = jQuery.map(string.split(''), function (letter) {
return $( '<span>' + letter + '</span>');
});
var c = 0;
var i = setInterval(function () {
q[c].appendTo(dest).hide().fadeIn(3000);
c += 1;
if (c >= q.length) clearInterval(i);
}, 100);
$( ".slogan" ).fadeIn('fast').delay(3500).fadeOut('slow');
$( ".welcome_content" ).hide().delay(4000).fadeIn('slow');
$( ".myButton" ).click(function () {
$( ".welcome_content" ).fadeOut(function () {window.location.href =
"Home.php" ; });
});
});
});
19
Exemple de acțiuni des întâlnite în paginile web:
- mutarea cursorului peste un element
- selectarea unui buton radio
- când dăm click pe un element
Exemplu efectuării unei acțiuni atunci când se mută cursorul peste elementul cu
numele id-ului “p1”.
<!DOCTYPE html>
<html>
<head>
<script src= "https://ajax.googleapis.com/ajax/libs
/jquery/1.12.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("#p1").mouseenter(function(){
alert( "You entered p1!" );
});
});
</script>
</head>
<body>
<p id="p1">Enter this paragraph</p>
</body>
</html>
Selectorii reprezintă unul dintre cele mai importante aspecte ale librăriei JQuery,
aceștia folosind sintaxa CSS care permite autorului să identifice foarte ușor seturile de
elemente din pagină. Cu ajutorul selectorilor JQuery putem identifica elementele din pagina
HTML după, nume, id, clasă, atribut, valoare de atribut și mult mai multe. Toți selectorii
JQuery încep cu semnul dolar urmat de paranteze rotunde: $().
Selectorii JQuery pot fi de mai multe feluri:
Selectori CSS care folosesc sintaxa și semantica CSS3:
- $("div") selectează toate elementele <div>
- $(”#testButton”) selectează elementele care au numele id-ului
“testButton”
- $("button[id*=test]") selectează toate butoanele în care atributul id
conține cuvântul “test”
- $(".numeclasă") selectează toate elementele care numele clasei
“numeclasă”
Selectori poziționali:
20
- $("p:first") selectează primul element din pagină
- $("div:nth-child(5n+1)") selectează toate elementele situate după
fiecare al cincilea element <div>
- $("button.small:last") selectează ultimul buton din pagină care are
numele clasei “small”
Selectori personalizați care nu folosest sintaxa și semantica CSS:
- $("img:animated") selectează toate elementele <img> care au o
animație în curs
- $(":button:hidden") selectează toate elementele de tip buton care sunt
ascunse
- $("option:not(:selected)") selectează toate elementele de tip <option>
care nu au fost selectate
Metoda animate() este folosită pentru a creea animații presonalizate. Această metodă
are sintaxa de tipul: $(selector).animate({params},speed,callback);
Parametrul params stabilește animarea proprietății CSS. Parametrul opțional speed
stabilește durata efectului de animație, acesta putând lua valorile: “slow”, “fast” sau
milisecunde. Parametrul opțional callback execută o funcție după încheierea animației.
Exemplul de mai jos, animează un element cu proprietăți multiple
$("button").click(function(){
$("div").animate({
left: '250px',
opacity: '0.5',
height: '150px',
width: '150px'
});
});
$(document).ready(function(){
$("button").click(function(){
var div = $( "div" );
div.animate({height: '300px', opacity: '0.4'}, "slow" );
div.animate({width: '300px', opacity: '0.8'}, "slow" );
div.animate({height: '100px', opacity: '0.4'}, "slow" );
div.animate({width: '100px', opacity: '0.8'}, "slow" );
});
})
21
3.4.7 Metoda fade
- metoda fadeTo este folosită pentru a seta opacitatea elementului ître valorile 0
și 1, 0 fiind complet transparent, iar 1 fiind complet vizibil.
$("button").click(function(){
$("#div1").fadeTo();
$("#div2").fadeTo("slow");
$("#div3").fadeTo(3000);
})
22
3.4.8 Metodele slide
Funcțiile slide ale librăriei JQuery au rolul de a muta elementele HTML în sus sau în
jos. Aceste metode se aplică de regulă meniurilor și panourilor, dar pot fi folosite pe orice
elemente HTML. Metoda JQuery slide poate fi de trei tipuri: slideUp, slideDown și
slideToggle.
- metoda slideUp se folosește pentru a muta elementul HTML sus față de poziția
lui inițială
$("#flip").click(function(){
$("#panel").slideUp();
});
Afirmațiile JavaScript sunt rulate linie cu linie. În cazul efectelor, linia urmatoare de
cod poate fi rulată chiar dacă efectul nu s-a terminat acest fapt creeând erori. Pentru a preveni
acest lucru putem apela o funcție de callback. Orice funcție callback este executată după
terminarea efectului.
Un exemplu pentru utilizarea unei funcții de callback la terminarea unui fadeOut.
23
$( ".myButton" ).click(function () {
$( ".welcome_content" ).fadeOut(function () {window.location.href =
"Home.php" ; });
});
$( ".slogan" ).fadeIn('fast').delay(3500).fadeOut('slow');
$( ".welcome_content" ).hide().delay(4000).fadeIn('slow');
$(document).ready(function(){
$("button").click(function(){
$("p").html("Hello <b>world!</b>");
});
});
Utilizând librăria JQuery, adăugarea conținutului HTML se poate face foarte ușor
folosind următoarele metode:
24
- metoda append() inserează conținutul la sfârșitul elementului HTML selectat:
$(selector).append(conținut)
- metoda prepend() inserează conținutul la începutul elementului HTML
selectat: $(selector).prepend(conținut)
- metoda after() inserează conținutul după elementul HTML selectat: $
(selector).add(conținut)
- metoda before() inserează conținutul înaintea elementului HTML selectat: $
(selector).before(conținut)
Utilizând librăria JQuery, ștergerea conținurului HTML se poate face foarte ușor
utilizând urmatoarele metode:
- metoda remove()sterge elemtul HTML selectat împreună cu elementul său
“child” $("#div1").remove();
- metoda empty() sterge doar elementele “child” ale elementului HTML selectat:
$("#div1").empty();
Folosind JQuery putem lucra foarte ușor cu dimensiunile unui element selectat cât și
cu dimensiunile ferestrei navigatorului, utilizând metodele principale width() și height().
Varitații ale metodelor principale sunt: innerWitdh(), innerHeight(), outerWitdh(),
outerHeight(), outerWidht(true) și outerHeight(true)
- metoda width() setează sau returnează lățimea unui element selectat excluzând
padding-ul, marginea și border-ul: $
(".div1").width(“100px”);
- metoda height() setează sau returnează înălțimea unui element selectat
excluzând padding-ul, marginea și border-ul: $
(".div1").height(“500px”);
25
Figura 3.2 Dimensiunile unui element în JQuery
3.5 CSS
CSS sau Cascading Style Sheets este un limbaj de stil care definește poziția
elementelor HTML în pagină. Cu ajutorul CSS putem schimba fontul, culorile, marginile,
liniile, imagini de background și mult mai multe lucruri. Pentru aranjarea elementelor în
pagină, poate fi folosit HTML dar CSS oferă mult mai multe opțiuni, fiind mai precis și
sofisticat, fiind suportat de către toate browserele.
HTML este folosit pentru a structura conținutul iar CSS este folosit pentru a formata
conținutul strucurat. CSS reduce cu mult munca alocată proiectării designului unui site-web,
deoarece de regulă toate stilurile și proprietățile elementelor se găsesc într-un singur fișier cu
extensia .css, iar dacă vrem să aducem o modificare designului existent , stilurile se modifică
dintr-un singur loc.
Ultima versiune a limbajului de stil CSS este CSS3, care aduce atribute noi și ajută la
creearea unui design web cât mai avansat.
Sunt trei moduri de a introduce o foaie de stil într-o pagină HTML, iar acestea sunt:
- foaie de stil externă
- foaie de stil internă
- stil în linie
26
Exemplu cum arată un fișier .css introdus intr-o pagină HTML:
<html>
<head>
<meta name= "viewport" content="width=device-width, initial-scale=1.0" >
<script src= "https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js" >
</script>
<script type= "text/javascript" src= "javascript/oferta.js"></script>
<script type= "text/javascript" src= "javascript/tamplarie.js"></script>
<script type="text/javascript" src= "javascript/jspdf.js"></script>
<link href='https://fonts.googleapis.com/css?
family=Raleway:100&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<link rel= "stylesheet" type= "text/css" href= "css/oferta.css" >
<link rel= "apple-touch-icon" sizes= "57x57" href= "sigla57x57.png" />
<link rel= "apple-touch-icon" sizes= "72x72" href= "sigla72x72.png" />
<link rel= "apple-touch-icon" sizes= "114x114" href= "sigla114x114.png" />
<link rel= "apple-touch-icon" sizes= "144x144" href= "sigla144x144.png" />
<link rel= "stylesheet" type= "text/css" href="css/menu.css">
</head>
<body id= "body" >
<?php include('menu.php') ?>
<div class= "content_oferta" >
<div class= "blueprint" ></div>
<div id= "titlu" >Calculator ofertă tâmplărie PVC</div>
<?php include('tamplarie.php') ?>
<div>
</body>
</html>
27
Figura 3.3 Rezultatul unui fișier css extern
<!doctype html>
28
<html>
<head>
<style>
body{
background-color: linen;}
#wrapper{
width: 300px;
border: 1px solid #000;
text-align: center;}
h1{
color: maroon;}
p{
color: maroon;}
</style>
</head>
<body>
<div id="wrapper">
<h1>Exemplu CSS stil intern</h1>
<p>Acesta este un paragraf.</p>
</div>
</body>
</html>
Stilul în linie este specific însăși tag-ului. Acesta folosește atributul HTML style
pentru a modela un tag specific. Nu este recomandat, deoarece modificarea CSS trebuie să fie
făcută în fiecare tag care folosește stilul în linie. Stilul în linie este potrivit pentru o proprietate
CSS care nu se folosește des în fișerul HTML.
29
3.5.4 Stiluri CSS adaptive
Majoritatea site-urilor din ziua de azi adoptă un design web adaptiv, reprezentând un
standard în ceea ce privește designul paginilor web. Acesta face ca site-ul respectiv să arate
bine pe toate dispozitivele modificând proprietățile conținutului cum ar fi: redimensionarea,
ascunderea, micșorarea, mărirea și mutarea.
Pentru a putea adopta un design web adaptiv, trebuie să setăm viewport-ul incluzând
următorul element <meta>:
<meta name="viewport" content="width=device-width, initial-scale=1.0">.
Elementul viewport meta dă browserului instrucțiuni cum să controleze dimensiunea
paginii.
Partea width=device-width setează lățimea paginii, după lățimea dispozitivului folosit.
Partea initial-scale=1.0 nivelul de mărire inițial atunci când pagina se încarcă pentru
prima dată în browser.
Designul web adaptiv se poate realiza utilizând media query. Acestea folosesc regula
@media pentru a include un bloc de proprietăți CSS doar atunci când se îndeplinește o
anumită condiție.
DESKTOP
30
TABLETĂ
TELEFON
Figura 3.5 Design web adaptiv
31
4. REALIZAREA SITE-ULUI
Pentru realizarea acestui site am ales să nu folosesc nici un fel de template, deoarece
am vrut să-mi testez cunoștințele în domeniul dezvoltării paginilor web. Încă de la-nceput ,
am decis să adopt un design minimalist bazându-mă în special pe limbajul CSS, JavaScript și
JQuery.
În dezvoltarea site-ului am folosit o multitudine de animații și funcții specifice
JavaScript-ului pentru a creea o navigare cât mai plăcută. Această lucrare este realizată
utilizând editorul de text Brackets. O alternativă mai bună decât Bracket este Adobe
Dreamweaver, care îmi permite să văd pagina în design view, dar am ales Brackets deoarece
am dorit să îmi imbunătățesc abilitățile de redactare a codului HTML, respectiv de CSS.
Site-ul a fost creeat inițial pe un server web local numit MAMP, iar la finalizare am
hotărât să încarc site-ul pe domeniul gwinodws.ro.
$(document).ready(function () {
'use strict'
$(function () {
var string = "Un plus de liniste in viata ta." ;
var q = jQuery.map(string.split(''), function (letter) {
return $( '<span>' + letter + '</span>');
});
var c = 0;
var i = setInterval(function () {
q[c].appendTo(dest).hide().fadeIn(3000);
c += 1;
if (c >= q.length) clearInterval(i);
}, 100);
$( ".slogan" ).fadeIn('fast').delay(3500).fadeOut('slow');
$( ".welcome_content" ).hide().delay(4000).fadeIn('slow');
$( ".myButton" ).click(function () {
$( ".welcome_content" ).fadeOut(function () {window.location.href =
"Home.php" ; });
});
});
});
Acest cod face ca textul “Un plus de liniste in viata ta” să fie afișat literă cu literă
folosind metoda fadeIn(), și dispare utilizând metoda fadeOut(), apărând mai apoi un slider cu
32
imagini și un buton. După apăsarea butonului “ENTER WEBSITE” tot conținutul paginii
dispare prin metoda fadeOut() suntem direcționați către pagina de acasă printr-o funcție de
callback.
function doarNumere(evt) {
evt = (evt) ? evt :a window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
}
function delete_gr3(gr3){
$('.gr3'+gr3).remove();
}
Această funcție șterge elementul HTML cu numele clasei “gr3”+ o variabilă care
conține numărul tâmplăriei.
33
function initMap() {
var myLatLng = {lat: 46.111609, lng: 20.852257};
var mapDiv = document.getElementById('harta');
var map = new google.maps.Map(mapDiv, {
center: myLatLng,
mapTypeId: google.maps.MapTypeId.HYBRID,
zoom: 16
});
var contentString = '<img src="images/sigla.png" style="width:20px; height:20px;
vertical-align: middle; display: '+
'inline-block; margin-right:5px;"><h style="font-weight:600; vertical-align:
middle; display: inline-block;">I.F.GRAB</h><br><h>Șeitin, jud.Arad</h>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: myLatLng,
animation: google.maps.Animation.DROP,
map: map,
title: 'Gwindows'
});
infowindow.open(map, marker);
}
Am ales implementarea unui design cât mai minimalist utilizând elemente grafice cât
mai sugestive, dând o notă de eleganță site-ului. Site-ul este full responsive pentru a facilita
navigarea pe orice device și de asemenea acest lucru reprezintă un standard în crearea site-
urilor din ziua de azi.
34
.myButton {
margin-top: 8%;
background-color:transparent;
border:2px solid #000000;
display:inline-block;
cursor:pointer;
color:#000000;
font-family: 'Raleway', sans-serif;
font-weight: bold;
font-size:16px;
padding:8px 30px;
text-decoration:none;
display: inline-block;
transition: background .25s ease-in-out;
-moz-transition: background .25s ease-in-out;
-webkit-transition: background .25s ease-in-out;
}
.myButton:hover {
background-color:black;
color: white;
}
.img2{
width: 100%;
height: 50%;
background-image: url('../images/culoriprofile.JPG');
background-size: cover;
background-repeat: no-repeat;
background-position: 35% 65%;
margin-top: 0px;
margin-bottom: 2%;
}
.stejar {
margin: 20px;
display: inline-block;
width: 190px;
height: 190px;
border:2px solid #fff;
background: url('../images/culori_pvc/stejar.jpg') no-repeat;
-moz-box-shadow: 0px 6px 5px #ccc;
-webkit-box-shadow: 0px 6px 5px #ccc;
box-shadow: 0px 6px 5px #ccc;
-moz-border-radius:190px;
-webkit-border-radius:190px;
border-radius:190px; }
35
Figura 4.2 Element grafic rotund cu umbră și background
Codul de mai sus setează o imagine ca și background pentru div-ul cu clasa img2, și
face ca acel div să fie lat cât pagina și înalt cât jumătate din pagină. Div-ului cu clasa stejar, i
se atribuie de asemenea o imagine ca și background, o bordură rotundă și o umbră rotundă.
.modal {
display: none;
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.modal-content {
text-align: center;
font-family: 'Raleway', sans-serif;
font-size: 25px;
font-weight: 500;
background-color: #fefefe;
margin: 5% auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
height: 70%;
-webkit-animation-name: animatetop;
-webkit-animation-duration: 0.4s;
animation-name: animatetop;
animation-duration: 0.4s
-webkit-box-shadow: 0px 0px 196px 12px rgba(0,0,0,1);
-moz-box-shadow: 0px 0px 196px 12px rgba(0,0,0,1);
box-shadow: 0px 0px 196px 12px rgba(0,0,0,1);
În codul CSS de mai sus, se stabilește designul ferestrei de tip modal. Css-ul aplicat
div-ului cu clasa modal reprezintă background-ul modalului, acesta este 100% din pagină și
are culoarea de negru semitransparent. Codul aplicat div-ului cu clasa modal-content
36
reprezintă fereastra de modal, având lățimea de 80% și înălțimea de 70%, aceasta are aplicată
și o umbră.
.trash {
cursor: pointer;
position: relative;
width: 50px;
}
.can, .lid {
background: url('../images/trashcan.png') 0 0 no-repeat;
position: absolute;
width: 50px;
height: 13px;
}
.can{
height: 43px;
width: 40.5px;
background-position: -5px -9px;
margin-top: 10px;
margin-left: 5px;
}
.lid{
-webkit-transform-origin: 0% 100%;
-o-transform-origin: 0% 100%;
-moz-transform-origin: 0% 100%;
.fa-trash-o:hover{
cursor: pointer;
}
Cu ajutorul codului CSS de mai sus am creat un coș de gunoi care atunci când duci
cursorul pe acesta, coșul de gunoi se deschide , respectiv când nu există cursorul pe div-ul
coșului de gunoi acesta rămâne închis. Acest lucru s-a putut realiza împărțind imagine coșului
de gunoi în două div-uri separate, cu proprietatea atunci când se duce cursorul peste acesta
div-ul care conține capacul coșului se rotește la 45 de grade la stânga.
37
Figura 4.3 Coș de gunoi animat
Pentru a realiza un site web cu proprietăți adaptive, trebuie sa folosim media query in
CSS. În codul de mai sus am specificat că, atunci când lățimea dispozitivului este sub 800 de
pixeli se aplică anumite stiluri CSS stabilite.
În codul de mai jos acele stiluri CSS se aplică doar atunci când lățimea minimă a
dispozitivului este 768 de px, lățimea maxima de 1024 px, iar orientarea dispozitivului este în
portret. Aceste condiții media query sunt specifice pentru tablete.
38
5. CONCLUZII ŞI CONTRIBUŢII
39
BIBLIOGRAFIE
[1] Dezvoltarea aplicațiilor WEB – Suport de curs Gabor Andrei: Arad 2016
Facultatea de Științe Economice, Informatică și Inginerie
[2] http://www.w3schools.com/ - Consultat în data de 20.04.2016
[3] http://www.inmotionhosting.com/support/edu/website-design/using-css/linking-
your-css-to-your-website - Consultat în data de 02.05.2016
[4] http://www.javatpoint.com/javascript-form-validation - Consultat în data de
05.05.2016
[5] Mark Pilgrim – “Dive into HTML 5”
[6] Jon Duckett – “HTML and CSS: Design and build websites”
[7] https://ro.wikipedia.org/wiki/Cascading_Style_Sheets - Consultat în data de
27.03.2016
[8] https://ro.wikipedia.org/wiki/HyperText_Markup_Language - COnsultat în data de
27.03.2016
[9] Tehnologii WEB - Suport de curs Conf.dr. Antoanela Naaji: Arad 2015
[10] https://api.jquery.com – Consultat în data de 01.05.2016
40