SlideShare uma empresa Scribd logo
1 de 13
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.

Mais conteúdo relacionado

Semelhante a The HTML select tag styling challenge

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
 
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
 

Semelhante a 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
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

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.

Notas do Editor

  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