Article Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
റെസ്പോൺസീവ് ഡിസൈനിന്റെ അടുത്ത തലമായ സിഎസ്എസ് കണ്ടെയ്നർ ക്വറികൾ പരിചയപ്പെടാം. വ്യൂപോർട്ടിന്റെ വലുപ്പം മാത്രമല്ല, കണ്ടെയ്നറിന്റെ വലുപ്പം അനുസരിച്ച് ഘടകങ്ങൾ നിർമ്മിക്കാൻ പഠിക്കുക.
ഒരു ദശാബ്ദത്തിലേറെയായി വെബ് ഡെവലപ്മെന്റിന്റെ ഒരു അടിസ്ഥാന ശിലയാണ് റെസ്പോൺസീവ് ഡിസൈൻ. പരമ്പരാഗതമായി, വ്യൂപോർട്ടിന്റെ വലുപ്പത്തിനനുസരിച്ച് നമ്മുടെ ലേഔട്ടുകൾ ക്രമീകരിക്കുന്നതിന് നമ്മൾ മീഡിയ ക്വറികളെയാണ് ആശ്രയിച്ചിരുന്നത്. എന്നിരുന്നാലും, ഈ സമീപനം ചിലപ്പോൾ പരിമിതികൾ ഉള്ളതായി തോന്നാം, പ്രത്യേകിച്ച് സങ്കീർണ്ണവും കമ്പോണന്റ് അധിഷ്ഠിതവുമായ ഡിസൈനുകളിൽ. ഇവിടെയാണ് സിഎസ്എസ് കണ്ടെയ്നർ ക്വറികൾ വരുന്നത് – ഇത് വ്യൂപോർട്ടിന്റെ വലുപ്പം മാത്രമല്ല, കമ്പോണന്റുകളുടെ കണ്ടെയ്നർ എലമെന്റിന്റെ വലുപ്പത്തിനനുസരിച്ച് അവയെ പൊരുത്തപ്പെടുത്താൻ അനുവദിക്കുന്ന ശക്തമായ ഒരു പുതിയ ഫീച്ചറാണ്.
കണ്ടെയ്നർ ക്വറികൾ ഒരു ഗെയിം ചേഞ്ചറാണ്, കാരണം അവ എലമെന്റ് അധിഷ്ഠിത റെസ്പോൺസീവ് ഡിസൈൻ സാധ്യമാക്കുന്നു. "സ്ക്രീനിന്റെ വലുപ്പം എന്താണ്?" എന്ന് ചോദിക്കുന്നതിനുപകരം, "ഈ കമ്പോണന്റിന് എത്ര സ്ഥലം ലഭ്യമാണ്?" എന്ന് നിങ്ങൾക്ക് ചോദിക്കാൻ കഴിയും. ഇത് യഥാർത്ഥത്തിൽ പുനരുപയോഗിക്കാവുന്നതും പൊരുത്തപ്പെടുത്താവുന്നതുമായ കമ്പോണന്റുകൾ നിർമ്മിക്കുന്നതിനുള്ള വലിയ സാധ്യതകൾ തുറന്നുതരുന്നു.
വിവിധ സന്ദർഭങ്ങളിൽ ദൃശ്യമായേക്കാവുന്ന ഒരു കാർഡ് കമ്പോണന്റിനെക്കുറിച്ച് ചിന്തിക്കുക: ഒരു ഇടുങ്ങിയ സൈഡ്ബാർ, ഒരു വിശാലമായ ഹീറോ വിഭാഗം, അല്ലെങ്കിൽ ഒരു മൾട്ടി-കോളം ഗ്രിഡ്. മീഡിയ ക്വറികൾ ഉപയോഗിച്ച്, വ്യൂപോർട്ടിന്റെ വീതി അനുസരിച്ച് ഈ ഓരോ സാഹചര്യങ്ങൾക്കും നിങ്ങൾ പ്രത്യേക നിയമങ്ങൾ എഴുതേണ്ടിവരും. കണ്ടെയ്നർ ക്വറികൾ ഉപയോഗിച്ച്, മൊത്തത്തിലുള്ള സ്ക്രീൻ വലുപ്പം പരിഗണിക്കാതെ, കാർഡിന് അതിന്റെ പാരന്റ് കണ്ടെയ്നറിന്റെ അളവുകൾക്കനുസരിച്ച് അതിന്റെ ലേഔട്ടും സ്റ്റൈലിംഗും ബുദ്ധിപരമായി ക്രമീകരിക്കാൻ കഴിയും.
കണ്ടെയ്നർ ക്വറികൾ പരമ്പരാഗത മീഡിയ ക്വറികളേക്കാൾ നിരവധി പ്രധാന നേട്ടങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു:
കണ്ടെയ്നർ ക്വറികൾ ഉപയോഗിക്കുന്നതിന്റെ പ്രായോഗിക വശങ്ങളിലേക്ക് കടക്കാം. ആദ്യ പടി ഒരു കണ്ടെയ്നർ പ്രഖ്യാപിക്കുക എന്നതാണ്. പാരന്റ് എലമെന്റിൽ container-type പ്രോപ്പർട്ടി ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് ചെയ്യാൻ കഴിയും:
container-type പ്രോപ്പർട്ടി നിരവധി മൂല്യങ്ങൾ സ്വീകരിക്കുന്നു:
size: കണ്ടെയ്നർ ക്വറികൾ കണ്ടെയ്നറിന്റെ ഇൻലൈൻ, ബ്ലോക്ക് അളവുകളോട് പ്രതികരിക്കും.inline-size: കണ്ടെയ്നർ ക്വറികൾ കണ്ടെയ്നറിന്റെ ഇൻലൈൻ (തിരശ്ചീനമായ എഴുത്ത് രീതികളിൽ വീതി) അളവിനോട് മാത്രം പ്രതികരിക്കും. ഇതാണ് ഏറ്റവും സാധാരണവും പലപ്പോഴും ഏറ്റവും ഉപയോഗപ്രദവുമായ ഓപ്ഷൻ.block-size: കണ്ടെയ്നർ ക്വറികൾ കണ്ടെയ്നറിന്റെ ബ്ലോക്ക് (തിരശ്ചീനമായ എഴുത്ത് രീതികളിൽ ഉയരം) അളവിനോട് മാത്രം പ്രതികരിക്കും.normal: എലമെന്റ് ഒരു ക്വറി കണ്ടെയ്നർ അല്ല. ഇതാണ് ഡിഫോൾട്ട് മൂല്യം.style: കണ്ടെയ്നർ ക്വറികൾ സ്റ്റൈൽ ക്വറികളോടും കണ്ടെയ്നർ നെയിം ക്വറികളോടും (പിന്നീട് വിശദീകരിക്കും) പ്രതികരിക്കും, ഇത് കണ്ടെയ്നറിൽ സജ്ജീകരിച്ചിട്ടുള്ള കസ്റ്റം പ്രോപ്പർട്ടികളെ ക്വറി ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു.അതിന്റെ ഇൻലൈൻ വലുപ്പത്തോട് പ്രതികരിക്കുന്ന ഒരു കണ്ടെയ്നർ നിർവചിക്കുന്നതിനുള്ള ഒരു ഉദാഹരണം ഇതാ:
.card-container {
container-type: inline-size;
}
container-type, container-name (ഇതിനെക്കുറിച്ച് നമ്മൾ പിന്നീട് ചർച്ച ചെയ്യും) എന്നിവ ഒരൊറ്റ ഡിക്ലറേഷനിൽ വ്യക്തമാക്കാൻ നിങ്ങൾക്ക് ഷോർട്ട്ഹാൻഡ് container പ്രോപ്പർട്ടിയും ഉപയോഗിക്കാം:
.card-container {
container: card / inline-size;
}
ഈ സാഹചര്യത്തിൽ, 'card' എന്നതാണ് കണ്ടെയ്നറിന്റെ പേര്.
നിങ്ങൾ ഒരു കണ്ടെയ്നർ നിർവചിച്ചുകഴിഞ്ഞാൽ, നിങ്ങളുടെ ക്വറികൾ എഴുതാൻ @container അറ്റ്-റൂൾ ഉപയോഗിക്കാം. ഇതിന്റെ വാക്യഘടന മീഡിയ ക്വറികൾക്ക് സമാനമാണ്, പക്ഷേ വ്യൂപോർട്ട് അളവുകളെ ലക്ഷ്യമിടുന്നതിനുപകരം, നിങ്ങൾ കണ്ടെയ്നറിന്റെ അളവുകളെയാണ് ലക്ഷ്യമിടുന്നത്:
@container card (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
ഈ ഉദാഹരണത്തിൽ, കണ്ടെയ്നറിന്റെ വീതി കുറഞ്ഞത് 400px ആകുമ്പോൾ നമ്മൾ "card" കണ്ടെയ്നറിനെ ലക്ഷ്യമിടുകയും .card, .card__image, .card__content എലമെന്റുകളിൽ സ്റ്റൈലുകൾ പ്രയോഗിക്കുകയും ചെയ്യുന്നു. (min-width: 400px) എന്നതിന് മുമ്പുള്ള `card` ശ്രദ്ധിക്കുക. നിങ്ങൾ `container-name` അല്ലെങ്കിൽ ഷോർട്ട്ഹാൻഡ് `container` പ്രോപ്പർട്ടി ഉപയോഗിച്ച് നിങ്ങളുടെ കണ്ടെയ്നറിന് പേര് നൽകുമ്പോൾ ഇത് നിർണായകമാണ്.
നിങ്ങൾ കണ്ടെയ്നറിന് പേര് നൽകിയിട്ടില്ലെങ്കിൽ, നിങ്ങൾക്ക് കണ്ടെയ്നറിന്റെ പേര് ഒഴിവാക്കാം:
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
മീഡിയ ക്വറികളിൽ ലഭ്യമായ min-width, max-width, min-height, max-height, ഓറിയന്റേഷൻ തുടങ്ങിയ മീഡിയ ഫീച്ചറുകളുടെ അതേ ശ്രേണി നിങ്ങൾക്ക് ഉപയോഗിക്കാം.
നിങ്ങളുടെ കണ്ടെയ്നറുകൾക്ക് പേര് നൽകുന്നത് സഹായകമാകും, പ്രത്യേകിച്ച് നെസ്റ്റഡ് കണ്ടെയ്നറുകളോ സങ്കീർണ്ണമായ ലേഔട്ടുകളോ കൈകാര്യം ചെയ്യുമ്പോൾ. container-name പ്രോപ്പർട്ടി ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു കണ്ടെയ്നറിന് പേര് നൽകാം:
.card-container {
container-name: card;
container-type: inline-size;
}
അതിനുശേഷം, നിങ്ങളുടെ കണ്ടെയ്നർ ക്വറികളിൽ, കണ്ടെയ്നറിനെ അതിന്റെ പേര് ഉപയോഗിച്ച് ടാർഗെറ്റുചെയ്യാനാകും:
@container card (min-width: 400px) {
/* Styles for the 'card' container */
}
കണ്ടെയ്നർ സ്റ്റൈൽ ക്വറികൾ നിങ്ങളുടെ കണ്ടെയ്നറിന്റെ വലുപ്പത്തേക്കാൾ അതിന്റെ സ്റ്റൈലിനോട് പ്രതികരിക്കാൻ അനുവദിക്കുന്നു. കസ്റ്റം പ്രോപ്പർട്ടികളുമായി സംയോജിപ്പിക്കുമ്പോൾ ഇത് വളരെ ശക്തമാണ്. ആദ്യം, നിങ്ങൾ container-type: style ഉപയോഗിച്ച് നിങ്ങളുടെ കണ്ടെയ്നർ നിർവചിക്കണം:
.component-container {
container-type: style;
}
അതിനുശേഷം --theme എന്ന കസ്റ്റം പ്രോപ്പർട്ടിയുടെ മൂല്യം ക്വറി ചെയ്യാൻ നിങ്ങൾക്ക് @container style(--theme: dark) ഉപയോഗിക്കാം:
.component-container {
--theme: light;
}
@container style(--theme: dark) {
.component {
background-color: black;
color: white;
}
}
വ്യൂപോർട്ട് വലുപ്പത്തിന് പകരം സിഎസ്എസ് വഴി സജ്ജീകരിച്ച കോൺഫിഗറേഷനെ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ കമ്പോണന്റുകൾക്ക് പൊരുത്തപ്പെടാൻ ഇത് അനുവദിക്കുന്നു. ഇത് തീമിംഗിനും ഡൈനാമിക് സ്റ്റൈലിംഗിനും മികച്ച സാധ്യതകൾ തുറക്കുന്നു.
യഥാർത്ഥ സാഹചര്യങ്ങളിൽ കണ്ടെയ്നർ ക്വറികൾ എങ്ങനെ ഉപയോഗിക്കാമെന്നതിന്റെ ചില വ്യക്തമായ ഉദാഹരണങ്ങൾ നോക്കാം:
ഒരു ഉൽപ്പന്നത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ പ്രദർശിപ്പിക്കുന്ന ഒരു കാർഡ് കമ്പോണന്റ് സങ്കൽപ്പിക്കുക. ഒരു ഇടുങ്ങിയ കണ്ടെയ്നറിൽ, ചിത്രവും ഉള്ളടക്കവും ലംബമായി അടുക്കാൻ നമ്മൾ ആഗ്രഹിച്ചേക്കാം. ഒരു വിശാലമായ കണ്ടെയ്നറിൽ, നമുക്ക് അവയെ পাশাপাশি പ്രദർശിപ്പിക്കാൻ കഴിയും.
എച്ച്ടിഎംഎൽ:
സിഎസ്എസ്:
.card-container {
container-type: inline-size;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 16px;
}
.card__image {
width: 100%;
margin-bottom: 16px;
}
.card__content {
width: 100%;
}
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
margin-bottom: 0;
}
.card__content {
width: 50%;
}
}
ഈ ഉദാഹരണത്തിൽ, കാർഡ് തുടക്കത്തിൽ ചിത്രവും ഉള്ളടക്കവും ലംബമായി അടുക്കി പ്രദർശിപ്പിക്കും. കണ്ടെയ്നറിന്റെ വീതി 400px എത്തുമ്പോൾ, കാർഡ് ഒരു തിരശ്ചീന ലേഔട്ടിലേക്ക് മാറും.
ലഭ്യമായ സ്ഥലത്തിനനുസരിച്ച് പൊരുത്തപ്പെടേണ്ട ഒരു നാവിഗേഷൻ മെനു പരിഗണിക്കുക. ഒരു ഇടുങ്ങിയ കണ്ടെയ്നറിൽ (ഉദാഹരണത്തിന്, ഒരു മൊബൈൽ സൈഡ്ബാർ), മെനു ഇനങ്ങൾ ഒരു ലംബമായ ലിസ്റ്റിൽ പ്രദർശിപ്പിക്കാൻ നമ്മൾ ആഗ്രഹിച്ചേക്കാം. ഒരു വിശാലമായ കണ്ടെയ്നറിൽ (ഉദാഹരണത്തിന്, ഒരു ഡെസ്ക്ടോപ്പ് ഹെഡർ), നമുക്ക് അവയെ തിരശ്ചീനമായി പ്രദർശിപ്പിക്കാൻ കഴിയും.
എച്ച്ടിഎംഎൽ:
സിഎസ്എസ്:
.nav-container {
container-type: inline-size;
}
.nav {
list-style: none;
padding: 0;
margin: 0;
}
.nav__item {
margin-bottom: 8px;
}
.nav__item a {
display: block;
padding: 8px 16px;
text-decoration: none;
color: #333;
}
@container (min-width: 600px) {
.nav {
display: flex;
}
.nav__item {
margin-right: 16px;
margin-bottom: 0;
}
.nav__item a {
display: inline-block;
}
}
ഈ ഉദാഹരണത്തിൽ, നാവിഗേഷൻ മെനു തുടക്കത്തിൽ ഇനങ്ങൾ ഒരു ലംബമായ ലിസ്റ്റിൽ പ്രദർശിപ്പിക്കും. കണ്ടെയ്നറിന്റെ വീതി 600px എത്തുമ്പോൾ, മെനു ഒരു തിരശ്ചീന ലേഔട്ടിലേക്ക് മാറും.
ഒരു ലേഖനത്തിന്റെ ലേഔട്ട് അത് എവിടെ സ്ഥാപിച്ചിരിക്കുന്നു എന്നതിനെ ആശ്രയിച്ച് പൊരുത്തപ്പെടേണ്ടതുണ്ടെന്ന് സങ്കൽപ്പിക്കുക. ഒരു ചെറിയ പ്രിവ്യൂ വിഭാഗത്തിലാണെങ്കിൽ, ചിത്രം ടെക്സ്റ്റിന് മുകളിലായിരിക്കണം. അത് പ്രധാന ലേഖനമാണെങ്കിൽ, ചിത്രം വശത്തായിരിക്കാം.
എച്ച്ടിഎംഎൽ
Article Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
സിഎസ്എസ്
.article-container {
container-type: inline-size;
}
.article {
display: flex;
flex-direction: column;
}
.article-image {
width: 100%;
margin-bottom: 10px;
}
.article-content {
width: 100%;
}
@container (min-width: 768px) {
.article {
flex-direction: row;
}
.article-image {
width: 40%;
margin-right: 20px;
margin-bottom: 0;
}
.article-content {
width: 60%;
}
}
ക്രോം, ഫയർഫോക്സ്, സഫാരി, എഡ്ജ് എന്നിവയുൾപ്പെടെയുള്ള ആധുനിക ബ്രൗസറുകളിലുടനീളം കണ്ടെയ്നർ ക്വറികൾക്കുള്ള ബ്രൗസർ പിന്തുണ ഇപ്പോൾ മികച്ചതാണ്. ഫീച്ചറുകളും നടപ്പാക്കൽ വിശദാംശങ്ങളും വികസിക്കാനിടയുള്ളതിനാൽ, ഏറ്റവും പുതിയ ബ്രൗസർ പിന്തുണ വിവരങ്ങൾക്കായി Can I Use പരിശോധിക്കേണ്ടത് പ്രധാനമാണ്.
കണ്ടെയ്നർ ക്വറികൾ മീഡിയ ക്വറികൾക്ക് ശക്തമായ ഒരു ബദൽ വാഗ്ദാനം ചെയ്യുന്നുണ്ടെങ്കിലും, ഓരോ സമീപനവും എപ്പോഴാണ് ഏറ്റവും ഉചിതമെന്ന് മനസ്സിലാക്കേണ്ടത് പ്രധാനമാണ്.
പല സാഹചര്യങ്ങളിലും, നിങ്ങൾ മീഡിയ ക്വറികളുടെയും കണ്ടെയ്നർ ക്വറികളുടെയും ഒരു സംയോജനം ഉപയോഗിക്കാൻ സാധ്യതയുണ്ട്. നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ മൊത്തത്തിലുള്ള ലേഔട്ട് സ്ഥാപിക്കാൻ മീഡിയ ക്വറികൾ ഉപയോഗിക്കുക, തുടർന്ന് ആ ലേഔട്ടിനുള്ളിലെ ഓരോ കമ്പോണന്റുകളുടെയും രൂപവും പെരുമാറ്റവും മികച്ചതാക്കാൻ കണ്ടെയ്നർ ക്വറികൾ ഉപയോഗിക്കുക.
സിഎസ്എസ് കണ്ടെയ്നർ ക്വറികൾ റെസ്പോൺസീവ് ഡിസൈനിന്റെ പരിണാമത്തിലെ ഒരു സുപ്രധാന മുന്നേറ്റത്തെ പ്രതിനിധീകരിക്കുന്നു. എലമെന്റ് അധിഷ്ഠിത റെസ്പോൺസീവ്നെസ്സ് സാധ്യമാക്കുന്നതിലൂടെ, കൂടുതൽ വഴക്കമുള്ളതും പുനരുപയോഗിക്കാവുന്നതും പരിപാലിക്കാൻ എളുപ്പമുള്ളതുമായ കമ്പോണന്റുകൾ നിർമ്മിക്കാൻ അവ ഡെവലപ്പർമാരെ പ്രാപ്തരാക്കുന്നു. ബ്രൗസർ പിന്തുണ മെച്ചപ്പെട്ടുകൊണ്ടിരിക്കുന്നതിനാൽ, എല്ലാ വെബ് ഡെവലപ്പർമാരുടെയും ആയുധപ്പുരയിലെ ഒരു പ്രധാന ഉപകരണമായി കണ്ടെയ്നർ ക്വറികൾ മാറാൻ തയ്യാറെടുക്കുകയാണ്.
ഒരു ആഗോള പ്രേക്ഷകർക്കായി കണ്ടെയ്നർ ക്വറികൾ നടപ്പിലാക്കുമ്പോൾ, ഇനിപ്പറയുന്നവ പരിഗണിക്കുക:
left, right പോലുള്ള ഫിസിക്കൽ പ്രോപ്പർട്ടികൾക്ക് പകരം inline-start, inline-end പോലുള്ള ലോജിക്കൽ പ്രോപ്പർട്ടികൾ ഉപയോഗിക്കുക.em, rem) ഉപയോഗിക്കുക.യഥാർത്ഥത്തിൽ റെസ്പോൺസീവും പൊരുത്തപ്പെടുത്താവുന്നതുമായ വെബ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിനുള്ള ശക്തമായ ഒരു ഉപകരണമാണ് സിഎസ്എസ് കണ്ടെയ്നർ ക്വറികൾ. എലമെന്റ് അധിഷ്ഠിത റെസ്പോൺസീവ് ഡിസൈൻ സ്വീകരിക്കുന്നതിലൂടെ, നിങ്ങൾക്ക് വിവിധ സന്ദർഭങ്ങളുമായി പരിധികളില്ലാതെ പൊരുത്തപ്പെടുന്ന കമ്പോണന്റുകൾ നിർമ്മിക്കാനും നിങ്ങളുടെ കോഡ് ലളിതമാക്കാനും മൊത്തത്തിലുള്ള ഉപയോക്തൃ അനുഭവം മെച്ചപ്പെടുത്താനും കഴിയും. ബ്രൗസർ പിന്തുണ വർദ്ധിച്ചുകൊണ്ടിരിക്കുന്നതിനാൽ, ആധുനിക വെബ് ഡെവലപ്മെന്റിന്റെ ഒരു അടിസ്ഥാന ഭാഗമായി കണ്ടെയ്നർ ക്വറികൾ മാറാൻ തയ്യാറെടുക്കുകയാണ്. ഈ സാങ്കേതികവിദ്യ സ്വീകരിക്കുക, അതിന്റെ കഴിവുകൾ പരീക്ഷിക്കുക, നിങ്ങളുടെ റെസ്പോൺസീവ് ഡിസൈനുകളിൽ ഒരു പുതിയ തലത്തിലുള്ള വഴക്കം അൺലോക്ക് ചെയ്യുക. ഈ സമീപനം മികച്ച കമ്പോണന്റ് പുനരുപയോഗം, പരിപാലനം, കൂടുതൽ അവബോധജന്യമായ ഡിസൈൻ പ്രക്രിയ എന്നിവ സാധ്യമാക്കുന്നു, ഇത് ലോകമെമ്പാടുമുള്ള ഫ്രണ്ട്-എൻഡ് ഡെവലപ്പർമാർക്ക് ഒരു അമൂല്യമായ ആസ്തിയാക്കി മാറ്റുന്നു. കണ്ടെയ്നർ ക്വറികളിലേക്കുള്ള മാറ്റം ഡിസൈനിനോട് കൂടുതൽ കമ്പോണന്റ് കേന്ദ്രീകൃതമായ ഒരു സമീപനത്തെ പ്രോത്സാഹിപ്പിക്കുന്നു, ഇത് ലോകമെമ്പാടുമുള്ള ഉപയോക്താക്കൾക്ക് കൂടുതൽ കരുത്തുറ്റതും പൊരുത്തപ്പെടുത്താവുന്നതുമായ വെബ് അനുഭവങ്ങൾ നൽകുന്നു.