SlideShare a Scribd company logo
The HTML <select> tag
On styling it and the challenge it presents
The W3C Specification says:

• The <select> element represents a
  control for selecting amongst a set of
  options.
                                                         HTML Code
• Children tags are the options
  represented by the tag <option>


• Attributes: autofocus, disabled, form,
  multiple, name, required, size


• Source: http://www.w3.org/wiki/HTML/
  Elements/select

   - (examples are shown using a Mac Operating System)
Firefox 10 Mac OS                 IE7 Windows XP




Chrome 17 Mac OS                  Firefox 10 Windows XP




                                  Chrome 17 Windows XP


 Raw Style
 This is how the <select> looks
                                  IE8 Windows 7
 like on different browsers and
 Operating Systems with no CSS
 styles applied.

                                  Firefox 10 Windows 7
  Chrome 17 Windows 7
Firefox 10 Mac OS       IE7 Windows XP                       Chrome 17 Windows XP




                                         Firefox 10 Windows XP              Fifefox 10 Windows 7


CSS Styling
Basic styling over the <select>
tag.

Things get messy and
                                         IE8 Windows 7                     Chrome 17 Windows 7
unpredictable

CSS:
Firefox 10 Mac OS   IE7 Windows XP          Chrome 17 Windows XP        Firefox 10 Windows XP




More CSS Styling                     IE8 Windows 7                 Firefox 10 Windows 7




Advanced styling over the
<style> and <option> tags



                                     Chrome 17 Windows 7
Firefox 10 Mac OS




Limitations                        IE7 Windows XP




The <select> arrow can’t be
styled and varies from browser-
to-browser and OS.


                                  Firefox 10 Windows 7
Firefox 10 Mac OS




                                  IE7 Windows XP


Limitations
Unfortunately, the mouse
hovered <option> color can’t be
styled. It is set by the OS.
                                  Chrome 17 Windows 7
Styled <span>

Alternatives                                         sitting on top of
                                                       <select> tag


De-facing

With JavaScript we can hide the
<select> tag and place a <span>
tag on top of it which can be freely
styled.                                                                         Default
                                                                                 HTML
                                                                              scrollbar for
The <option> tags conserve the                                                 <option>
default HTML behavior.                                                            tags




                                       <option> tags conserve HTML behavior
Firefox 10 Mac OS




Alternatives
Replace <option> tags.

With JavaScript we can replace
each <option> tag for another
                                                IE 7 Windows XP
HTML tag that allows proper
styling.

Source:
http://jquery-ui.googlecode.com/svn/branches/
labs/selectmenu/index.html
De-facing




                            <option>
                         replacement to
                                                                            Custom
A very styled            control hovered
                           style color
                                                                           scroll-bar
                                                                         replacement
<select> menu
De-facing

<option> replacement

Scroll-bar replacement



                                           Semi-transparent background
The price of the alternatives (technical & long)

• All the JavaScript alternatives put work-load on the browser.

• JavaScript works with the code delivered from BackEnd: <select> and <option> tags.

  De-facing:                                       <option> replacement:

• Each <select> tag is hidden.                   • Each <select> tag is replaced with
                                                   1 <a> tag and 2 <span> tags.
• A <span> tag is introduced.
                                                 • 5 JS events are attached to the
• Both get wrapped in a <div>                      <a> tag.
  element.
                                                 • Each <option> tag is replaced
  Scroll-bar replacement:                          with a <li> & <a> tag and wrapped
                                                   in a <ul> tag.
• 4 <div> elements created to mock
  a styled scroll-bar.                           • 6 JS events are attached to each
                                                   <li> tag to emulate the HTML
• 4 JS events are attached to each                 behavior of the <select> &
  <select> menu.                                   <option> tags.
A test case - www.moneygram.com
• There are 5 <select> tags and 569 <option> tags on page-load.

• Some <select> tags get populated by AJAX calls after page-load, increasing the number of
  <option> tags.


  Costs for the browser:

• 594 HTML tag replacements.

• 3.459 JavaScript event attachments.

• Each time an AJAX call is made, new <option> tags come - HTML tag
  replacements and event attachments must be made on-the-spot.

• Our tests show that this process alone consumes 23% of the browsers available
  memory against 2% for the un-styled HTML approach.

• This is 11.5 times as intensive. Too much!
Analysis

• The a site like www.moneygram.com has too many <option> tags (500+)
  because most of them are part of a country selection list with 180+ countries.


• We don’t recommend using the <option> JavaScript replacement option as it
  consumes almost 1/4 of the browser’s memory.


• Users are already familiar with the default HTML behavior for <select> menus
  on different browsers and Operating Systems.


• The de-facing alternative offers a good styling option for the un-dropped
  <select> menu and it’s not so intensive for the browser.

More Related Content

Similar to The HTML select tag styling challenge

Html5/CSS3
Html5/CSS3Html5/CSS3
Html5/CSS3
Simratpreet Singh
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
Brian Moon
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)
Mark Leusink
 
What's New for AJAX Developers in IE8 Beta1?
What's New for AJAX Developers in IE8 Beta1?What's New for AJAX Developers in IE8 Beta1?
What's New for AJAX Developers in IE8 Beta1?
Janakiram MSV
 
Push it to the Edge
Push it to the EdgePush it to the Edge
Push it to the Edge
Robin-Manuel Thiel
 
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
camp_drupal_ua
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
Nathan Smith
 
Html.ppt
Html.pptHtml.ppt
Html.ppt
Sunil Thakur
 
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Frédéric Harper
 
Flyweight jquery select_presentation
Flyweight jquery select_presentationFlyweight jquery select_presentation
Flyweight jquery select_presentation
Ray Brooks
 
DevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefits
DevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefitsDevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefits
DevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefits
Frédéric Harper
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks Trivia
Cognizant
 
Jsf2 html5-jazoon
Jsf2 html5-jazoonJsf2 html5-jazoon
Jsf2 html5-jazoon
Roger Kitain
 
Edge of the Web
Edge of the WebEdge of the Web
Edge of the Web
Todd Anglin
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8
David Chou
 
Developing web applications in 2010
Developing web applications in 2010Developing web applications in 2010
Developing web applications in 2010
Ignacio Coloma
 
Lit there be light
Lit there be lightLit there be light
Lit there be light
Ilya Gorenburg
 
Modern Web Development
Modern Web DevelopmentModern Web Development
Modern Web Development
Robert Nyman
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
Yakov Fain
 
SPSTC - SharePoint & jQuery Essentials
SPSTC - SharePoint & jQuery EssentialsSPSTC - SharePoint & jQuery Essentials
SPSTC - SharePoint & jQuery Essentials
Mark Rackley
 

Similar to The HTML select tag styling challenge (20)

Html5/CSS3
Html5/CSS3Html5/CSS3
Html5/CSS3
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)
 
What's New for AJAX Developers in IE8 Beta1?
What's New for AJAX Developers in IE8 Beta1?What's New for AJAX Developers in IE8 Beta1?
What's New for AJAX Developers in IE8 Beta1?
 
Push it to the Edge
Push it to the EdgePush it to the Edge
Push it to the Edge
 
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
Html.ppt
Html.pptHtml.ppt
Html.ppt
 
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
 
Flyweight jquery select_presentation
Flyweight jquery select_presentationFlyweight jquery select_presentation
Flyweight jquery select_presentation
 
DevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefits
DevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefitsDevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefits
DevTeach Montreal - 2012-12-11 - Windows 8 & HTML5: friends with benefits
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks Trivia
 
Jsf2 html5-jazoon
Jsf2 html5-jazoonJsf2 html5-jazoon
Jsf2 html5-jazoon
 
Edge of the Web
Edge of the WebEdge of the Web
Edge of the Web
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8
 
Developing web applications in 2010
Developing web applications in 2010Developing web applications in 2010
Developing web applications in 2010
 
Lit there be light
Lit there be lightLit there be light
Lit there be light
 
Modern Web Development
Modern Web DevelopmentModern Web Development
Modern Web Development
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
 
SPSTC - SharePoint & jQuery Essentials
SPSTC - SharePoint & jQuery EssentialsSPSTC - SharePoint & jQuery Essentials
SPSTC - SharePoint & jQuery Essentials
 

Recently uploaded

Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 

Recently uploaded (20)

Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 

The HTML select tag styling challenge

  • 1. The HTML <select> tag On styling it and the challenge it presents
  • 2. The W3C Specification says: • The <select> element represents a control for selecting amongst a set of options. HTML Code • Children tags are the options represented by the tag <option> • Attributes: autofocus, disabled, form, multiple, name, required, size • Source: http://www.w3.org/wiki/HTML/ Elements/select - (examples are shown using a Mac Operating System)
  • 3. Firefox 10 Mac OS IE7 Windows XP Chrome 17 Mac OS Firefox 10 Windows XP Chrome 17 Windows XP Raw Style This is how the <select> looks IE8 Windows 7 like on different browsers and Operating Systems with no CSS styles applied. Firefox 10 Windows 7 Chrome 17 Windows 7
  • 4. Firefox 10 Mac OS IE7 Windows XP Chrome 17 Windows XP Firefox 10 Windows XP Fifefox 10 Windows 7 CSS Styling Basic styling over the <select> tag. Things get messy and IE8 Windows 7 Chrome 17 Windows 7 unpredictable CSS:
  • 5. Firefox 10 Mac OS IE7 Windows XP Chrome 17 Windows XP Firefox 10 Windows XP More CSS Styling IE8 Windows 7 Firefox 10 Windows 7 Advanced styling over the <style> and <option> tags Chrome 17 Windows 7
  • 6. Firefox 10 Mac OS Limitations IE7 Windows XP The <select> arrow can’t be styled and varies from browser- to-browser and OS. Firefox 10 Windows 7
  • 7. Firefox 10 Mac OS IE7 Windows XP Limitations Unfortunately, the mouse hovered <option> color can’t be styled. It is set by the OS. Chrome 17 Windows 7
  • 8. Styled <span> Alternatives sitting on top of <select> tag De-facing With JavaScript we can hide the <select> tag and place a <span> tag on top of it which can be freely styled. Default HTML scrollbar for The <option> tags conserve the <option> default HTML behavior. tags <option> tags conserve HTML behavior
  • 9. Firefox 10 Mac OS Alternatives Replace <option> tags. With JavaScript we can replace each <option> tag for another IE 7 Windows XP HTML tag that allows proper styling. Source: http://jquery-ui.googlecode.com/svn/branches/ labs/selectmenu/index.html
  • 10. De-facing <option> replacement to Custom A very styled control hovered style color scroll-bar replacement <select> menu De-facing <option> replacement Scroll-bar replacement Semi-transparent background
  • 11. The price of the alternatives (technical & long) • All the JavaScript alternatives put work-load on the browser. • JavaScript works with the code delivered from BackEnd: <select> and <option> tags. De-facing: <option> replacement: • Each <select> tag is hidden. • Each <select> tag is replaced with 1 <a> tag and 2 <span> tags. • A <span> tag is introduced. • 5 JS events are attached to the • Both get wrapped in a <div> <a> tag. element. • Each <option> tag is replaced Scroll-bar replacement: with a <li> & <a> tag and wrapped in a <ul> tag. • 4 <div> elements created to mock a styled scroll-bar. • 6 JS events are attached to each <li> tag to emulate the HTML • 4 JS events are attached to each behavior of the <select> & <select> menu. <option> tags.
  • 12. A test case - www.moneygram.com • There are 5 <select> tags and 569 <option> tags on page-load. • Some <select> tags get populated by AJAX calls after page-load, increasing the number of <option> tags. Costs for the browser: • 594 HTML tag replacements. • 3.459 JavaScript event attachments. • Each time an AJAX call is made, new <option> tags come - HTML tag replacements and event attachments must be made on-the-spot. • Our tests show that this process alone consumes 23% of the browsers available memory against 2% for the un-styled HTML approach. • This is 11.5 times as intensive. Too much!
  • 13. Analysis • The a site like www.moneygram.com has too many <option> tags (500+) because most of them are part of a country selection list with 180+ countries. • We don’t recommend using the <option> JavaScript replacement option as it consumes almost 1/4 of the browser’s memory. • Users are already familiar with the default HTML behavior for <select> menus on different browsers and Operating Systems. • The de-facing alternative offers a good styling option for the un-dropped <select> menu and it’s not so intensive for the browser.

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n